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 +1 @@
1
- {"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/soba/misc/src/animations/animations.ts","../../../../libs/soba/misc/src/bake-shadows/bake-shadows.ts","../../../../libs/soba/misc/src/fbo/fbo.ts","../../../../libs/soba/misc/src/caustics/caustics.ts","../../../../libs/soba/misc/src/decal/decal.ts","../../../../libs/soba/misc/src/depth-buffer/depth-buffer.ts","../../../../libs/soba/misc/src/example/example.ts","../../../../libs/soba/misc/src/html/html-wrapper.ts","../../../../libs/soba/misc/src/html/html.ts","../../../../libs/soba/misc/src/sampler/sampler.ts","../../../../libs/soba/misc/src/shadow/shadow.ts","../../../../libs/soba/misc/src/stats-gl/stats-gl.ts","../../../../libs/soba/misc/src/trail-texture/trail-texture.ts","../../../../libs/soba/misc/src/trail-texture/inject-trail-texture.ts","../../../../libs/soba/misc/src/trail/trail.ts","../../../../libs/soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { Injector, computed, effect, runInInjectionContext } from '@angular/core';\nimport { assertInjectionContext, injectBeforeRender, injectNgtRef, type NgtRef } from 'angular-three';\nimport * as THREE from 'three';\n\nexport function injectNgtsAnimations(\n\tanimationsFactory: () => THREE.AnimationClip[],\n\t{\n\t\tref,\n\t\tinjector,\n\t\tplayFirstClip = true,\n\t}: { ref?: NgtRef<THREE.Object3D>; playFirstClip?: boolean; injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsAnimations, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tlet actualRef = injectNgtRef<THREE.Object3D>();\n\n\t\tif (ref) {\n\t\t\tif (ref instanceof THREE.Object3D) {\n\t\t\t\tactualRef.nativeElement = ref;\n\t\t\t} else {\n\t\t\t\tactualRef = ref;\n\t\t\t}\n\t\t}\n\n\t\tconst mixer = new THREE.AnimationMixer(null!);\n\t\tconst actions = {} as Record<string, THREE.AnimationAction>;\n\t\tlet cached = {} as Record<string, THREE.AnimationAction>;\n\t\tlet object: THREE.Object3D | null = null;\n\n\t\tconst clips = [] as THREE.AnimationClip[];\n\t\tconst names = [] as string[];\n\n\t\tinjectBeforeRender(({ delta }) => mixer.update(delta));\n\n\t\tconst ready = computed(() => !!actualRef.nativeElement && !!animationsFactory().length);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst actual = actualRef.nativeElement;\n\t\t\tif (!actual) return;\n\t\t\tobject = actual;\n\t\t\tconst animations = animationsFactory();\n\n\t\t\tfor (let i = 0; i < animations.length; i++) {\n\t\t\t\tconst clip = animations[i];\n\n\t\t\t\tnames.push(clip.name);\n\t\t\t\tclips.push(clip);\n\n\t\t\t\tObject.defineProperty(actions, clip.name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: () => {\n\t\t\t\t\t\treturn cached[clip.name] || (cached[clip.name] = mixer.clipAction(clip, actual));\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tif (i === 0 && playFirstClip) {\n\t\t\t\t\tactions[clip.name].play();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonCleanup(() => {\n\t\t\t\t// clear cached\n\t\t\t\tcached = {};\n\t\t\t\t// stop all actions\n\t\t\t\tmixer.stopAllAction();\n\t\t\t\t// uncache actions\n\t\t\t\tObject.values(actions).forEach((action) => {\n\t\t\t\t\tmixer.uncacheAction(action as unknown as THREE.AnimationClip, object!);\n\t\t\t\t});\n\n\t\t\t\tobject = null;\n\t\t\t});\n\t\t});\n\n\t\treturn { ref: actualRef, actions, mixer, names, clips, ready };\n\t});\n}\n","import { Directive, effect } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-bake-shadows', standalone: true })\nexport class NgtsBakeShadows {\n\tconstructor() {\n\t\tconst store = injectNgtStore();\n\t\tconst glShadowMap = store.select('gl', 'shadowMap');\n\t\teffect((onCleanup) => {\n\t\t\tconst shadowMap = glShadowMap();\n\t\t\tshadowMap.autoUpdate = false;\n\t\t\tshadowMap.needsUpdate = true;\n\t\t\tonCleanup(() => {\n\t\t\t\tshadowMap.autoUpdate = shadowMap.needsUpdate = true;\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tDestroyRef,\n\tcomputed,\n\teffect,\n\tinject,\n\trunInInjectionContext,\n\ttype Injector,\n} from '@angular/core';\nimport { assertInjectionContext, injectNgtRef, injectNgtStore, safeDetectChanges } from 'angular-three';\nimport * as THREE from 'three';\n\ninterface FBOSettings extends THREE.WebGLRenderTargetOptions {\n\t/** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n\tsamples?: number;\n\t/** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n\tdepth?: boolean;\n}\n\nexport interface NgtsFBOParams {\n\twidth?: number | FBOSettings;\n\theight?: number;\n\tsettings?: FBOSettings;\n}\n\nexport function injectNgtsFBO(fboParams: () => NgtsFBOParams, { injector }: { injector?: Injector } = {}) {\n\tinjector = assertInjectionContext(injectNgtsFBO, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst store = injectNgtStore();\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst targetRef = injectNgtRef<THREE.WebGLRenderTarget | null>(null);\n\n\t\tinject(DestroyRef).onDestroy(() => targetRef.nativeElement?.dispose());\n\n\t\tconst size = store.select('size');\n\t\tconst dpr = store.select('viewport', 'dpr');\n\t\tconst fboSettings = computed(() => {\n\t\t\tconst { width, height, settings } = fboParams();\n\t\t\tconst _width = typeof width === 'number' ? width : size().width * dpr();\n\t\t\tconst _height = typeof height === 'number' ? height : size().height * dpr();\n\t\t\tconst _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\n\t\t\treturn { width: _width, height: _height, settings: _settings };\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst { width, height, settings } = fboSettings();\n\t\t\tconst { samples = 0, depth, ...targetSettings } = settings;\n\t\t\tlet untrackedTarget = targetRef.untracked;\n\t\t\tif (!untrackedTarget) {\n\t\t\t\tconst target = new THREE.WebGLRenderTarget(width, height, {\n\t\t\t\t\tminFilter: THREE.LinearFilter,\n\t\t\t\t\tmagFilter: THREE.LinearFilter,\n\t\t\t\t\ttype: THREE.HalfFloatType,\n\t\t\t\t\t...targetSettings,\n\t\t\t\t});\n\t\t\t\tif (depth) target.depthTexture = new THREE.DepthTexture(width, height, THREE.FloatType);\n\n\t\t\t\ttarget.samples = samples;\n\t\t\t\ttargetRef.nativeElement = target;\n\t\t\t\tuntrackedTarget = targetRef.untracked;\n\t\t\t}\n\n\t\t\tif (untrackedTarget) {\n\t\t\t\tuntrackedTarget.setSize(width, height);\n\t\t\t\tif (samples) untrackedTarget.samples = samples;\n\t\t\t\tsafeDetectChanges(cdr);\n\t\t\t}\n\t\t});\n\n\t\treturn targetRef;\n\t});\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, ElementRef, Input } from '@angular/core';\nimport { extend, injectNgtRef, injectNgtStore, NgtGroup, signalStore } from 'angular-three';\nimport { NgtsEdges } from 'angular-three-soba/abstractions';\nimport { CausticsMaterial, CausticsProjectionMaterial } from 'angular-three-soba/shaders';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { Group, LineBasicMaterial, Mesh, OrthographicCamera, PlaneGeometry, Scene } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\nimport { injectNgtsFBO } from '../fbo/fbo';\n\nextend({ Group, Scene, Mesh, PlaneGeometry, OrthographicCamera, CausticsProjectionMaterial, LineBasicMaterial });\n\nconst NORMALPROPS = {\n\tdepth: true,\n\tminFilter: THREE.LinearFilter,\n\tmagFilter: THREE.LinearFilter,\n\ttype: THREE.UnsignedByteType,\n};\n\nconst CAUSTICPROPS = {\n\tminFilter: THREE.LinearMipmapLinearFilter,\n\tmagFilter: THREE.LinearFilter,\n\ttype: THREE.FloatType,\n\tgenerateMipmaps: true,\n};\n\ntype CausticsMaterialType = THREE.ShaderMaterial & {\n\tcameraMatrixWorld?: THREE.Matrix4;\n\tcameraProjectionMatrixInv?: THREE.Matrix4;\n\tlightPlaneNormal?: THREE.Vector3;\n\tlightPlaneConstant?: number;\n\tnormalTexture?: THREE.Texture | null;\n\tdepthTexture?: THREE.Texture | null;\n\tlightDir?: THREE.Vector3;\n\tnear?: number;\n\tfar?: number;\n\tmodelMatrix?: THREE.Matrix4;\n\tworldRadius?: number;\n\tior?: number;\n\tbounces?: number;\n\tresolution?: number;\n\tsize?: number;\n\tintensity?: number;\n};\n\ntype CausticsProjectionMaterialType = THREE.MeshNormalMaterial & {\n\tviewMatrix: { value?: THREE.Matrix4 };\n\tcolor?: THREE.Color;\n\tcausticsTexture?: THREE.Texture;\n\tcausticsTextureB?: THREE.Texture;\n\tlightProjMatrix?: THREE.Matrix4;\n\tlightViewMatrix?: THREE.Matrix4;\n};\n\nfunction createNormalMaterial(side: THREE.Side = THREE.FrontSide) {\n\tconst viewMatrix = { value: new THREE.Matrix4() };\n\treturn Object.assign(new THREE.MeshNormalMaterial({ side }), {\n\t\tviewMatrix,\n\t\tonBeforeCompile: (shader: any) => {\n\t\t\tshader.uniforms.viewMatrix = viewMatrix;\n\t\t\tshader.fragmentShader =\n\t\t\t\t`vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n }\\n` +\n\t\t\t\tshader.fragmentShader.replace(\n\t\t\t\t\t'#include <normal_fragment_maps>',\n\t\t\t\t\t`#include <normal_fragment_maps>\n normal = inverseTransformDirection( normal, viewMatrix );\\n`,\n\t\t\t\t);\n\t\t},\n\t});\n}\n\nexport type NgtsCausticsState = {\n\t/** How many frames it will render, set it to Infinity for runtime, default: 1 */\n\tframes: number;\n\t/** Enables visual cues to help you stage your scene, default: false */\n\tdebug: boolean;\n\t/** Will display caustics only and skip the models, default: false */\n\tcausticsOnly: boolean;\n\t/** Will include back faces and enable the backsideIOR prop, default: false */\n\tbackside: boolean;\n\t/** The IOR refraction index, default: 1.1 */\n\tior: number;\n\t/** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n\tbacksideIOR: number;\n\t/** The texel size, default: 0.3125 */\n\tworldRadius: number;\n\t/** Intensity of the prjected caustics, default: 0.05 */\n\tintensity: number;\n\t/** Caustics color, default: white */\n\tcolor: THREE.ColorRepresentation;\n\t/** Buffer resolution, default: 2048 */\n\tresolution: number;\n\t/** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n\tlightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-caustics': NgtsCausticsState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-caustics',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [ref]=\"causticsRef\" ngtCompound>\n\t\t\t<ngt-scene [ref]=\"sceneRef\">\n\t\t\t\t<ngt-orthographic-camera [ref]=\"cameraRef\" [up]=\"[0, 1, 0]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-scene>\n\t\t\t<ngt-mesh [renderOrder]=\"2\" [ref]=\"planeRef\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-caustics-projection-material\n\t\t\t\t\t*ngIf=\"causticsTargetFbo.nativeElement && causticsTargetBFbo.nativeElement\"\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[causticsTexture]=\"causticsTargetFbo.nativeElement.texture\"\n\t\t\t\t\t[causticsTextureB]=\"causticsTargetBFbo.nativeElement.texture\"\n\t\t\t\t\t[blending]=\"CustomBlending\"\n\t\t\t\t\t[blendSrc]=\"OneFactor\"\n\t\t\t\t\t[blendDst]=\"SrcAlphaFactor\"\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t/>\n\n\t\t\t\t<ngts-edges *ngIf=\"debug()\">\n\t\t\t\t\t<ngt-line-basic-material *ngtsSobaContent color=\"#ffff00\" [toneMapped]=\"false\" />\n\t\t\t\t</ngts-edges>\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\timports: [NgIf, NgtsEdges, NgtsSobaContent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCaustics {\n\tCustomBlending = THREE.CustomBlending;\n\tOneFactor = THREE.OneFactor;\n\tSrcAlphaFactor = THREE.SrcAlphaFactor;\n\tMath = Math;\n\n\tprivate inputs = signalStore<NgtsCausticsState>({\n\t\tframes: 1,\n\t\tior: 1.1,\n\t\tcolor: 'white',\n\t\tcausticsOnly: false,\n\t\tbackside: false,\n\t\tbacksideIOR: 1.1,\n\t\tworldRadius: 0.3125,\n\t\tintensity: 0.05,\n\t\tresolution: 2024,\n\t\tlightSource: [5, 5, 5],\n\t});\n\n\t@Input() causticsRef = injectNgtRef<THREE.Group>();\n\n\t/** How many frames it will render, set it to Infinity for runtime, default: 1 */\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\t/** Enables visual cues to help you stage your scene, default: false */\n\t@Input({ alias: 'debug' }) set _debug(debug: boolean) {\n\t\tthis.inputs.set({ debug });\n\t}\n\t/** Will display caustics only and skip the models, default: false */\n\t@Input({ alias: 'causticsOnly' }) set _causticsOnly(causticsOnly: boolean) {\n\t\tthis.inputs.set({ causticsOnly });\n\t}\n\t/** Will include back faces and enable the backsideIOR prop, default: false */\n\t@Input({ alias: 'backside' }) set _backside(backside: boolean) {\n\t\tthis.inputs.set({ backside });\n\t}\n\t/** The IOR refraction index, default: 1.1 */\n\t@Input({ alias: 'ior' }) set _ior(ior: number) {\n\t\tthis.inputs.set({ ior });\n\t}\n\t/** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n\t@Input({ alias: 'backsideIOR' }) set _backsideIOR(backsideIOR: number) {\n\t\tthis.inputs.set({ backsideIOR });\n\t}\n\t/** The texel size, default: 0.3125 */\n\t@Input({ alias: 'worldRadius' }) set _worldRadius(worldRadius: number) {\n\t\tthis.inputs.set({ worldRadius });\n\t}\n\t/** Intensity of the prjected caustics, default: 0.05 */\n\t@Input({ alias: 'intensity' }) set _intensity(intensity: number) {\n\t\tthis.inputs.set({ intensity });\n\t}\n\t/** Caustics color, default: white */\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\t/** Buffer resolution, default: 2048 */\n\t@Input({ alias: 'resolution' }) set _resolution(resolution: number) {\n\t\tthis.inputs.set({ resolution });\n\t}\n\t/** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n\t@Input({ alias: 'lightSource' }) set _lightSource(\n\t\tlightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>,\n\t) {\n\t\tthis.inputs.set({ lightSource });\n\t}\n\n\tprivate resolution = this.inputs.select('resolution');\n\n\tprivate normalTargetSettings = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: NORMALPROPS,\n\t}));\n\n\tprivate causticsTargetSettings = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: CAUSTICPROPS,\n\t}));\n\n\tprivate normalTargetFbo = injectNgtsFBO(this.normalTargetSettings);\n\tprivate normalTargetBFbo = injectNgtsFBO(this.normalTargetSettings);\n\tcausticsTargetFbo = injectNgtsFBO(this.causticsTargetSettings);\n\tcausticsTargetBFbo = injectNgtsFBO(this.causticsTargetSettings);\n\n\tprivate store = injectNgtStore();\n\n\tcolor = this.inputs.select('color');\n\tdebug = this.inputs.select('debug');\n\n\tplaneRef = injectNgtRef<THREE.Mesh>();\n\tsceneRef = injectNgtRef<THREE.Scene>();\n\tcameraRef = injectNgtRef<THREE.OrthographicCamera>();\n\n\tprivate sceneChildren = this.sceneRef.children();\n\tprivate planeChildren = this.planeRef.children('both');\n\tprivate causticsChildren = this.causticsRef.children();\n\n\tconstructor() {\n\t\tthis.updateWorldMatrix();\n\t\tthis.setBeforeRender();\n\t}\n\n\tprivate updateWorldMatrix() {\n\t\teffect(() => {\n\t\t\tconst [caustics] = [\n\t\t\t\tthis.causticsRef.nativeElement,\n\t\t\t\tthis.inputs.state(),\n\t\t\t\tthis.causticsChildren(),\n\t\t\t\tthis.sceneChildren(),\n\t\t\t];\n\t\t\tif (!caustics) return;\n\t\t\tcaustics.updateWorldMatrix(false, true);\n\t\t});\n\t}\n\n\tprivate setBeforeRender() {\n\t\tconst causticsMaterial = new CausticsMaterial() as CausticsMaterialType;\n\t\tconst causticsQuad = new FullScreenQuad(causticsMaterial);\n\n\t\tconst normalMaterial = createNormalMaterial();\n\t\tconst normalMaterialB = createNormalMaterial(THREE.BackSide);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [\n\t\t\t\tcaustics,\n\t\t\t\tscene,\n\t\t\t\tcamera,\n\t\t\t\tnormalTarget,\n\t\t\t\tnormalTargetB,\n\t\t\t\tcausticsTarget,\n\t\t\t\tcausticsTargetB,\n\t\t\t\tplane,\n\t\t\t\tsceneChildren,\n\t\t\t] = [\n\t\t\t\tthis.causticsRef.nativeElement,\n\t\t\t\tthis.sceneRef.nativeElement,\n\t\t\t\tthis.cameraRef.nativeElement,\n\t\t\t\tthis.normalTargetFbo.nativeElement,\n\t\t\t\tthis.normalTargetBFbo.nativeElement,\n\t\t\t\tthis.causticsTargetFbo.nativeElement,\n\t\t\t\tthis.causticsTargetBFbo.nativeElement,\n\t\t\t\tthis.planeRef.nativeElement,\n\t\t\t\tthis.sceneChildren(),\n\t\t\t\tthis.planeChildren(),\n\t\t\t];\n\n\t\t\tif (!caustics) return;\n\t\t\tcaustics.updateWorldMatrix(false, true);\n\n\t\t\tif (sceneChildren.length > 1) {\n\t\t\t\tconst v = new THREE.Vector3();\n\t\t\t\tconst lpF = new THREE.Frustum();\n\t\t\t\tconst lpM = new THREE.Matrix4();\n\t\t\t\tconst lpP = new THREE.Plane();\n\n\t\t\t\tconst lightDir = new THREE.Vector3();\n\t\t\t\tconst lightDirInv = new THREE.Vector3();\n\t\t\t\tconst bounds = new THREE.Box3();\n\t\t\t\tconst focusPos = new THREE.Vector3();\n\n\t\t\t\tlet count = 0;\n\t\t\t\tconst sub = this.store.get('internal').subscribe(({ gl }) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tframes,\n\t\t\t\t\t\tlightSource,\n\t\t\t\t\t\tresolution,\n\t\t\t\t\t\tworldRadius,\n\t\t\t\t\t\tintensity,\n\t\t\t\t\t\tbackside,\n\t\t\t\t\t\tbacksideIOR,\n\t\t\t\t\t\tior,\n\t\t\t\t\t\tcausticsOnly,\n\t\t\t\t\t} = this.inputs.get();\n\n\t\t\t\t\tif (frames === Infinity || count++ < frames) {\n\t\t\t\t\t\tif (Array.isArray(lightSource)) lightDir.fromArray(lightSource).normalize();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tlightDir.copy(\n\t\t\t\t\t\t\t\tcaustics.worldToLocal(lightSource.nativeElement.getWorldPosition(v)).normalize(),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tlightDirInv.copy(lightDir).multiplyScalar(-1);\n\n\t\t\t\t\t\tlet boundsVertices: THREE.Vector3[] = [];\n\t\t\t\t\t\tscene.parent?.matrixWorld.identity();\n\t\t\t\t\t\tbounds.setFromObject(scene, true);\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.min.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.max.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.min.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.max.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.min.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.max.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.min.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.max.z));\n\n\t\t\t\t\t\tconst worldVerts = boundsVertices.map((v) => v.clone());\n\n\t\t\t\t\t\tbounds.getCenter(focusPos);\n\t\t\t\t\t\tboundsVertices = boundsVertices.map((v) => v.clone().sub(focusPos));\n\t\t\t\t\t\tconst lightPlane = lpP.set(lightDirInv, 0);\n\t\t\t\t\t\tconst projectedVerts = boundsVertices.map((v) =>\n\t\t\t\t\t\t\tlightPlane.projectPoint(v, new THREE.Vector3()),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst centralVert = projectedVerts\n\t\t\t\t\t\t\t.reduce((a, b) => a.add(b), v.set(0, 0, 0))\n\t\t\t\t\t\t\t.divideScalar(projectedVerts.length);\n\t\t\t\t\t\tconst radius = projectedVerts\n\t\t\t\t\t\t\t.map((v) => v.distanceTo(centralVert))\n\t\t\t\t\t\t\t.reduce((a, b) => Math.max(a, b));\n\t\t\t\t\t\tconst dirLength = boundsVertices.map((x) => x.dot(lightDir)).reduce((a, b) => Math.max(a, b));\n\n\t\t\t\t\t\t// Shadows\n\t\t\t\t\t\tcamera.position.copy(lightDir.clone().multiplyScalar(dirLength).add(focusPos));\n\t\t\t\t\t\tcamera.lookAt(scene.localToWorld(focusPos.clone()));\n\t\t\t\t\t\tconst dirMatrix = lpM.lookAt(camera.position, focusPos, v.set(0, 1, 0));\n\t\t\t\t\t\tcamera.left = -radius;\n\t\t\t\t\t\tcamera.right = radius;\n\t\t\t\t\t\tcamera.top = radius;\n\t\t\t\t\t\tcamera.bottom = -radius;\n\t\t\t\t\t\tconst yOffset = v.set(0, radius, 0).applyMatrix4(dirMatrix);\n\t\t\t\t\t\tconst yTime = (camera.position.y + yOffset.y) / lightDir.y;\n\t\t\t\t\t\tcamera.near = 0.1;\n\t\t\t\t\t\tcamera.far = yTime;\n\t\t\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\t\t\tcamera.updateMatrixWorld();\n\n\t\t\t\t\t\t// Now find size of ground plane\n\t\t\t\t\t\tconst groundProjectedCoords = worldVerts.map((v) =>\n\t\t\t\t\t\t\tv.add(lightDir.clone().multiplyScalar(-v.y / lightDir.y)),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst centerPos = groundProjectedCoords\n\t\t\t\t\t\t\t.reduce((a, b) => a.add(b), v.set(0, 0, 0))\n\t\t\t\t\t\t\t.divideScalar(groundProjectedCoords.length);\n\t\t\t\t\t\tconst maxSize =\n\t\t\t\t\t\t\t2 *\n\t\t\t\t\t\t\tgroundProjectedCoords\n\t\t\t\t\t\t\t\t.map((v) => Math.hypot(v.x - centerPos.x, v.z - centerPos.z))\n\t\t\t\t\t\t\t\t.reduce((a, b) => Math.max(a, b));\n\t\t\t\t\t\tplane.scale.setScalar(maxSize);\n\t\t\t\t\t\tplane.position.copy(centerPos);\n\n\t\t\t\t\t\t// if (debug) helper.current?.update();\n\n\t\t\t\t\t\t// Inject uniforms\n\t\t\t\t\t\tnormalMaterialB.viewMatrix.value = normalMaterial.viewMatrix.value = camera.matrixWorldInverse;\n\n\t\t\t\t\t\tconst dirLightNearPlane = lpF.setFromProjectionMatrix(\n\t\t\t\t\t\t\tlpM.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse),\n\t\t\t\t\t\t).planes[4];\n\n\t\t\t\t\t\tcausticsMaterial.cameraMatrixWorld = camera.matrixWorld;\n\t\t\t\t\t\tcausticsMaterial.cameraProjectionMatrixInv = camera.projectionMatrixInverse;\n\t\t\t\t\t\tcausticsMaterial.lightDir = lightDirInv;\n\n\t\t\t\t\t\tcausticsMaterial.lightPlaneNormal = dirLightNearPlane.normal;\n\t\t\t\t\t\tcausticsMaterial.lightPlaneConstant = dirLightNearPlane.constant;\n\n\t\t\t\t\t\tcausticsMaterial.near = camera.near;\n\t\t\t\t\t\tcausticsMaterial.far = camera.far;\n\t\t\t\t\t\tcausticsMaterial.resolution = resolution;\n\t\t\t\t\t\tcausticsMaterial.size = radius;\n\t\t\t\t\t\tcausticsMaterial.intensity = intensity;\n\t\t\t\t\t\tcausticsMaterial.worldRadius = worldRadius;\n\n\t\t\t\t\t\t// Switch the scene on\n\t\t\t\t\t\tscene.visible = true;\n\n\t\t\t\t\t\t// Render front face normals\n\t\t\t\t\t\tgl.setRenderTarget(normalTarget);\n\t\t\t\t\t\tgl.clear();\n\t\t\t\t\t\tscene.overrideMaterial = normalMaterial;\n\t\t\t\t\t\tgl.render(scene, camera);\n\n\t\t\t\t\t\t// Render back face normals, if enabled\n\t\t\t\t\t\tgl.setRenderTarget(normalTargetB);\n\t\t\t\t\t\tgl.clear();\n\t\t\t\t\t\tif (backside) {\n\t\t\t\t\t\t\tscene.overrideMaterial = normalMaterialB;\n\t\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Remove the override material\n\t\t\t\t\t\tscene.overrideMaterial = null;\n\n\t\t\t\t\t\t// Render front face caustics\n\t\t\t\t\t\tcausticsMaterial.ior = ior;\n\t\t\t\t\t\t(plane.material as CausticsProjectionMaterialType).lightProjMatrix = camera.projectionMatrix;\n\t\t\t\t\t\t(plane.material as CausticsProjectionMaterialType).lightViewMatrix = camera.matrixWorldInverse;\n\t\t\t\t\t\tcausticsMaterial.normalTexture = normalTarget?.texture;\n\t\t\t\t\t\tcausticsMaterial.depthTexture = normalTarget?.depthTexture;\n\t\t\t\t\t\tgl.setRenderTarget(causticsTarget);\n\t\t\t\t\t\tgl.clear();\n\t\t\t\t\t\tcausticsQuad.render(gl);\n\n\t\t\t\t\t\t// Render back face caustics, if enabled\n\t\t\t\t\t\tcausticsMaterial.ior = backsideIOR;\n\t\t\t\t\t\tcausticsMaterial.normalTexture = normalTargetB?.texture;\n\t\t\t\t\t\tcausticsMaterial.depthTexture = normalTargetB?.depthTexture;\n\t\t\t\t\t\tgl.setRenderTarget(causticsTargetB);\n\t\t\t\t\t\tgl.clear();\n\t\t\t\t\t\tif (backside) causticsQuad.render(gl);\n\n\t\t\t\t\t\t// Reset render target\n\t\t\t\t\t\tgl.setRenderTarget(null);\n\n\t\t\t\t\t\t// Switch the scene off if caustics is all that's wanted\n\t\t\t\t\t\tif (causticsOnly) scene.visible = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tonCleanup(() => sub());\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, Input } from '@angular/core';\nimport {\n\tapplyProps,\n\textend,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtEuler,\n\ttype NgtMesh,\n\ttype NgtRef,\n\ttype NgtVector3,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { AxesHelper, BoxGeometry, Mesh, MeshNormalMaterial } from 'three';\nimport { DecalGeometry } from 'three-stdlib';\n\nextend({ Mesh, BoxGeometry, MeshNormalMaterial, AxesHelper });\n\nexport type NgtsDecalState = {\n\tdebug: boolean;\n\tmesh?: NgtRef<THREE.Mesh>;\n\tposition: NgtVector3;\n\trotation: NgtEuler | number;\n\tscale: NgtVector3;\n\tmap?: THREE.Texture;\n\tpolygonOffsetFactor: number;\n\tdepthTest: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-mesh\n\t\t */\n\t\t'ngts-decal': NgtsDecalState & NgtMesh;\n\t}\n}\n\nfunction vecToArray(vec: number[] | NgtVector3 | NgtEuler | number = [0, 0, 0]) {\n\tif (Array.isArray(vec)) {\n\t\treturn vec;\n\t}\n\n\tif (vec instanceof THREE.Vector3 || vec instanceof THREE.Euler) {\n\t\treturn [vec.x, vec.y, vec.z];\n\t}\n\n\treturn [vec, vec, vec];\n}\n\n@Component({\n\tselector: 'ngts-decal',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh [ref]=\"decalRef\" ngtCompound>\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.transparent\" />\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.polygonOffset\" />\n\t\t\t<ngt-value [rawValue]=\"polygonOffsetFactor()\" attach=\"material.polygonOffsetFactor\" />\n\t\t\t<ngt-value [rawValue]=\"depthTest()\" attach=\"material.depthTest\" />\n\t\t\t<ngt-value [rawValue]=\"map()\" attach=\"material.map\" />\n\t\t\t<ng-content />\n\n\t\t\t<ngt-mesh *ngIf=\"debug()\" [ref]=\"helperRef\">\n\t\t\t\t<ngt-box-geometry />\n\t\t\t\t<ngt-mesh-normal-material [wireframe]=\"true\" />\n\t\t\t\t<ngt-axes-helper />\n\t\t\t</ngt-mesh>\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgIf],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsDecal {\n\tprivate inputs = signalStore<NgtsDecalState>({\n\t\tdebug: false,\n\t\tdepthTest: false,\n\t\tpolygonOffsetFactor: -10,\n\t\tposition: [0, 0, 0],\n\t\trotation: [0, 0, 0],\n\t\tscale: 1,\n\t});\n\n\t@Input() decalRef = injectNgtRef<Mesh>();\n\n\t@Input({ alias: 'debug' }) set _debug(debug: boolean) {\n\t\tthis.inputs.set({ debug });\n\t}\n\n\t@Input({ alias: 'mesh' }) set _mesh(mesh: NgtRef<THREE.Mesh>) {\n\t\tthis.inputs.set({ mesh });\n\t}\n\n\t@Input({ alias: 'position' }) set _position(position: NgtVector3) {\n\t\tthis.inputs.set({ position });\n\t}\n\n\t@Input({ alias: 'rotation' }) set _rotation(rotation: NgtEuler | number) {\n\t\tthis.inputs.set({ rotation });\n\t}\n\n\t@Input({ alias: 'scale' }) set _scale(scale: NgtVector3) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t@Input({ alias: 'map' }) set _map(map: THREE.Texture) {\n\t\tthis.inputs.set({ map });\n\t}\n\n\t@Input({ alias: 'polygonOffsetFactor' }) set _polygonOffsetFactor(polygonOffsetFactor: number) {\n\t\tthis.inputs.set({ polygonOffsetFactor });\n\t}\n\n\t@Input({ alias: 'depthTest' }) set _depthTest(depthTest: boolean) {\n\t\tthis.inputs.set({ depthTest });\n\t}\n\n\tprivate mesh = this.inputs.select('mesh');\n\tprivate __position = this.inputs.select('position');\n\tprivate __rotation = this.inputs.select('rotation');\n\tprivate __scale = this.inputs.select('scale');\n\tprivate position = computed(() => vecToArray(this.__position()));\n\tprivate rotation = computed(() => vecToArray(this.__rotation()));\n\tprivate scale = computed(() => vecToArray(this.__scale()));\n\n\thelperRef = injectNgtRef<Mesh>();\n\n\tdebug = this.inputs.select('debug');\n\tdepthTest = this.inputs.select('depthTest');\n\tpolygonOffsetFactor = this.inputs.select('polygonOffsetFactor');\n\tmap = this.inputs.select('map');\n\n\tconstructor() {\n\t\tthis.processDecal();\n\t}\n\n\tprivate processDecal() {\n\t\teffect((onCleanup) => {\n\t\t\tconst decal = this.decalRef.nativeElement;\n\t\t\tif (!decal) return;\n\n\t\t\tconst [mesh, position, rotation, scale, helper] = [\n\t\t\t\tthis.mesh(),\n\t\t\t\tthis.position(),\n\t\t\t\tthis.rotation(),\n\t\t\t\tthis.scale(),\n\t\t\t\tthis.helperRef.nativeElement,\n\t\t\t];\n\n\t\t\tconst parent = mesh ? (is.ref(mesh) ? mesh.nativeElement : mesh) : decal.parent;\n\t\t\tif (!(parent instanceof Mesh)) {\n\t\t\t\tthrow new Error('[NGT] ngts-decal must have a ngt-mesh as parent or specify its \"mesh\" input');\n\t\t\t}\n\n\t\t\tconst state = {\n\t\t\t\tposition: new THREE.Vector3(),\n\t\t\t\trotation: new THREE.Euler(),\n\t\t\t\tscale: new THREE.Vector3(1, 1, 1),\n\t\t\t};\n\n\t\t\tif (parent) {\n\t\t\t\tapplyProps(state, { position, scale });\n\n\t\t\t\t// Zero out the parents matrix world for this operation\n\t\t\t\tconst matrixWorld = parent.matrixWorld.clone();\n\t\t\t\tparent.matrixWorld.identity();\n\n\t\t\t\tif (!rotation || typeof rotation === 'number') {\n\t\t\t\t\tconst o = new THREE.Object3D();\n\n\t\t\t\t\to.position.copy(state.position);\n\t\t\t\t\to.lookAt(parent.position);\n\t\t\t\t\tif (typeof rotation === 'number') o.rotateZ(rotation);\n\t\t\t\t\tapplyProps(state, { rotation: o.rotation });\n\t\t\t\t} else {\n\t\t\t\t\tapplyProps(state, { rotation });\n\t\t\t\t}\n\n\t\t\t\tdecal.geometry = new DecalGeometry(parent, state.position, state.rotation, state.scale);\n\t\t\t\tif (helper) {\n\t\t\t\t\tapplyProps(helper, state);\n\t\t\t\t\t// Prevent the helpers from blocking rays\n\t\t\t\t\thelper.traverse((child) => (child.raycast = () => null));\n\t\t\t\t}\n\t\t\t\t// Reset parents matix-world\n\t\t\t\tparent.matrixWorld = matrixWorld;\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\tdecal.geometry.dispose();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n","import { ChangeDetectorRef, computed, effect, inject, runInInjectionContext, type Injector } from '@angular/core';\nimport {\n\tassertInjectionContext,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tsafeDetectChanges,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { injectNgtsFBO } from '../fbo/fbo';\n\nexport interface NgtsDepthBufferParams {\n\tsize: number;\n\tframes: number;\n}\n\nexport function injectNgtsDepthBuffer(\n\tparamsFactory: () => Partial<NgtsDepthBufferParams> = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsDepthBuffer, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst depthBufferRef = injectNgtRef<THREE.DepthTexture | null>(null);\n\t\tconst store = injectNgtStore();\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst size = store.select('size');\n\t\tconst dpr = store.select('viewport', 'dpr');\n\n\t\tconst fboParams = computed(() => {\n\t\t\tconst params = { size: 256, frames: Infinity, ...paramsFactory() };\n\t\t\tconst width = params.size || size().width * dpr();\n\t\t\tconst height = params.size || size().height * dpr();\n\t\t\tconst depthTexture = new THREE.DepthTexture(width, height);\n\t\t\tdepthTexture.format = THREE.DepthFormat;\n\t\t\tdepthTexture.type = THREE.UnsignedShortType;\n\t\t\treturn { width, height, settings: { depthTexture } };\n\t\t});\n\n\t\tconst fboRef = injectNgtsFBO(fboParams, { injector });\n\n\t\teffect(() => {\n\t\t\tconst fbo = fboRef.nativeElement;\n\t\t\tif (fbo) {\n\t\t\t\tdepthBufferRef.nativeElement = fbo.depthTexture;\n\t\t\t\tsafeDetectChanges(cdr);\n\t\t\t}\n\t\t});\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(\n\t\t\t({ gl, scene, camera }) => {\n\t\t\t\tconst params = { size: 256, frames: Infinity, ...paramsFactory() };\n\t\t\t\tconst fbo = fboRef.untracked;\n\t\t\t\tif ((params.frames === Infinity || count < params.frames) && fbo) {\n\t\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ injector },\n\t\t);\n\n\t\treturn depthBufferRef;\n\t});\n}\n","import { NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, forwardRef, signal } from '@angular/core';\nimport { createInjectionToken, extend, injectNgtRef, signalStore } from 'angular-three';\nimport { NgtsText3D } from 'angular-three-soba/abstractions';\nimport { NgtsCenter } from 'angular-three-soba/staging';\nimport { Group, MeshNormalMaterial, MeshStandardMaterial } from 'three';\n\n/**\n * define states of a component. usually acts for inputs signalStore\n */\nexport type NgtsExampleState = {\n\tfont: string;\n\tcolor: THREE.ColorRepresentation;\n\tdebug: boolean;\n\tbevelSize: number;\n};\n\n/**\n * augment HTMLElementTagNameMap with the selector of the component.\n * the type is usually the Inputs' state and the root THREE element\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t\\/**\n\t\t * @extends ngt-group\n\t\t *\\/\n\t\t'ngts-example': NgtsExampleState & NgtGroup;\n\t}\n}\n\n*/\n\n/**\n * make sure soba's component extends all regular THREE entities that it needs\n */\nextend({ Group, MeshNormalMaterial, MeshStandardMaterial });\n\n/**\n * We can setup public API for this soba component with createInjectionToken + forwardRef\n * the `example.api` is **usually** a computed property in the component class\n *\n * @see Bounds for example\n */\nexport const [injectNgtsExampleApi, provideNgtsExampleApi] = createInjectionToken(\n\t(example: NgtsExample) => example.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsExample)] },\n);\n\n@Component({\n\tselector: 'ngts-example',\n\tstandalone: true,\n\ttemplate: `\n\t\t<!-- ngtCompound is used by the Renderer to spread props from ngts-example down to ngt-group -->\n\t\t<!-- i.e: <ngts-example [position]=\"[1, 1, 1]\" />, [1, 1, 1] will be passed down to ngt-group -->\n\t\t<!-- [ref] is used with the Input so that the consumer can pass an external ref and control this internal ngt-group -->\n\t\t<ngt-group ngtCompound [ref]=\"exampleRef\">\n\t\t\t<ngts-center [top]=\"true\">\n\t\t\t\t<ngts-text-3d\n\t\t\t\t\t[bevelEnabled]=\"true\"\n\t\t\t\t\t[bevelSize]=\"bevelSize()\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[text]=\"count().toString()\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-mesh-standard-material *ngIf=\"!debug(); else withDebug\" [color]=\"color()\" />\n\t\t\t\t\t<ng-template #withDebug>\n\t\t\t\t\t\t<ngt-mesh-normal-material [wireframe]=\"true\" />\n\t\t\t\t\t</ng-template>\n\t\t\t\t</ngts-text-3d>\n\t\t\t</ngts-center>\n\t\t\t<!-- use Content Projection here so consumers can pass in children for ngt-group -->\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\t/**\n\t * can definitely use other Soba components\n\t */\n\timports: [NgtsCenter, NgtsText3D, NgIf],\n\t/**\n\t * call the API provider here to actually provide the API for the component's children\n\t */\n\tproviders: [provideNgtsExampleApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\n/**\n * @description this component is only for documentation purposes.\n */\nexport class NgtsExample {\n\t/**\n\t * use signalStore to store inputs with default inputs\n\t */\n\tprivate inputs = signalStore<NgtsExampleState>({ color: '#cbcbcb', bevelSize: 0.04, debug: false });\n\n\t/**\n\t * a soba component usually has a Input for the component ref and this Input always has a default value with injectNgtRef\n\t */\n\t@Input() exampleRef = injectNgtRef<Group>();\n\n\t/**\n\t * setup Input for the Inputs state. Use alias to have an easier time to setup computed\n\t *\n\t * @example: this way \"private font\" and \"set _font\" won't conflict\n\t * private font = this.inputs.select('font');\n\t */\n\t@Input({ alias: 'font', required: true }) set _font(font: string) {\n\t\tthis.inputs.set({ font });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'debug' }) set _debug(debug: boolean) {\n\t\tthis.inputs.set({ debug });\n\t}\n\n\t@Input({ alias: 'bevelSize' }) set _bevelSize(bevelSize: number) {\n\t\tthis.inputs.set({ bevelSize });\n\t}\n\n\t/**\n\t * exposes signals from inputs\n\t */\n\tbevelSize = this.inputs.select('bevelSize');\n\tfont = this.inputs.select('font');\n\tdebug = this.inputs.select('debug');\n\tcolor = this.inputs.select('color');\n\n\t/**\n\t * can have internal state\n\t */\n\tcount = signal(0);\n\n\t/**\n\t * Expose the public API for this soba component\n\t */\n\tapi = computed(() => ({\n\t\tbevelSize: this.bevelSize(),\n\t\tincrement: () => this.count.update((v) => v + 1),\n\t\tdecrement: () => this.count.update((v) => v - 1),\n\t}));\n}\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n\tComponent,\n\tElementRef,\n\tEmbeddedViewRef,\n\tTemplateRef,\n\tViewChild,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tuntracked,\n} from '@angular/core';\nimport { HTML, injectBeforeRender, injectNgtStore, is, safeDetectChanges } from 'angular-three';\nimport * as THREE from 'three';\nimport { injectNgtsHtmlInputs } from './html';\n\nconst v1 = new THREE.Vector3();\nconst v2 = new THREE.Vector3();\nconst v3 = new THREE.Vector3();\n\nexport function defaultCalculatePosition(\n\tel: THREE.Object3D,\n\tcamera: THREE.Camera,\n\tsize: { width: number; height: number },\n) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tobjectPos.project(camera);\n\tconst widthHalf = size.width / 2;\n\tconst heightHalf = size.height / 2;\n\treturn [objectPos.x * widthHalf + widthHalf, -(objectPos.y * heightHalf) + heightHalf];\n}\n\nfunction isObjectBehindCamera(el: THREE.Object3D, camera: THREE.Camera) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\tconst deltaCamObj = objectPos.sub(cameraPos);\n\tconst camDir = camera.getWorldDirection(v3);\n\treturn deltaCamObj.angleTo(camDir) > Math.PI / 2;\n}\n\nfunction isObjectVisible(\n\tel: THREE.Object3D,\n\tcamera: THREE.Camera,\n\traycaster: THREE.Raycaster,\n\tocclude: THREE.Object3D[],\n) {\n\tconst elPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst screenPos = elPos.clone();\n\tscreenPos.project(camera);\n\traycaster.setFromCamera(screenPos as any, camera);\n\tconst intersects = raycaster.intersectObjects(occlude, true);\n\tif (intersects.length) {\n\t\tconst intersectionDistance = intersects[0].distance;\n\t\tconst pointDistance = elPos.distanceTo(raycaster.ray.origin);\n\t\treturn pointDistance < intersectionDistance;\n\t}\n\treturn true;\n}\n\nfunction objectScale(el: THREE.Object3D, camera: THREE.Camera) {\n\tif (camera instanceof THREE.OrthographicCamera) {\n\t\treturn camera.zoom;\n\t} else if (camera instanceof THREE.PerspectiveCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst vFOV = (camera.fov * Math.PI) / 180;\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst scaleFOV = 2 * Math.tan(vFOV / 2) * dist;\n\t\treturn 1 / scaleFOV;\n\t} else {\n\t\treturn 1;\n\t}\n}\n\nfunction objectZIndex(el: THREE.Object3D, camera: THREE.Camera, zIndexRange: Array<number>) {\n\tif (camera instanceof THREE.PerspectiveCamera || camera instanceof THREE.OrthographicCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);\n\t\tconst B = zIndexRange[1] - A * camera.far;\n\t\treturn Math.round(A * dist + B);\n\t}\n\treturn undefined;\n}\n\nconst epsilon = (value: number) => (Math.abs(value) < 1e-10 ? 0 : value);\n\nfunction getCSSMatrix(matrix: THREE.Matrix4, multipliers: number[], prepend = '') {\n\tlet matrix3d = 'matrix3d(';\n\tfor (let i = 0; i !== 16; i++) {\n\t\tmatrix3d += epsilon(multipliers[i] * matrix.elements[i]) + (i !== 15 ? ',' : ')');\n\t}\n\treturn prepend + matrix3d;\n}\n\nconst getCameraCSSMatrix = ((multipliers: number[]) => {\n\treturn (matrix: THREE.Matrix4) => getCSSMatrix(matrix, multipliers);\n})([1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1]);\n\nconst getObjectCSSMatrix = ((scaleMultipliers: (n: number) => number[]) => {\n\treturn (matrix: THREE.Matrix4, factor: number) =>\n\t\tgetCSSMatrix(matrix, scaleMultipliers(factor), 'translate(-50%,-50%)');\n})((f: number) => [1 / f, 1 / f, 1 / f, 1, -1 / f, -1 / f, -1 / f, -1, 1 / f, 1 / f, 1 / f, 1, 1, 1, 1, 1]);\n\n@Component({\n\tselector: 'ngts-html-wrapper',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ng-template #transformTemplate>\n\t\t\t<div #transformedOuterDiv [style]=\"styles()\">\n\t\t\t\t<div #transformedInnerDiv [style]=\"transformInnerStyles()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"renderTemplate; context: { styles: htmlInputs.style }\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</ng-template>\n\n\t\t<ng-template #renderTemplate let-renderedStyles=\"styles\">\n\t\t\t<div #renderedDiv [class]=\"htmlInputs.renderedDivClass()\" [style]=\"renderedStyles()\">\n\t\t\t\t<ng-container #renderAnchor />\n\t\t\t</div>\n\t\t</ng-template>\n\t`,\n\timports: [NgTemplateOutlet],\n})\nexport class NgtsHtmlWrapper {\n\tstatic [HTML] = true;\n\n\thtmlInputs = injectNgtsHtmlInputs();\n\n\t@ViewChild('transformTemplate', { static: true }) transformTemplate!: TemplateRef<unknown>;\n\t@ViewChild('renderTemplate', { static: true }) renderTemplate!: TemplateRef<unknown>;\n\n\t@ViewChild('transformedOuterDiv') outerDiv?: ElementRef<HTMLElement>;\n\t@ViewChild('transformedInnerDiv') innerDiv?: ElementRef<HTMLElement>;\n\t@ViewChild('renderAnchor', { read: ViewContainerRef }) renderAnchor?: ViewContainerRef;\n\n\tprivate store = injectNgtStore();\n\tprivate gl = this.store.select('gl');\n\tprivate connected = this.store.select('events', 'connected', { equal: Object.is });\n\tprivate viewport = this.store.select('viewport');\n\tprivate scene = this.store.select('scene');\n\tprivate camera = this.store.select('camera');\n\tprivate size = this.store.select('size');\n\tprivate raycaster = this.store.select('raycaster');\n\n\tprivate isMeshSizeSet = false;\n\n\tprivate document = inject(DOCUMENT);\n\tprivate vcr = inject(ViewContainerRef);\n\n\tprivate portalElement = computed(() => {\n\t\tconst portal = this.htmlInputs.portal();\n\t\tif (!portal) return null;\n\t\treturn is.ref(portal) ? portal.nativeElement : portal;\n\t});\n\n\tprivate element = computed(() => this.document.createElement(this.htmlInputs.as()) as HTMLElement);\n\tprivate target = computed(() => {\n\t\tconst portalElement = this.portalElement();\n\t\tif (portalElement) return portalElement;\n\t\tconst connected = this.connected();\n\t\tif (connected) return connected as HTMLElement;\n\t\treturn this.gl().domElement.parentElement!;\n\t});\n\n\tstyles = computed(() => {\n\t\tconst [style, center, transform, size, fullscreen] = [\n\t\t\tthis.htmlInputs.style(),\n\t\t\tthis.htmlInputs.center(),\n\t\t\tthis.htmlInputs.transform(),\n\t\t\tthis.size(),\n\t\t\tthis.htmlInputs.fullscreen(),\n\t\t];\n\n\t\tif (transform) {\n\t\t\treturn {\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\twidth: size.width,\n\t\t\t\theight: size.height,\n\t\t\t\ttransformStyle: 'preserve-3d',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tposition: 'absolute',\n\t\t\ttransform: center ? 'translate3d(-50%,-50%,0)' : 'none',\n\t\t\t...(fullscreen && {\n\t\t\t\ttop: -size.height / 2,\n\t\t\t\tleft: -size.width / 2,\n\t\t\t\twidth: size.width,\n\t\t\t\theight: size.height,\n\t\t\t}),\n\t\t\t...(style || {}),\n\t\t};\n\t});\n\ttransformInnerStyles = computed(() => ({ position: 'absolute', pointerEvents: this.htmlInputs.pointerEvents() }));\n\n\tconstructor() {\n\t\tthis.setCanvasElementStyle();\n\t\tthis.appendElement();\n\t\tthis.setWrapperClass();\n\t\tthis.render();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate setCanvasElementStyle() {\n\t\teffect(() => {\n\t\t\tconst el = untracked(this.gl).domElement!;\n\t\t\tconst occlude = this.htmlInputs.occlude();\n\t\t\tif (occlude && occlude === 'blending') {\n\t\t\t\tel.style.zIndex = `${Math.floor(untracked(this.htmlInputs.zIndexRange)[0] / 2)}`;\n\t\t\t\tel.style.position = 'absolute';\n\t\t\t\tel.style.pointerEvents = 'none';\n\t\t\t} else {\n\t\t\t\tel.style.zIndex = null!;\n\t\t\t\tel.style.position = null!;\n\t\t\t\tel.style.pointerEvents = null!;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate appendElement() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [group, element] = [this.htmlInputs.groupRef.nativeElement, this.element()];\n\t\t\tif (group && element) {\n\t\t\t\tconst [target, transform, scene, camera, size, calculatePosition, prepend] = [\n\t\t\t\t\tthis.target(),\n\t\t\t\t\tthis.htmlInputs.transform(),\n\t\t\t\t\tuntracked(this.scene),\n\t\t\t\t\tuntracked(this.camera),\n\t\t\t\t\tuntracked(this.size),\n\t\t\t\t\tuntracked(this.htmlInputs.calculatePosition),\n\t\t\t\t\tuntracked(this.htmlInputs.prepend),\n\t\t\t\t];\n\t\t\t\tscene.updateMatrixWorld();\n\t\t\t\tif (transform) {\n\t\t\t\t\telement.style.cssText = `position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;`;\n\t\t\t\t} else {\n\t\t\t\t\tconst vec = calculatePosition(group, camera, size);\n\t\t\t\t\telement.style.cssText = `position:absolute;top:0;left:0;transform:translate3d(${vec[0]}px,${vec[1]}px,0);transform-origin:0 0;`;\n\t\t\t\t}\n\n\t\t\t\tif (target) {\n\t\t\t\t\tif (prepend) target.prepend(element);\n\t\t\t\t\telse target.appendChild(element);\n\t\t\t\t}\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\tif (target) target.removeChild(element);\n\t\t\t\t\tthis.vcr.clear();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setWrapperClass() {\n\t\teffect(() => {\n\t\t\tconst [element, wrapperClass] = [this.element(), this.htmlInputs.wrapperClass()];\n\t\t\tif (element && wrapperClass) {\n\t\t\t\telement.className = wrapperClass;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate render() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [{ transform }, element, content] = [\n\t\t\t\tthis.htmlInputs.state(),\n\t\t\t\tthis.element(),\n\t\t\t\tthis.htmlInputs.content(),\n\t\t\t];\n\n\t\t\tif (element) {\n\t\t\t\tthis.isMeshSizeSet = false;\n\t\t\t\tconst params: Parameters<ViewContainerRef['createEmbeddedView']> = transform\n\t\t\t\t\t? [this.transformTemplate, {}]\n\t\t\t\t\t: [this.renderTemplate, { styles: this.styles }];\n\n\t\t\t\tconst ref = this.vcr.createEmbeddedView(...params);\n\t\t\t\tif (ref.rootNodes?.[0]) {\n\t\t\t\t\tif (element.hasChildNodes()) {\n\t\t\t\t\t\telement.replaceChildren(...ref.rootNodes);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telement.append(...ref.rootNodes);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsafeDetectChanges(ref);\n\n\t\t\t\tlet contentRef: EmbeddedViewRef<unknown>;\n\t\t\t\tlet contentParent: HTMLElement;\n\t\t\t\t/**\n\t\t\t\t * NOTE: utilizing rAF here so that renderAnchor (ViewContainerRef) has a chance to be resolved\n\t\t\t\t * TODO: Another approach is to call render() in ngOnInit and pass in an injector to the effect\n\t\t\t\t */\n\t\t\t\tconst rAF = requestAnimationFrame(() => {\n\t\t\t\t\tif (content && this.renderAnchor) {\n\t\t\t\t\t\tcontentRef = this.renderAnchor.createEmbeddedView(content);\n\t\t\t\t\t\tcontentParent = ref.rootNodes[0].lastElementChild || ref.rootNodes[0];\n\t\t\t\t\t\twhile (contentParent && contentParent.lastElementChild) {\n\t\t\t\t\t\t\tcontentParent = contentParent.lastElementChild as HTMLElement;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (contentRef.rootNodes?.[0]) {\n\t\t\t\t\t\t\tif (contentParent.hasChildNodes()) {\n\t\t\t\t\t\t\t\tcontentParent.replaceChildren(...contentRef.rootNodes);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontentParent.append(...contentRef.rootNodes);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsafeDetectChanges(contentRef);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\tcancelAnimationFrame(rAF);\n\n\t\t\t\t\tif (contentRef && contentParent) {\n\t\t\t\t\t\tcontentRef.rootNodes.forEach((node) => {\n\t\t\t\t\t\t\tif (contentParent.hasChildNodes()) {\n\t\t\t\t\t\t\t\tcontentParent.removeChild(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnode.remove();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcontentRef.destroy();\n\t\t\t\t\t}\n\n\t\t\t\t\tref.rootNodes.forEach((node) => {\n\t\t\t\t\t\tif (element.hasChildNodes()) {\n\t\t\t\t\t\t\telement.removeChild(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.remove();\n\t\t\t\t\t});\n\t\t\t\t\tref.destroy();\n\t\t\t\t\tthis.renderAnchor?.clear();\n\t\t\t\t\tthis.vcr.clear();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tlet oldPosition = [0, 0];\n\t\tlet oldZoom = 0;\n\t\tlet visible = true;\n\t\tinjectBeforeRender((gl) => {\n\t\t\tconst [\n\t\t\t\tgroup,\n\t\t\t\tcamera,\n\t\t\t\ttransform,\n\t\t\t\tcalculatePosition,\n\t\t\t\tsize,\n\t\t\t\teps,\n\t\t\t\tisRayCastOcclusion,\n\t\t\t\tocclude,\n\t\t\t\tscene,\n\t\t\t\traycaster,\n\t\t\t\telement,\n\t\t\t\tzIndexRange,\n\t\t\t\tsprite,\n\t\t\t\tdistanceFactor,\n\t\t\t\tocclusionMeshRef,\n\t\t\t\tgeometry,\n\t\t\t\tviewport,\n\t\t\t\tscale,\n\t\t\t] = [\n\t\t\t\tthis.htmlInputs.groupRef.nativeElement,\n\t\t\t\tthis.camera(),\n\t\t\t\tthis.htmlInputs.transform(),\n\t\t\t\tthis.htmlInputs.calculatePosition(),\n\t\t\t\tthis.size(),\n\t\t\t\tthis.htmlInputs.eps(),\n\t\t\t\tthis.htmlInputs.isRayCastOcclusion(),\n\t\t\t\tthis.htmlInputs.occlude(),\n\t\t\t\tthis.scene(),\n\t\t\t\tthis.raycaster(),\n\t\t\t\tthis.element(),\n\t\t\t\tthis.htmlInputs.zIndexRange(),\n\t\t\t\tthis.htmlInputs.sprite(),\n\t\t\t\tthis.htmlInputs.distanceFactor(),\n\t\t\t\tthis.htmlInputs.occlusionMeshRef.nativeElement,\n\t\t\t\tthis.htmlInputs.geometry(),\n\t\t\t\tthis.viewport(),\n\t\t\t\tthis.htmlInputs.scale(),\n\t\t\t];\n\t\t\tif (group && element) {\n\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\tgroup.updateWorldMatrix(true, false);\n\t\t\t\tconst vec = transform ? oldPosition : calculatePosition(group, camera, size);\n\n\t\t\t\tif (\n\t\t\t\t\ttransform ||\n\t\t\t\t\tMath.abs(oldZoom - camera.zoom) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[0] - vec[0]) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[1] - vec[1]) > eps\n\t\t\t\t) {\n\t\t\t\t\tconst isBehindCamera = isObjectBehindCamera(group, camera);\n\t\t\t\t\tlet raytraceTarget: null | undefined | boolean | THREE.Object3D[] = false;\n\n\t\t\t\t\tif (isRayCastOcclusion) {\n\t\t\t\t\t\tif (occlude !== 'blending') {\n\t\t\t\t\t\t\traytraceTarget = [scene];\n\t\t\t\t\t\t} else if (Array.isArray(occlude)) {\n\t\t\t\t\t\t\traytraceTarget = occlude.map((item) => (is.ref(item) ? item.nativeElement : item));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst previouslyVisible = visible;\n\t\t\t\t\tif (raytraceTarget) {\n\t\t\t\t\t\tconst isVisible = isObjectVisible(group, camera, raycaster, raytraceTarget);\n\t\t\t\t\t\tvisible = isVisible && !isBehindCamera;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvisible = !isBehindCamera;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (previouslyVisible !== visible) {\n\t\t\t\t\t\tif (this.htmlInputs.occluded.observed) {\n\t\t\t\t\t\t\tthis.htmlInputs.occluded.emit(!visible);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement.style.display = visible ? 'block' : 'none';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfRange = Math.floor(zIndexRange[0] / 2);\n\t\t\t\t\tconst zRange = occlude\n\t\t\t\t\t\t? isRayCastOcclusion //\n\t\t\t\t\t\t\t? [zIndexRange[0], halfRange]\n\t\t\t\t\t\t\t: [halfRange - 1, 0]\n\t\t\t\t\t\t: zIndexRange;\n\n\t\t\t\t\telement.style.zIndex = `${objectZIndex(group, camera, zRange)}`;\n\n\t\t\t\t\tif (transform) {\n\t\t\t\t\t\tconst [widthHalf, heightHalf] = [size.width / 2, size.height / 2];\n\t\t\t\t\t\tconst fov = camera.projectionMatrix.elements[5] * heightHalf;\n\t\t\t\t\t\tconst { isOrthographicCamera, top, left, bottom, right } = camera as THREE.OrthographicCamera;\n\t\t\t\t\t\tconst cameraMatrix = getCameraCSSMatrix(camera.matrixWorldInverse);\n\t\t\t\t\t\tconst cameraTransform = isOrthographicCamera\n\t\t\t\t\t\t\t? `scale(${fov})translate(${epsilon(-(right + left) / 2)}px,${epsilon(\n\t\t\t\t\t\t\t\t\t(top + bottom) / 2,\n\t\t\t\t\t\t\t )}px)`\n\t\t\t\t\t\t\t: `translateZ(${fov}px)`;\n\t\t\t\t\t\tlet matrix = group.matrixWorld;\n\t\t\t\t\t\tif (sprite) {\n\t\t\t\t\t\t\tmatrix = camera.matrixWorldInverse\n\t\t\t\t\t\t\t\t.clone()\n\t\t\t\t\t\t\t\t.transpose()\n\t\t\t\t\t\t\t\t.copyPosition(matrix)\n\t\t\t\t\t\t\t\t.scale(group.scale);\n\t\t\t\t\t\t\tmatrix.elements[3] = matrix.elements[7] = matrix.elements[11] = 0;\n\t\t\t\t\t\t\tmatrix.elements[15] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement.style.width = size.width + 'px';\n\t\t\t\t\t\telement.style.height = size.height + 'px';\n\t\t\t\t\t\telement.style.perspective = isOrthographicCamera ? '' : `${fov}px`;\n\t\t\t\t\t\tif (this.outerDiv?.nativeElement && this.innerDiv?.nativeElement) {\n\t\t\t\t\t\t\tthis.outerDiv.nativeElement.style.width = size.width + 'px';\n\t\t\t\t\t\t\tthis.outerDiv.nativeElement.style.height = size.height + 'px';\n\t\t\t\t\t\t\tthis.outerDiv.nativeElement.style.transform = `${cameraTransform}${cameraMatrix}translate(${widthHalf}px,${heightHalf}px)`;\n\t\t\t\t\t\t\tthis.innerDiv.nativeElement.style.transform = getObjectCSSMatrix(\n\t\t\t\t\t\t\t\tmatrix,\n\t\t\t\t\t\t\t\t1 / ((distanceFactor || 10) / 400),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst scale = distanceFactor === undefined ? 1 : objectScale(group, camera) * distanceFactor;\n\t\t\t\t\t\telement.style.transform = `translate3d(${vec[0]}px,${vec[1]}px,0) scale(${scale})`;\n\t\t\t\t\t}\n\t\t\t\t\toldPosition = vec;\n\t\t\t\t\toldZoom = camera.zoom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isRayCastOcclusion && occlusionMeshRef && !this.isMeshSizeSet) {\n\t\t\t\tif (transform) {\n\t\t\t\t\tif (this.outerDiv?.nativeElement) {\n\t\t\t\t\t\tconst el = this.outerDiv.nativeElement.children[0];\n\n\t\t\t\t\t\tif (el?.clientWidth && el?.clientHeight) {\n\t\t\t\t\t\t\tconst { isOrthographicCamera } = camera as THREE.OrthographicCamera;\n\n\t\t\t\t\t\t\tif (isOrthographicCamera || geometry) {\n\t\t\t\t\t\t\t\tif (scale !== 1) {\n\t\t\t\t\t\t\t\t\tif (!Array.isArray(scale)) {\n\t\t\t\t\t\t\t\t\t\tocclusionMeshRef.scale.setScalar(1 / (scale as number));\n\t\t\t\t\t\t\t\t\t} else if (scale instanceof THREE.Vector3) {\n\t\t\t\t\t\t\t\t\t\tocclusionMeshRef.scale.copy(scale.clone().divideScalar(1));\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tocclusionMeshRef.scale.set(1 / scale[0], 1 / scale[1], 1 / scale[2]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst ratio = (distanceFactor || 10) / 400;\n\t\t\t\t\t\t\t\tconst w = el.clientWidth * ratio;\n\t\t\t\t\t\t\t\tconst h = el.clientHeight * ratio;\n\n\t\t\t\t\t\t\t\tocclusionMeshRef.scale.set(w, h, 1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.isMeshSizeSet = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst ele = element.children[0];\n\n\t\t\t\t\tif (ele?.clientWidth && ele?.clientHeight) {\n\t\t\t\t\t\tconst ratio = 1 / viewport.factor;\n\t\t\t\t\t\tconst w = ele.clientWidth * ratio;\n\t\t\t\t\t\tconst h = ele.clientHeight * ratio;\n\n\t\t\t\t\t\tocclusionMeshRef.scale.set(w, h, 1);\n\n\t\t\t\t\t\tthis.isMeshSizeSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tocclusionMeshRef.lookAt(gl.camera.position);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tContentChild,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tTemplateRef,\n\tcomputed,\n\tforwardRef,\n} from '@angular/core';\nimport {\n\tcreateInjectionToken,\n\textend,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtGroup,\n\ttype NgtRef,\n\ttype NgtVector3,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { Group, Mesh, PlaneGeometry, ShaderMaterial } from 'three';\nimport { NgtsHtmlWrapper, defaultCalculatePosition } from './html-wrapper';\n\nextend({ Group, PlaneGeometry, Mesh, ShaderMaterial });\n\ntype PointerEventsProperties =\n\t| 'auto'\n\t| 'none'\n\t| 'visiblePainted'\n\t| 'visibleFill'\n\t| 'visibleStroke'\n\t| 'visible'\n\t| 'painted'\n\t| 'fill'\n\t| 'stroke'\n\t| 'all'\n\t| 'inherit';\n\nexport type NgtsHtmlState = {\n\tas: keyof HTMLElementTagNameMap;\n\tprepend: boolean;\n\ttransform: boolean;\n\tzIndexRange: Array<number>;\n\tcalculatePosition: typeof defaultCalculatePosition;\n\tfullscreen: boolean;\n\tcenter: boolean;\n\tsprite: boolean;\n\tpointerEvents: PointerEventsProperties;\n\teps: number;\n\tscale: NgtVector3;\n\tcontent?: TemplateRef<unknown>;\n\tdistanceFactor?: number;\n\tstyle?: CSSStyleDeclaration;\n\trenderedDivClass?: string;\n\twrapperClass?: string;\n\tportal?: NgtRef<HTMLElement>;\n\tocclude: NgtRef<THREE.Object3D>[] | boolean | 'raycast' | 'blending';\n\tmaterial?: NgtRef<THREE.Material>;\n\tgeometry?: NgtRef<THREE.BufferGeometry>;\n\tcastShadow: boolean; // Cast shadow for occlusion plane\n\treceiveShadow: boolean; // Receive shadow for occlusion plane\n};\n\nexport const [injectNgtsHtmlInputs, provideNgtsHtmlInputs] = createInjectionToken(\n\t(html: NgtsHtml) => ({ state: html.inputs.state, ...html.state }),\n\t{ isRoot: false, deps: [forwardRef(() => NgtsHtml)] },\n);\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-html': NgtsHtmlState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-html',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"groupRef\" [scale]=\"scale()\">\n\t\t\t<ngt-mesh\n\t\t\t\t*ngIf=\"occlude() && !isRayCastOcclusion()\"\n\t\t\t\t[castShadow]=\"castShadow()\"\n\t\t\t\t[receiveShadow]=\"receiveShadow()\"\n\t\t\t\t[ref]=\"occlusionMeshRef\"\n\t\t\t>\n\t\t\t\t<ngt-plane-geometry *ngIf=\"geometry()\" />\n\t\t\t\t<ngt-shader-material\n\t\t\t\t\t*ngIf=\"material()\"\n\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t[vertexShader]=\"shaders().vertexShader\"\n\t\t\t\t\t[fragmentShader]=\"shaders().fragmentShader\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\n\t\t<ngts-html-wrapper />\n\t`,\n\timports: [NgIf, NgtsHtmlWrapper],\n\tproviders: [provideNgtsHtmlInputs()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsHtml {\n\tDoubleSide = THREE.DoubleSide;\n\n\tinputs = signalStore<NgtsHtmlState>({\n\t\tas: 'div',\n\t\tprepend: false,\n\t\ttransform: false,\n\t\tfullscreen: false,\n\t\tcenter: false,\n\t\tsprite: false,\n\t\tzIndexRange: [16777271, 0],\n\t\teps: 0.001,\n\t\tscale: 1,\n\t\tcalculatePosition: defaultCalculatePosition,\n\t\tpointerEvents: 'auto',\n\t\tocclude: false,\n\t\tcastShadow: false,\n\t\treceiveShadow: false,\n\t});\n\n\t@ContentChild(NgtsSobaContent, { read: TemplateRef }) set content(content: TemplateRef<unknown>) {\n\t\tthis.inputs.set({ content });\n\t}\n\n\t@Input() groupRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'as' }) set _as(as: keyof HTMLElementTagNameMap) {\n\t\tthis.inputs.set({ as });\n\t}\n\n\t@Input({ alias: 'zIndexRange' }) set _zIndexRange(zIndexRange: Array<number>) {\n\t\tthis.inputs.set({ zIndexRange });\n\t}\n\n\t@Input({ alias: 'portal' }) set _portal(portal: NgtRef<HTMLElement>) {\n\t\tthis.inputs.set({ portal });\n\t}\n\n\t@Input({ alias: 'occlude' }) set _occlude(occlude: NgtsHtmlState['occlude']) {\n\t\tthis.inputs.set({ occlude });\n\t}\n\n\t@Input({ alias: 'castShadow' }) set _castShadow(castShadow: NgtsHtmlState['castShadow']) {\n\t\tthis.inputs.set({ castShadow });\n\t}\n\n\t@Input({ alias: 'receiveShadow' }) set _receiveShadow(receiveShadow: NgtsHtmlState['receiveShadow']) {\n\t\tthis.inputs.set({ receiveShadow });\n\t}\n\n\t@Input({ alias: 'material' }) set _material(material: NgtsHtmlState['material']) {\n\t\tthis.inputs.set({ material });\n\t}\n\n\t@Input({ alias: 'geometry' }) set _geometry(geometry: NgtsHtmlState['geometry']) {\n\t\tthis.inputs.set({ geometry });\n\t}\n\n\t@Input({ alias: 'scale' }) set _scale(scale: NgtsHtmlState['scale']) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t@Input({ alias: 'prepend' }) set _prepend(prepend: boolean) {\n\t\tthis.inputs.set({ prepend });\n\t}\n\n\t@Input({ alias: 'transform' }) set _transform(transform: boolean) {\n\t\tthis.inputs.set({ transform });\n\t}\n\n\t@Input({ alias: 'center' }) set _center(center: boolean) {\n\t\tthis.inputs.set({ center });\n\t}\n\n\t@Input({ alias: 'sprite' }) set _sprite(sprite: boolean) {\n\t\tthis.inputs.set({ sprite });\n\t}\n\n\t@Input({ alias: 'fullscreen' }) set _fullscreen(fullscreen: boolean) {\n\t\tthis.inputs.set({ fullscreen });\n\t}\n\n\t@Input({ alias: 'eps' }) set _eps(eps: number) {\n\t\tthis.inputs.set({ eps });\n\t}\n\n\t@Input({ alias: 'distanceFactor' }) set _distanceFactor(distanceFactor: number) {\n\t\tthis.inputs.set({ distanceFactor });\n\t}\n\n\t@Input({ alias: 'wrapperClass' }) set _wrapperClass(wrapperClass: string) {\n\t\tthis.inputs.set({ wrapperClass });\n\t}\n\n\t@Input({ alias: 'renderedDivClass' }) set _renderedDivClass(renderedDivClass: string) {\n\t\tthis.inputs.set({ renderedDivClass });\n\t}\n\n\t@Input({ alias: 'style' }) set _style(style: CSSStyleDeclaration) {\n\t\tthis.inputs.set({ style });\n\t}\n\n\t@Input({ alias: 'pointerEvents' }) set _pointerEvents(pointerEvents: PointerEventsProperties) {\n\t\tthis.inputs.set({ pointerEvents });\n\t}\n\n\t@Input({ alias: 'calculatePosition' }) set _calculatePosition(\n\t\tcalculatePosition: NgtsHtmlState['calculatePosition'],\n\t) {\n\t\tthis.inputs.set({ calculatePosition });\n\t}\n\n\t@Output() occluded = new EventEmitter<boolean>();\n\n\tocclusionMeshRef = injectNgtRef<Mesh>();\n\n\tprivate transform = this.inputs.select('transform');\n\n\tisRayCastOcclusion = computed(() => {\n\t\tconst occlude = this.occlude();\n\t\treturn (\n\t\t\t(occlude && occlude !== 'blending') || (Array.isArray(occlude) && !!occlude.length && is.ref(occlude[0]))\n\t\t);\n\t});\n\n\tocclude = this.inputs.select('occlude');\n\tcastShadow = this.inputs.select('castShadow');\n\treceiveShadow = this.inputs.select('receiveShadow');\n\tgeometry = this.inputs.select('geometry');\n\tmaterial = this.inputs.select('material');\n\tscale = this.inputs.select('scale');\n\n\tshaders = computed(() => {\n\t\tconst transform = this.transform();\n\t\treturn {\n\t\t\tvertexShader: !transform\n\t\t\t\t? /* glsl */ `\n /*\n This shader is from the THREE's SpriteMaterial.\n We need to turn the backing plane into a Sprite\n (make it always face the camera) if \"transfrom\"\n is false.\n */\n #include <common>\n\n void main() {\n vec2 center = vec2(0., 1.);\n float rotation = 0.0;\n\n // This is somewhat arbitrary, but it seems to work well\n // Need to figure out how to derive this dynamically if it even matters\n float size = 0.03;\n\n vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n vec2 scale;\n scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n\n gl_Position = projectionMatrix * mvPosition;\n }\n `\n\t\t\t\t: undefined,\n\t\t\tfragmentShader: /* glsl */ `\n void main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `,\n\t\t};\n\t});\n\n\tstate = {\n\t\tzIndexRange: this.inputs.select('zIndexRange'),\n\t\tprepend: this.inputs.select('prepend'),\n\t\ttransform: this.transform,\n\t\tcenter: this.inputs.select('center'),\n\t\tfullscreen: this.inputs.select('fullscreen'),\n\t\tcalculatePosition: this.inputs.select('calculatePosition'),\n\t\twrapperClass: this.inputs.select('wrapperClass'),\n\t\trenderedDivClass: this.inputs.select('renderedDivClass'),\n\t\tstyle: this.inputs.select('style'),\n\t\tpointerEvents: this.inputs.select('pointerEvents'),\n\t\teps: this.inputs.select('eps'),\n\t\tdistanceFactor: this.inputs.select('distanceFactor'),\n\t\tsprite: this.inputs.select('sprite'),\n\t\tas: this.inputs.select('as'),\n\t\tportal: this.inputs.select('portal'),\n\t\tcontent: this.inputs.select('content'),\n\t\tocclude: this.occlude,\n\t\tisRayCastOcclusion: this.isRayCastOcclusion,\n\t\tocclusionMeshRef: this.occlusionMeshRef,\n\t\toccluded: this.occluded,\n\t\tgeometry: this.geometry,\n\t\tscale: this.scale,\n\t\tgroupRef: this.groupRef,\n\t};\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInjector,\n\tInput,\n\tcomputed,\n\teffect,\n\tinject,\n\trunInInjectionContext,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tNgtGroup,\n\tassertInjectionContext,\n\tcheckUpdate,\n\textend,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtRef,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { MeshSurfaceSampler } from 'three-stdlib';\n\ntype SamplePayload = {\n\t/**\n\t * The position of the sample.\n\t */\n\tposition: THREE.Vector3;\n\t/**\n\t * The normal of the mesh at the sampled position.\n\t */\n\tnormal: THREE.Vector3;\n\t/**\n\t * The vertex color of the mesh at the sampled position.\n\t */\n\tcolor: THREE.Color;\n};\n\ntype TransformPayload = SamplePayload & {\n\t/**\n\t * The dummy object used to transform each instance.\n\t * This object's matrix will be updated after transforming & it will be used\n\t * to set the instance's matrix.\n\t */\n\tdummy: THREE.Object3D;\n\t/**\n\t * The mesh that's initially passed to the sampler.\n\t * Use this if you need to apply transforms from your mesh to your instances\n\t * or if you need to grab attributes from the geometry.\n\t */\n\tsampledMesh: THREE.Mesh;\n};\n\nexport type NgtsSurfaceSamplerTransformFn = (payload: TransformPayload, i: number) => void;\n\nexport type NgtsSurfaceSamplerState = {\n\tcount: number;\n\tmesh: NgtRef<THREE.Mesh>;\n\ttransform?: NgtsSurfaceSamplerTransformFn;\n\tweight?: string;\n\tinstancedMesh?: NgtRef<THREE.InstancedMesh>;\n};\n\nconst defaultState: Omit<NgtsSurfaceSamplerState, 'mesh'> = {\n\tcount: 16,\n};\n\nexport function injectNgtsSurfaceSampler(\n\tsurfaceSamplerState: () => (Partial<Omit<NgtsSurfaceSamplerState, 'mesh'>> & { mesh: NgtRef<THREE.Mesh> }) | null,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsSurfaceSampler, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst state = computed(() => {\n\t\t\tconst _state = surfaceSamplerState();\n\t\t\tif (!_state) return null;\n\t\t\treturn { ...defaultState, ..._state };\n\t\t});\n\t\tconst _buffer = signal(\n\t\t\t(() => {\n\t\t\t\tconst arr = Array.from({ length: state()?.count || defaultState.count }, () => [\n\t\t\t\t\t1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,\n\t\t\t\t]).flat();\n\t\t\t\treturn new THREE.InstancedBufferAttribute(Float32Array.from(arr), 16);\n\t\t\t})(),\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst _state = state();\n\t\t\tif (!_state) return;\n\t\t\tconst { mesh, count, transform, instancedMesh, weight } = _state;\n\t\t\tconst meshObj = is.ref(mesh) ? mesh.nativeElement : mesh;\n\t\t\tif (!meshObj) return;\n\t\t\tconst instancedMeshObj = is.ref(instancedMesh) ? instancedMesh.nativeElement : instancedMesh;\n\t\t\tconst buffer = untracked(_buffer);\n\n\t\t\tconst sampler = new MeshSurfaceSampler(meshObj);\n\n\t\t\tif (weight) {\n\t\t\t\tsampler.setWeightAttribute(weight);\n\t\t\t}\n\n\t\t\tsampler.build();\n\n\t\t\tconst position = new THREE.Vector3();\n\t\t\tconst normal = new THREE.Vector3();\n\t\t\tconst color = new THREE.Color();\n\t\t\tconst dummy = new THREE.Object3D();\n\n\t\t\tmeshObj.updateMatrixWorld(true);\n\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tsampler.sample(position, normal, color);\n\n\t\t\t\tif (typeof transform === 'function') {\n\t\t\t\t\ttransform({ dummy, sampledMesh: meshObj, position, normal, color }, i);\n\t\t\t\t} else {\n\t\t\t\t\tdummy.position.copy(position);\n\t\t\t\t}\n\n\t\t\t\tdummy.updateMatrix();\n\n\t\t\t\tif (instancedMeshObj) {\n\t\t\t\t\tinstancedMeshObj.setMatrixAt(i, dummy.matrix);\n\t\t\t\t}\n\n\t\t\t\tdummy.matrix.toArray(buffer.array, i * 16);\n\t\t\t}\n\n\t\t\tif (instancedMeshObj) {\n\t\t\t\tcheckUpdate(instancedMeshObj.instanceMatrix);\n\t\t\t}\n\n\t\t\tcheckUpdate(buffer);\n\n\t\t\tuntracked(() => {\n\t\t\t\t_buffer.set(buffer.clone() as THREE.InstancedBufferAttribute);\n\t\t\t});\n\t\t});\n\n\t\treturn _buffer.asReadonly();\n\t});\n}\n\nextend({ Group });\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-sampler': NgtsSurfaceSamplerState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-sampler',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"samplerRef\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSampler {\n\tprivate inputs = signalStore<NgtsSurfaceSamplerState>({ count: 16 });\n\n\t@Input() samplerRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'count' }) set _count(count: number) {\n\t\tthis.inputs.set({ count });\n\t}\n\n\t@Input({ alias: 'mesh' }) set _mesh(mesh: NgtRef<THREE.Mesh>) {\n\t\tthis.inputs.set({ mesh });\n\t}\n\n\t@Input({ alias: 'transform' }) set _transform(transform: NgtsSurfaceSamplerTransformFn) {\n\t\tthis.inputs.set({ transform });\n\t}\n\n\t@Input({ alias: 'weight' }) set _weight(weight: string) {\n\t\tthis.inputs.set({ weight });\n\t}\n\n\t@Input({ alias: 'instancedMesh' }) set _instancedMesh(instancedMesh: NgtRef<THREE.InstancedMesh>) {\n\t\tthis.inputs.set({ instancedMesh });\n\t}\n\n\tprivate surfaceSamplerState = computed(() => {\n\t\tconst sampler = this.samplerRef.nativeElement;\n\t\tif (!sampler) return null;\n\t\tconst { count, weight, transform, mesh, instancedMesh } = this.inputs.state();\n\n\t\tconst instancedMeshRef =\n\t\t\tinstancedMesh ??\n\t\t\t(sampler.children.find((child) => child.hasOwnProperty('instanceMatrix')) as THREE.InstancedMesh);\n\n\t\tconst meshRef = mesh ?? (sampler.children.find((child) => child.type === 'Mesh') as THREE.Mesh);\n\n\t\treturn { count, weight, transform, mesh: meshRef, instancedMesh: instancedMeshRef };\n\t});\n\n\tconstructor() {\n\t\tconst injector = inject(Injector);\n\t\teffect(() => {\n\t\t\tinjectNgtsSurfaceSampler(this.surfaceSamplerState, { injector });\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';\nimport { NgtArgs, NgtMesh, extend, injectNgtRef, signalStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { CanvasTexture, Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\n\nexport type NgtsShadowState = {\n\tcolorStop: number;\n\tfog: boolean;\n\tcolor: THREE.ColorRepresentation;\n\topacity: number;\n\tdepthWrite: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-mesh\n\t\t */\n\t\t'ngts-shadow': NgtsShadowState & NgtMesh;\n\t}\n}\n\nextend({ Mesh, CanvasTexture, PlaneGeometry, MeshBasicMaterial });\n\n@Component({\n\tselector: 'ngts-shadow',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh ngtCompound [ref]=\"shadowRef\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[opacity]=\"opacity()\"\n\t\t\t\t[fog]=\"fog()\"\n\t\t\t\t[depthWrite]=\"depthWrite()\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t>\n\t\t\t\t<ngt-canvas-texture *args=\"[canvas()]\" attach=\"map\" />\n\t\t\t</ngt-mesh-basic-material>\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsShadow {\n\tMath = Math;\n\tDoubleSide = THREE.DoubleSide;\n\n\tprivate inputs = signalStore<NgtsShadowState>({\n\t\tfog: false,\n\t\tdepthWrite: false,\n\t\tcolorStop: 0.0,\n\t\tcolor: 'black',\n\t\topacity: 0.5,\n\t});\n\n\t@Input() shadowRef = injectNgtRef<Mesh>();\n\n\t@Input({ alias: 'colorStop' }) set _colorStop(colorStop: number) {\n\t\tthis.inputs.set({ colorStop });\n\t}\n\n\t@Input({ alias: 'fog' }) set _fog(fog: boolean) {\n\t\tthis.inputs.set({ fog });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t@Input({ alias: 'depthWrite' }) set _depthWrite(depthWrite: boolean) {\n\t\tthis.inputs.set({ depthWrite });\n\t}\n\n\tprivate colorStop = this.inputs.select('colorStop');\n\tprivate color = this.inputs.select('color');\n\n\topacity = this.inputs.select('opacity');\n\tfog = this.inputs.select('fog');\n\tdepthWrite = this.inputs.select('depthWrite');\n\n\tcanvas = computed(() => {\n\t\tconst [colorStop, color] = [this.colorStop(), this.color()];\n\t\tconst canvas = document.createElement('canvas');\n\t\tcanvas.width = 128;\n\t\tcanvas.height = 128;\n\t\tconst context = canvas.getContext('2d') as CanvasRenderingContext2D;\n\t\tconst gradient = context.createRadialGradient(\n\t\t\tcanvas.width / 2,\n\t\t\tcanvas.height / 2,\n\t\t\t0,\n\t\t\tcanvas.width / 2,\n\t\t\tcanvas.height / 2,\n\t\t\tcanvas.width / 2,\n\t\t);\n\t\tgradient.addColorStop(colorStop, new THREE.Color(color).getStyle());\n\t\tgradient.addColorStop(1, 'rgba(0,0,0,0)');\n\t\tcontext.fillStyle = gradient;\n\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\treturn canvas;\n\t});\n}\n\n//\n//\n// type Props = JSX.IntrinsicElements['mesh'] & {\n// colorStop?: number\n// fog?: boolean\n// color?: Color | number | string\n// opacity?: number\n// depthWrite?: boolean\n// }\n//\n// export const Shadow = React.forwardRef(\n// (\n// { fog = false, renderOrder, depthWrite = false, colorStop = 0.0, color = 'black', opacity = 0.5, ...props }: Props,\n// ref\n// ) => {\n// const canvas = React.useMemo(() => {\n// const canvas = document.createElement('canvas')\n// canvas.width = 128\n// canvas.height = 128\n// const context = canvas.getContext('2d') as CanvasRenderingContext2D\n// const gradient = context.createRadialGradient(\n// canvas.width / 2,\n// canvas.height / 2,\n// 0,\n// canvas.width / 2,\n// canvas.height / 2,\n// canvas.width / 2\n// )\n// gradient.addColorStop(colorStop, new Color(color).getStyle())\n// gradient.addColorStop(1, 'rgba(0,0,0,0)')\n// context.fillStyle = gradient\n// context.fillRect(0, 0, canvas.width, canvas.height)\n// return canvas\n// }, [color, colorStop])\n// return (\n// <mesh renderOrder={renderOrder} ref={ref as React.MutableRefObject<Mesh>} rotation-x={-Math.PI / 2} {...props}>\n// <planeGeometry />\n// <meshBasicMaterial transparent opacity={opacity} fog={fog} depthWrite={depthWrite} side={DoubleSide}>\n// <canvasTexture attach=\"map\" args={[canvas]} />\n// </meshBasicMaterial>\n// </mesh>\n// )\n// }\n// )\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, Input, computed, effect, inject } from '@angular/core';\nimport { NgtRef, addAfterEffect, addEffect, injectNgtStore, is, signalStore } from 'angular-three';\nimport Stats from 'stats-gl';\n\nexport type NgtsStatsGLState = {\n\tparent?: NgtRef<HTMLElement>;\n\tcontainerClass?: string;\n\tconfig?: ConstructorParameters<typeof Stats>[0];\n};\n\n@Directive({ selector: 'ngts-stats-gl', standalone: true })\nexport class NgtsStatsGL {\n\tprivate inputs = signalStore<NgtsStatsGLState>();\n\n\t@Input({ alias: 'parent' }) set _parent(parent: NgtRef<HTMLElement>) {\n\t\tthis.inputs.set({ parent });\n\t}\n\n\t@Input({ alias: 'containerClass' }) set _containerClass(containerClass: string) {\n\t\tthis.inputs.set({ containerClass });\n\t}\n\n\t@Input({ alias: 'config' }) set _config(config: NgtsStatsGLState['config']) {\n\t\tthis.inputs.set({ config });\n\t}\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectNgtStore();\n\tprivate gl = this.store.select('gl');\n\n\tprivate config = this.inputs.select('config');\n\tprivate parent = this.inputs.select('parent');\n\tprivate containerClass = this.inputs.select('containerClass');\n\n\tprivate stats = computed(() => {\n\t\tconst [config, gl] = [this.config() || {}, this.gl()];\n\t\tconst stats = new Stats(config);\n\t\tstats.init(gl.domElement);\n\t\treturn stats;\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [parent, stats, containerClass] = [this.parent(), this.stats(), this.containerClass()];\n\t\t\tconst node = parent ? (is.ref(parent) ? parent.nativeElement : parent) : this.document.body;\n\t\t\tnode.appendChild(stats.container);\n\t\t\tif (containerClass) stats.container.classList.add(...containerClass.split(' ').filter(Boolean));\n\n\t\t\tconst begin = addEffect(() => stats.begin());\n\t\t\tconst end = addAfterEffect(() => stats.end());\n\t\t\tonCleanup(() => {\n\t\t\t\tnode.removeChild(stats.container);\n\t\t\t\tbegin();\n\t\t\t\tend();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { Texture } from 'three';\n\nexport type Point = {\n\tx: number;\n\ty: number;\n\tage: number;\n\tforce: number;\n};\n\nexport type TrailConfig = {\n\t/** texture size (default: 256x256) */\n\tsize?: number;\n\t/** Max age (ms) of trail points (default: 750) */\n\tmaxAge?: number;\n\t/** Trail radius (default: 0.3) */\n\tradius?: number;\n\t/** Canvas trail opacity (default: 0.2) */\n\tintensity?: number;\n\t/** Add points in between slow pointer events (default: 0) */\n\tinterpolate?: number;\n\t/** Moving average of pointer force (default: 0) */\n\tsmoothing?: number;\n\t/** Minimum pointer force (default: 0.3) */\n\tminForce?: number;\n\t/** Blend mode (default: 'screen') */\n\tblend?: CanvasRenderingContext2D['globalCompositeOperation'];\n\t/** Easing (default: easeCircOut) */\n\tease?: (t: number) => number;\n};\n\n// default ease\nconst easeCircleOut = (x: number) => Math.sqrt(1 - Math.pow(x - 1, 2));\n\n// smooth new sample (measurement) based on previous sample (current)\nfunction smoothAverage(current: number, measurement: number, smoothing = 0.9) {\n\treturn measurement * smoothing + current * (1.0 - smoothing);\n}\n\nexport class TrailTexture {\n\ttrail: Point[];\n\tcanvas!: HTMLCanvasElement;\n\tctx!: CanvasRenderingContext2D;\n\ttexture!: Texture;\n\tforce: number;\n\tsize: number;\n\tmaxAge: number;\n\tradius: number;\n\tintensity: number;\n\tease: (t: number) => number;\n\tminForce: number;\n\tinterpolate: number;\n\tsmoothing: number;\n\tblend: CanvasRenderingContext2D['globalCompositeOperation'];\n\n\tconstructor({\n\t\tsize = 256,\n\t\tmaxAge = 750,\n\t\tradius = 0.3,\n\t\tintensity = 0.2,\n\t\tinterpolate = 0,\n\t\tsmoothing = 0,\n\t\tminForce = 0.3,\n\t\tblend = 'screen', // source-over is canvas default. Others are slower\n\t\tease = easeCircleOut,\n\t}: TrailConfig = {}) {\n\t\tthis.size = size;\n\t\tthis.maxAge = maxAge;\n\t\tthis.radius = radius;\n\t\tthis.intensity = intensity;\n\t\tthis.ease = ease;\n\t\tthis.interpolate = interpolate;\n\t\tthis.smoothing = smoothing;\n\t\tthis.minForce = minForce;\n\t\tthis.blend = blend as GlobalCompositeOperation;\n\n\t\tthis.trail = [];\n\t\tthis.force = 0;\n\t\tthis.initTexture();\n\t}\n\n\tinitTexture() {\n\t\tthis.canvas = document.createElement('canvas');\n\t\tthis.canvas.width = this.canvas.height = this.size;\n\t\tthis.ctx = this.canvas.getContext('2d')!;\n\t\tthis.ctx.fillStyle = 'black';\n\t\tthis.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\n\t\tthis.texture = new Texture(this.canvas);\n\n\t\tthis.canvas.id = 'touchTexture';\n\t\tthis.canvas.style.width = this.canvas.style.height = `${this.canvas.width}px`;\n\t}\n\n\tupdate(delta: number) {\n\t\tthis.clear();\n\n\t\t// age points\n\t\tthis.trail.forEach((point, i) => {\n\t\t\tpoint.age += delta * 1000;\n\t\t\t// remove old\n\t\t\tif (point.age > this.maxAge) {\n\t\t\t\tthis.trail.splice(i, 1);\n\t\t\t}\n\t\t});\n\n\t\t// reset force when empty (when smoothing)\n\t\tif (!this.trail.length) this.force = 0;\n\n\t\tthis.trail.forEach((point) => {\n\t\t\tthis.drawTouch(point);\n\t\t});\n\n\t\tthis.texture.needsUpdate = true;\n\t}\n\n\tclear() {\n\t\tthis.ctx.globalCompositeOperation = 'source-over';\n\t\tthis.ctx.fillStyle = 'black';\n\t\tthis.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\t}\n\n\taddTouch(point: Pick<Point, 'x' | 'y'>) {\n\t\tconst last = this.trail[this.trail.length - 1];\n\n\t\tif (last) {\n\t\t\tconst dx = last.x - point.x;\n\t\t\tconst dy = last.y - point.y;\n\t\t\tconst dd = dx * dx + dy * dy;\n\n\t\t\tconst force = Math.max(this.minForce, Math.min(dd * 10000, 1));\n\n\t\t\tthis.force = smoothAverage(force, this.force, this.smoothing);\n\n\t\t\tif (!!this.interpolate) {\n\t\t\t\tconst lines = Math.ceil(dd / Math.pow((this.radius * 0.5) / this.interpolate, 2));\n\n\t\t\t\tif (lines > 1) {\n\t\t\t\t\tfor (let i = 1; i < lines; i++) {\n\t\t\t\t\t\tthis.trail.push({\n\t\t\t\t\t\t\tx: last.x - (dx / lines) * i,\n\t\t\t\t\t\t\ty: last.y - (dy / lines) * i,\n\t\t\t\t\t\t\tage: 0,\n\t\t\t\t\t\t\tforce,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.trail.push({ x: point.x, y: point.y, age: 0, force: this.force });\n\t}\n\n\tdrawTouch(point: Point) {\n\t\tconst pos = {\n\t\t\tx: point.x * this.size,\n\t\t\ty: (1 - point.y) * this.size,\n\t\t};\n\n\t\tlet intensity = 1;\n\t\tif (point.age < this.maxAge * 0.3) {\n\t\t\tintensity = this.ease(point.age / (this.maxAge * 0.3));\n\t\t} else {\n\t\t\tintensity = this.ease(1 - (point.age - this.maxAge * 0.3) / (this.maxAge * 0.7));\n\t\t}\n\n\t\tintensity *= point.force;\n\n\t\t// apply blending\n\t\tthis.ctx.globalCompositeOperation = this.blend;\n\n\t\tconst radius = this.size * this.radius * intensity;\n\t\tconst grd = this.ctx.createRadialGradient(\n\t\t\tpos.x,\n\t\t\tpos.y,\n\t\t\tMath.max(0, radius * 0.25),\n\t\t\tpos.x,\n\t\t\tpos.y,\n\t\t\tMath.max(0, radius),\n\t\t);\n\t\tgrd.addColorStop(0, `rgba(255, 255, 255, ${this.intensity})`);\n\t\tgrd.addColorStop(1, `rgba(0, 0, 0, 0.0)`);\n\n\t\tthis.ctx.beginPath();\n\t\tthis.ctx.fillStyle = grd;\n\t\tthis.ctx.arc(pos.x, pos.y, Math.max(0, radius), 0, Math.PI * 2);\n\t\tthis.ctx.fill();\n\t}\n}\n","import { Injector, computed, runInInjectionContext } from '@angular/core';\nimport { NgtThreeEvent, assertInjectionContext, injectBeforeRender } from 'angular-three';\nimport { TrailTexture, type TrailConfig } from './trail-texture';\n\nexport function injectNgtsTrailTexture(\n\ttrailConfigFn: () => Partial<TrailConfig>,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsTrailTexture, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst config = computed(() => trailConfigFn() || {});\n\t\tconst trail = computed(() => new TrailTexture(config()));\n\t\tconst texture = computed(() => trail().texture);\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\ttrail().update(delta);\n\t\t});\n\n\t\tconst onMove = (ev: NgtThreeEvent<PointerEvent>) => trail().addTouch(ev.uv!);\n\n\t\treturn { texture, onMove };\n\t});\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInput,\n\tcomputed,\n\teffect,\n\trunInInjectionContext,\n\ttype Injector,\n} from '@angular/core';\nimport {\n\tNgtPortal,\n\tNgtPortalContent,\n\tNgtRef,\n\tassertInjectionContext,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tis,\n\tsignalStore,\n} from 'angular-three';\nimport { MeshLineGeometry, MeshLineMaterial } from 'meshline';\nimport * as THREE from 'three';\nimport { Group, Mesh } from 'three';\n\nconst shiftLeft = (collection: Float32Array, steps = 1): Float32Array => {\n\tcollection.set(collection.subarray(steps));\n\tcollection.fill(-Infinity, -steps);\n\treturn collection;\n};\n\nexport type NgtsTrailSettings = {\n\twidth: number;\n\tlength: number;\n\tdecay: number;\n\t/**\n\t * Wether to use the target's world or local positions\n\t */\n\tlocal: boolean;\n\t// Min distance between previous and current points\n\tstride: number;\n\t// Number of frames to wait before next calculation\n\tinterval: number;\n};\n\nconst defaultSettings: NgtsTrailSettings = {\n\twidth: 0.2,\n\tlength: 1,\n\tdecay: 1,\n\tlocal: false,\n\tstride: 0,\n\tinterval: 1,\n};\n\nexport function injectNgtsTrail(\n\ttargetFactory: () => NgtRef<THREE.Object3D> | null,\n\tsettingsFactory: () => Partial<NgtsTrailSettings>,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsTrail, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst points = injectNgtRef<Float32Array>();\n\t\tlet frameCount = 0;\n\n\t\tconst prevPosition = new THREE.Vector3();\n\t\tconst worldPosition = new THREE.Vector3();\n\n\t\tconst _target = computed(() => {\n\t\t\tconst _target = targetFactory();\n\t\t\tif (is.ref(_target)) return _target.nativeElement;\n\t\t\treturn _target;\n\t\t});\n\n\t\tconst _settings = computed(() => ({ ...defaultSettings, ...settingsFactory() }));\n\t\tconst _length = computed(() => _settings().length);\n\n\t\teffect(() => {\n\t\t\tconst [target, length] = [_target(), _length()];\n\t\t\tif (target) {\n\t\t\t\tpoints.nativeElement = Float32Array.from({ length: length * 10 * 3 }, (_, i) =>\n\t\t\t\t\ttarget.position.getComponent(i % 3),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [target, _points, { local, decay, stride, interval }] = [\n\t\t\t\t_target(),\n\t\t\t\tpoints.nativeElement,\n\t\t\t\t_settings(),\n\t\t\t];\n\t\t\tif (!target) return;\n\t\t\tif (!_points) return;\n\n\t\t\tif (frameCount === 0) {\n\t\t\t\tlet newPosition: THREE.Vector3;\n\t\t\t\tif (local) {\n\t\t\t\t\tnewPosition = target.position;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.getWorldPosition(worldPosition);\n\t\t\t\t\tnewPosition = worldPosition;\n\t\t\t\t}\n\n\t\t\t\tconst steps = 1 * decay;\n\t\t\t\tfor (let i = 0; i < steps; i++) {\n\t\t\t\t\tif (newPosition.distanceTo(prevPosition) < stride) continue;\n\n\t\t\t\t\tshiftLeft(_points, 3);\n\t\t\t\t\t_points.set(newPosition.toArray(), _points.length - 3);\n\t\t\t\t}\n\t\t\t\tprevPosition.copy(newPosition);\n\t\t\t}\n\n\t\t\tframeCount++;\n\t\t\tframeCount = frameCount % interval;\n\t\t});\n\n\t\treturn points;\n\t});\n}\n\nexport type NgtsTrailState = {\n\tcolor: THREE.ColorRepresentation;\n\tattenuation: (width: number) => number;\n\tsettings: NgtsTrailSettings;\n\ttarget?: NgtRef<THREE.Object3D>;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-trail': NgtsTrailState;\n\t}\n}\n\nextend({ Group, Mesh });\n\n@Component({\n\tselector: 'ngts-trail',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group>\n\t\t\t<ngt-portal [container]=\"scene()\" [autoRender]=\"false\">\n\t\t\t\t<ng-template ngtPortalContent>\n\t\t\t\t\t<ngt-mesh [ref]=\"trailRef\" [geometry]=\"geometry\" [material]=\"material()\" />\n\t\t\t\t</ng-template>\n\t\t\t</ngt-portal>\n\t\t\t<ngt-group [ref]=\"groupRef\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtPortal, NgtPortalContent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsTrail {\n\tprivate inputs = signalStore<NgtsTrailState>({ settings: defaultSettings, color: 'hotpink' });\n\n\t@Input() trailRef = injectNgtRef<Mesh>();\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'attenuation' }) set _attenuation(attenuation: (width: number) => number) {\n\t\tthis.inputs.set({ attenuation });\n\t}\n\n\t@Input({ alias: 'target' }) set _target(target: NgtRef<THREE.Object3D>) {\n\t\tthis.inputs.set({ target });\n\t}\n\n\t@Input({ alias: 'settings' }) set _settings(settings: Partial<NgtsTrailSettings>) {\n\t\tthis.inputs.set({ settings: { ...defaultSettings, ...settings } });\n\t}\n\n\tgroupRef = injectNgtRef<Group>();\n\n\tprivate children = this.groupRef.children('both');\n\n\tprivate store = injectNgtStore();\n\tprivate size = this.store.select('size');\n\n\tprivate target = this.inputs.select('target');\n\tprivate settings = this.inputs.select('settings');\n\tprivate width = computed(() => this.settings().width);\n\tprivate color = this.inputs.select('color');\n\tprivate attenuation = this.inputs.select('attenuation');\n\n\tprivate anchor = computed(() => {\n\t\tconst target = this.target();\n\t\tif (target) return target;\n\t\tconst group = this.groupRef.nativeElement;\n\t\tif (group) {\n\t\t\treturn group.children.find((child) => child instanceof THREE.Object3D) || null;\n\t\t}\n\t\treturn null;\n\t});\n\n\tprivate points = injectNgtsTrail(this.anchor, this.settings);\n\n\tscene = this.store.select('scene');\n\tgeometry = new MeshLineGeometry();\n\tmaterial = computed(() => {\n\t\tconst [width, color, size] = [this.width(), this.color(), this.size()];\n\n\t\tconst m = new MeshLineMaterial({\n\t\t\tlineWidth: 0.1 * width,\n\t\t\tcolor,\n\t\t\tsizeAttenuation: 1,\n\t\t\tresolution: new THREE.Vector2(size.width, size.height),\n\t\t});\n\n\t\t// TODO: understand this first\n\t\t// Get and apply first <meshLineMaterial /> from children\n\t\t// let matOverride: React.ReactElement | undefined;\n\t\t// if (children) {\n\t\t// \tif (Array.isArray(children)) {\n\t\t// \t\tmatOverride = children.find((child: React.ReactNode) => {\n\t\t// \t\t\tconst c = child as React.ReactElement;\n\t\t// \t\t\treturn typeof c.type === 'string' && c.type === 'meshLineMaterial';\n\t\t// \t\t}) as React.ReactElement | undefined;\n\t\t// \t} else {\n\t\t// \t\tconst c = children as React.ReactElement;\n\t\t// \t\tif (typeof c.type === 'string' && c.type === 'meshLineMaterial') {\n\t\t// \t\t\tmatOverride = c;\n\t\t// \t\t}\n\t\t// \t}\n\t\t// }\n\t\t// if (typeof matOverride?.props === 'object') {\n\t\t// \tm.setValues(matOverride.props);\n\t\t// }\n\n\t\treturn m;\n\t});\n\n\tconstructor() {\n\t\tthis.setMaterialSize();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate setMaterialSize() {\n\t\teffect(() => {\n\t\t\tconst [material, size] = [this.material(), this.size()];\n\t\t\tmaterial.uniforms['resolution'].value.set(size.width, size.height);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [points, attenuation] = [this.points.nativeElement, this.attenuation()];\n\t\t\tif (!points) return;\n\t\t\tthis.geometry.setPoints(points, attenuation);\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/soba/misc/src/lib/animations.ts","../../../../libs/soba/misc/src/lib/bake-shadows.ts","../../../../libs/soba/misc/src/lib/computed-attribute.ts","../../../../libs/soba/misc/src/lib/constants.ts","../../../../libs/soba/misc/src/lib/decal.ts","../../../../libs/soba/misc/src/lib/deprecated.ts","../../../../libs/soba/misc/src/lib/fbo.ts","../../../../libs/soba/misc/src/lib/depth-buffer.ts","../../../../libs/soba/misc/src/lib/html/html.ts","../../../../libs/soba/misc/src/lib/html/utils.ts","../../../../libs/soba/misc/src/lib/html/html-content.ts","../../../../libs/soba/misc/src/lib/intersect.ts","../../../../libs/soba/misc/src/lib/sampler.ts","../../../../libs/soba/misc/src/lib/scale-factor.ts","../../../../libs/soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { computed, effect, ElementRef, Injector, isSignal, signal, untracked } from '@angular/core';\nimport { injectBeforeRender, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { AnimationAction, AnimationClip, AnimationMixer, Object3D } from 'three';\n\ntype NgtsAnimationApi<T extends AnimationClip> = {\n\tclips: AnimationClip[];\n\tmixer: AnimationMixer;\n\tnames: T['name'][];\n\tactions: { [key in T['name']]: AnimationAction | null };\n};\n\nexport type NgtsAnimation<TAnimation extends AnimationClip = AnimationClip> =\n\t| TAnimation[]\n\t| { animations: TAnimation[] };\n\n/**\n * Use afterNextRender\n */\nexport function injectAnimations<TAnimation extends AnimationClip>(\n\tanimations: () => NgtsAnimation<TAnimation> | undefined | null,\n\tobject: ElementRef<Object3D> | Object3D | (() => ElementRef<Object3D> | Object3D | undefined | null),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectAnimations, injector, () => {\n\t\tconst mixer = new AnimationMixer(null!);\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tif (!mixer.getRoot()) return;\n\t\t\tmixer.update(delta);\n\t\t});\n\n\t\tlet cached = {} as Record<string, AnimationAction>;\n\t\tconst actions = {} as NgtsAnimationApi<TAnimation>['actions'];\n\t\tconst clips = [] as NgtsAnimationApi<TAnimation>['clips'];\n\t\tconst names = [] as NgtsAnimationApi<TAnimation>['names'];\n\n\t\tconst actualObject = computed(() => {\n\t\t\tif (isSignal(object) || typeof object === 'function') {\n\t\t\t\treturn resolveRef(object());\n\t\t\t}\n\n\t\t\treturn resolveRef(object);\n\t\t});\n\n\t\tconst ready = signal(false);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst obj = actualObject() as Object3D | undefined;\n\t\t\tif (!obj) return;\n\t\t\tObject.assign(mixer, { _root: obj });\n\n\t\t\tconst maybeAnimationClips = animations();\n\t\t\tif (!maybeAnimationClips) return;\n\n\t\t\tconst animationClips = Array.isArray(maybeAnimationClips) ? maybeAnimationClips : maybeAnimationClips.animations;\n\n\t\t\tfor (let i = 0; i < animationClips.length; i++) {\n\t\t\t\tconst clip = animationClips[i];\n\n\t\t\t\tnames.push(clip.name);\n\t\t\t\tclips.push(clip);\n\n\t\t\t\tif (!actions[clip.name as TAnimation['name']]) {\n\t\t\t\t\tObject.defineProperty(actions, clip.name, {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tget: () => {\n\t\t\t\t\t\t\tif (!cached[clip.name]) {\n\t\t\t\t\t\t\t\tcached[clip.name] = mixer.clipAction(clip, obj);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn cached[clip.name];\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuntracked(() => {\n\t\t\t\tif (!ready()) {\n\t\t\t\t\tready.set(true);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tonCleanup(() => {\n\t\t\t\t// clear cached\n\t\t\t\tcached = {};\n\t\t\t\t// stop all actions\n\t\t\t\tmixer.stopAllAction();\n\t\t\t\t// uncache actions\n\t\t\t\tObject.values(actions).forEach((action) => {\n\t\t\t\t\tmixer.uncacheAction(action as AnimationClip, obj);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\treturn { clips, mixer, actions, names, ready };\n\t});\n}\n","import { Directive } from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\n\n@Directive({ standalone: true, selector: 'ngts-bake-shadows' })\nexport class NgtsBakeShadows {\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\t\tautoEffect(() => {\n\t\t\tconst _gl = gl();\n\t\t\t_gl.shadowMap.autoUpdate = false;\n\t\t\t_gl.shadowMap.needsUpdate = true;\n\t\t\treturn () => {\n\t\t\t\t_gl.shadowMap.autoUpdate = _gl.shadowMap.needsUpdate = true;\n\t\t\t};\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tafterNextRender,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtBufferAttribute, getLocalState } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { BufferAttribute, BufferGeometry } from 'three';\n\n@Component({\n\tselector: 'ngts-computed-attribute',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive #attribute *args=\"[bufferAttribute]\" [attach]=\"['attributes', name()]\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\n/**\n * Used exclusively as a child of a BufferGeometry.\n * Computes the BufferAttribute by calling the `compute` function\n * and attaches the attribute to the geometry.\n */\nexport class NgtsComputedAttribute {\n\tcompute = input.required<(geometry: BufferGeometry) => BufferAttribute>();\n\tname = input.required<string>();\n\toptions = input({} as Partial<NgtBufferAttribute>);\n\n\tbufferAttribute = new BufferAttribute(new Float32Array(0), 1);\n\tattributeRef = viewChild<ElementRef<BufferAttribute>>('attribute');\n\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst bufferAttribute = this.attributeRef()?.nativeElement;\n\t\t\t\tif (!bufferAttribute) return;\n\n\t\t\t\tconst localState = getLocalState(bufferAttribute);\n\t\t\t\tif (!localState) return;\n\n\t\t\t\tconst geometry = ((bufferAttribute as any).parent as BufferGeometry) ?? localState.parent();\n\n\t\t\t\tconst attribute = this.compute()(geometry);\n\t\t\t\tbufferAttribute.copy(attribute);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { REVISION } from 'three';\n\nexport function getVersion() {\n\treturn parseInt(REVISION.replace(/\\D+/g, ''));\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { applyProps, extend, getLocalState, NgtMesh, omit, pick, resolveRef } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { AxesHelper, BoxGeometry, Euler, Mesh, MeshNormalMaterial, Object3D, Texture, Vector3 } from 'three';\nimport { DecalGeometry } from 'three-stdlib';\n\nexport interface NgtsDecalOptions extends Partial<NgtMesh> {\n\tpolygonOffsetFactor: number;\n\tdepthTest: boolean;\n\tdebug: boolean;\n\tmap?: Texture | null;\n}\n\nconst defaultOptions: NgtsDecalOptions = {\n\tpolygonOffsetFactor: -10,\n\tdebug: false,\n\tdepthTest: false,\n};\n\n@Component({\n\tselector: 'ngts-decal',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.transparent\" />\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.polygonOffset\" />\n\t\t\t<ngt-value [rawValue]=\"map()\" attach=\"material.map\" />\n\n\t\t\t<ng-content>\n\t\t\t\t<!-- we only want to pass through these material properties if they don't use a custom material -->\n\t\t\t\t<ngt-value [rawValue]=\"polygonOffsetFactor()\" attach=\"material.polygonOffsetFactor\" />\n\t\t\t\t<ngt-value [rawValue]=\"depthTest()\" attach=\"material.depthTest\" />\n\t\t\t</ng-content>\n\n\t\t\t@if (debug()) {\n\t\t\t\t<ngt-mesh #helper>\n\t\t\t\t\t<ngt-box-geometry />\n\t\t\t\t\t<ngt-mesh-normal-material [wireframe]=\"true\" />\n\t\t\t\t\t<ngt-axes-helper />\n\t\t\t\t</ngt-mesh>\n\t\t\t}\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsDecal {\n\tmesh = input<ElementRef<Mesh> | Mesh | null>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'debug',\n\t\t'map',\n\t\t'depthTest',\n\t\t'polygonOffsetFactor',\n\t\t'position',\n\t\t'scale',\n\t\t'rotation',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\thelperRef = viewChild<ElementRef<Mesh>>('helper');\n\n\tmap = pick(this.options, 'map');\n\tdepthTest = pick(this.options, 'depthTest');\n\tpolygonOffsetFactor = pick(this.options, 'polygonOffsetFactor');\n\tdebug = pick(this.options, 'debug');\n\tprivate position = pick(this.options, 'position');\n\tprivate rotation = pick(this.options, 'rotation');\n\tprivate scale = pick(this.options, 'scale');\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry, MeshNormalMaterial, AxesHelper });\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst thisMesh = this.meshRef().nativeElement;\n\t\t\t\tconst localState = getLocalState(thisMesh);\n\t\t\t\tif (!localState) return;\n\n\t\t\t\tconst mesh = resolveRef(this.mesh());\n\t\t\t\tconst parent = mesh || localState.parent();\n\n\t\t\t\tif (parent && !(parent as Mesh).isMesh) {\n\t\t\t\t\tthrow new Error('<ngts-decal> must have a Mesh as parent or specify its \"mesh\" input');\n\t\t\t\t}\n\n\t\t\t\tif (!parent) return;\n\n\t\t\t\tconst [position, rotation, scale] = [this.position(), this.rotation(), this.scale()];\n\t\t\t\tconst state = {\n\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\trotation: new Euler(),\n\t\t\t\t\tscale: new Vector3(1, 1, 1),\n\t\t\t\t};\n\n\t\t\t\tapplyProps(state, { position, scale });\n\n\t\t\t\t// zero out the parents matrix world for this operation\n\t\t\t\tconst matrixWorld = parent.matrixWorld.clone();\n\t\t\t\tparent.matrixWorld.identity();\n\n\t\t\t\tif (!rotation || typeof rotation === 'number') {\n\t\t\t\t\tconst o = new Object3D();\n\t\t\t\t\to.position.copy(state.position);\n\t\t\t\t\to.lookAt(parent.position);\n\t\t\t\t\tif (typeof rotation === 'number') o.rotateZ(rotation);\n\t\t\t\t\tapplyProps(state, { rotation: o.rotation });\n\t\t\t\t} else {\n\t\t\t\t\tapplyProps(state, { rotation });\n\t\t\t\t}\n\n\t\t\t\tthisMesh.geometry = new DecalGeometry(parent, state.position, state.rotation, state.scale);\n\t\t\t\tconst helper = this.helperRef()?.nativeElement;\n\t\t\t\tif (helper) {\n\t\t\t\t\tapplyProps(helper, state);\n\t\t\t\t\t// Prevent the helpers from blocking rays\n\t\t\t\t\thelper.traverse((child) => (child.raycast = () => null));\n\t\t\t\t}\n\n\t\t\t\t// Reset parents matrix-world\n\t\t\t\tparent.matrixWorld = matrixWorld;\n\n\t\t\t\treturn () => {\n\t\t\t\t\tthisMesh.geometry.dispose();\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\t}\n}\n","import { BufferAttribute } from 'three';\n\n/**\n * NOTE: Sets `BufferAttribute.updateRange` since r159.\n */\nexport const setUpdateRange = (attribute: BufferAttribute, updateRange: { offset: number; count: number }): void => {\n\tif ('updateRanges' in attribute) {\n\t\t// attribute.updateRanges[0] = updateRange;\n\t\tattribute.addUpdateRange(updateRange.offset, updateRange.count);\n\t} else {\n\t\tObject.assign(attribute, { updateRange });\n\t}\n};\n\nexport const LinearEncoding = 3000;\nexport const sRGBEncoding = 3001;\n\n/**\n * NOTE: TextureEncoding was deprecated in r152, and removed in r162.\n */\nexport type TextureEncoding = typeof LinearEncoding | typeof sRGBEncoding;\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tTemplateRef,\n\tViewContainerRef,\n\tafterNextRender,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport {\n\tColorSpace,\n\tDepthTexture,\n\tFloatType,\n\tHalfFloatType,\n\tLinearFilter,\n\tMagnificationTextureFilter,\n\tMinificationTextureFilter,\n\tTextureDataType,\n\tWebGLRenderTarget,\n\tWrapping,\n} from 'three';\nimport { TextureEncoding } from './deprecated';\n\ninterface FBOSettings {\n\t/** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n\tsamples?: number;\n\t/** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n\tdepth?: boolean;\n\n\t// WebGLRenderTargetOptions => RenderTargetOptions\n\twrapS?: Wrapping | undefined;\n\twrapT?: Wrapping | undefined;\n\tmagFilter?: MagnificationTextureFilter | undefined;\n\tminFilter?: MinificationTextureFilter | undefined;\n\tformat?: number | undefined; // RGBAFormat;\n\ttype?: TextureDataType | undefined; // UnsignedByteType;\n\tanisotropy?: number | undefined; // 1;\n\tdepthBuffer?: boolean | undefined; // true;\n\tstencilBuffer?: boolean | undefined; // false;\n\tgenerateMipmaps?: boolean | undefined; // true;\n\tdepthTexture?: DepthTexture | undefined;\n\tencoding?: TextureEncoding | undefined;\n\tcolorSpace?: ColorSpace | undefined;\n}\n\nexport interface NgtsFBOParams {\n\twidth?: number | FBOSettings;\n\theight?: number;\n\tsettings?: FBOSettings;\n}\n\nexport function injectFBO(params: () => NgtsFBOParams, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectFBO, injector, () => {\n\t\tconst store = injectStore();\n\t\tconst size = store.select('size');\n\t\tconst viewport = store.select('viewport');\n\n\t\tconst width = computed(() => {\n\t\t\tconst { width } = params();\n\t\t\treturn typeof width === 'number' ? width : size().width * viewport().dpr;\n\t\t});\n\t\tconst height = computed(() => {\n\t\t\tconst { height } = params();\n\t\t\treturn typeof height === 'number' ? height : size().height * viewport().dpr;\n\t\t});\n\t\tconst settings = computed(() => {\n\t\t\tconst { width, settings } = params();\n\t\t\tconst _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\t\t\tif (_settings.samples === undefined) {\n\t\t\t\t_settings.samples = 0;\n\t\t\t}\n\t\t\treturn _settings;\n\t\t});\n\n\t\tconst target = computed(() => {\n\t\t\tconst [{ samples = 0, depth, ...targetSettings }, _width, _height] = [\n\t\t\t\tuntracked(settings),\n\t\t\t\tuntracked(width),\n\t\t\t\tuntracked(height),\n\t\t\t];\n\t\t\tconst target = new WebGLRenderTarget(_width, _height, {\n\t\t\t\tminFilter: LinearFilter,\n\t\t\t\tmagFilter: LinearFilter,\n\t\t\t\ttype: HalfFloatType,\n\t\t\t\t...targetSettings,\n\t\t\t});\n\n\t\t\tif (depth) {\n\t\t\t\ttarget.depthTexture = new DepthTexture(_width, _height, FloatType);\n\t\t\t}\n\n\t\t\ttarget.samples = samples;\n\t\t\treturn target;\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [{ samples = 0 }, _width, _height, _target] = [settings(), width(), height(), target()];\n\t\t\t_target.setSize(_width, _height);\n\t\t\tif (samples) _target.samples = samples;\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => target().dispose());\n\n\t\treturn target;\n\t});\n}\n\n@Directive({ selector: 'ng-template[fbo]', standalone: true })\nexport class NgtsFBO {\n\tfbo = input({} as { width: NgtsFBOParams['width']; height: NgtsFBOParams['height'] } & FBOSettings);\n\n\tprivate template = inject(TemplateRef);\n\tprivate viewContainerRef = inject(ViewContainerRef);\n\n\tconstructor() {\n\t\tlet ref: EmbeddedViewRef<{ $implicit: ReturnType<typeof injectFBO> }>;\n\t\tconst injector = inject(Injector);\n\n\t\tafterNextRender(() => {\n\t\t\tconst fboTarget = injectFBO(\n\t\t\t\t() => {\n\t\t\t\t\tconst { width, height, ...settings } = this.fbo();\n\t\t\t\t\treturn { width, height, settings };\n\t\t\t\t},\n\t\t\t\t{ injector },\n\t\t\t);\n\n\t\t\tuntracked(() => {\n\t\t\t\tref = this.viewContainerRef.createEmbeddedView(this.template, { $implicit: fboTarget });\n\t\t\t\tref.detectChanges();\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(_: NgtsFBO, ctx: unknown): ctx is { $implicit: ReturnType<typeof injectFBO> } {\n\t\treturn true;\n\t}\n}\n","import { computed, Injector } from '@angular/core';\nimport { injectBeforeRender, injectStore, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { DepthFormat, DepthTexture, UnsignedShortType } from 'three';\nimport { injectFBO } from './fbo';\n\nexport function injectDepthBuffer(\n\tparams: () => { size?: number; frames?: number } = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectDepthBuffer, injector, () => {\n\t\tconst size = computed(() => params().size || 256);\n\t\tconst frames = computed(() => params().frames || Infinity);\n\n\t\tconst store = injectStore();\n\t\tconst width = store.select('size', 'width');\n\t\tconst height = store.select('size', 'height');\n\t\tconst dpr = store.select('viewport', 'dpr');\n\n\t\tconst w = computed(() => size() || width() * dpr());\n\t\tconst h = computed(() => size() || height() * dpr());\n\n\t\tconst depthConfig = computed(() => {\n\t\t\tconst depthTexture = new DepthTexture(w(), h());\n\t\t\tdepthTexture.format = DepthFormat;\n\t\t\tdepthTexture.type = UnsignedShortType;\n\t\t\treturn { depthTexture };\n\t\t});\n\n\t\tconst depthFBO = injectFBO(() => ({\n\t\t\twidth: w(),\n\t\t\theight: h(),\n\t\t\tsettings: depthConfig(),\n\t\t}));\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(({ gl, scene, camera }) => {\n\t\t\tif (frames() === Infinity || count < frames()) {\n\t\t\t\tgl.setRenderTarget(depthFBO());\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\n\t\treturn pick(depthFBO, 'depthTexture');\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, is, NgtGroup, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { DoubleSide, Group, Mesh, Object3D, PlaneGeometry, ShaderMaterial } from 'three';\n\nexport interface NgtsHTMLOptions extends Partial<NgtGroup> {\n\tocclude: ElementRef<Object3D>[] | Object3D[] | boolean | 'raycast' | 'blending';\n\ttransform: boolean;\n\tcastShadow: boolean;\n\treceiveShadow: boolean;\n}\n\nconst defaultHtmlOptions: NgtsHTMLOptions = {\n\tocclude: false,\n\ttransform: false,\n\tcastShadow: false,\n\treceiveShadow: false,\n};\n\n@Component({\n\tselector: 'ngts-html',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t@if (occlude() && !isRaycastOcclusion()) {\n\t\t\t\t<ngt-mesh #occlusionMesh [castShadow]=\"castShadow()\" [receiveShadow]=\"receiveShadow()\">\n\t\t\t\t\t<ng-content select=\"[data-occlusion-geometry]\">\n\t\t\t\t\t\t<ngt-plane-geometry #occlusionGeometry />\n\t\t\t\t\t</ng-content>\n\t\t\t\t\t<ng-content select=\"[data-occlusion-material]\">\n\t\t\t\t\t\t<ngt-shader-material\n\t\t\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t\t\t[vertexShader]=\"vertexShader()\"\n\t\t\t\t\t\t\t[fragmentShader]=\"fragmentShader()\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ng-content>\n\t\t\t\t</ngt-mesh>\n\t\t\t}\n\t\t</ngt-group>\n\n\t\t<ng-content />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsHTML {\n\toptions = input(defaultHtmlOptions, { transform: mergeInputs(defaultHtmlOptions) });\n\tparameters = omit(this.options, ['occlude', 'castShadow', 'receiveShadow', 'transform']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tocclusionMeshRef = viewChild<ElementRef<Mesh>>('occlusionMesh');\n\tocclusionGeometryRef = viewChild<ElementRef<PlaneGeometry>>('occlusionGeometry');\n\n\tocclude = pick(this.options, 'occlude');\n\ttransform = pick(this.options, 'transform');\n\tcastShadow = pick(this.options, 'castShadow');\n\treceiveShadow = pick(this.options, 'receiveShadow');\n\tscale = pick(this.options, 'scale');\n\n\tisRaycastOcclusion = computed(() => {\n\t\tconst occlude = this.occlude();\n\t\treturn (occlude && occlude !== 'blending') || (Array.isArray(occlude) && occlude.length && is.ref(occlude[0]));\n\t});\n\n\tprivate shaders = computed(() => {\n\t\tconst transform = this.transform();\n\t\tconst vertexShader = !transform\n\t\t\t? /* language=glsl glsl */ `\n /*\n This shader is from the THREE's SpriteMaterial.\n We need to turn the backing plane into a Sprite\n (make it always face the camera) if \"transfrom\"\n is false.\n */\n #include <common>\n\n void main() {\n vec2 center = vec2(0., 1.);\n float rotation = 0.0;\n\n // This is somewhat arbitrary, but it seems to work well\n // Need to figure out how to derive this dynamically if it even matters\n float size = 0.03;\n\n vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n vec2 scale;\n scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n\n gl_Position = projectionMatrix * mvPosition;\n }\n `\n\t\t\t: undefined;\n\n\t\tconst fragmentShader = /* language=glsl glsl */ `\n void main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `;\n\n\t\treturn { vertexShader, fragmentShader };\n\t});\n\n\tvertexShader = pick(this.shaders, 'vertexShader');\n\tfragmentShader = pick(this.shaders, 'fragmentShader');\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry, ShaderMaterial });\n\t}\n\n\tprotected readonly DoubleSide = DoubleSide;\n}\n","import { Camera, Matrix4, Object3D, OrthographicCamera, PerspectiveCamera, Raycaster, Vector2, Vector3 } from 'three';\n\nconst v1 = new Vector3();\nconst v2 = new Vector3();\nconst v3 = new Vector3();\nconst v4 = new Vector2();\n\nexport function defaultCalculatePosition(el: Object3D, camera: Camera, size: { width: number; height: number }) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tobjectPos.project(camera);\n\tconst widthHalf = size.width / 2;\n\tconst heightHalf = size.height / 2;\n\treturn [objectPos.x * widthHalf + widthHalf, -(objectPos.y * heightHalf) + heightHalf];\n}\n\nexport type CalculatePosition = typeof defaultCalculatePosition;\n\nexport function isObjectBehindCamera(el: Object3D, camera: Camera) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\tconst deltaCamObj = objectPos.sub(cameraPos);\n\tconst camDir = camera.getWorldDirection(v3);\n\treturn deltaCamObj.angleTo(camDir) > Math.PI / 2;\n}\n\nexport function isObjectVisible(el: Object3D, camera: Camera, raycaster: Raycaster, occlude: Object3D[]) {\n\tconst elPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst screenPos = elPos.clone();\n\tscreenPos.project(camera);\n\tv4.set(screenPos.x, screenPos.y);\n\traycaster.setFromCamera(v4, camera);\n\tconst intersects = raycaster.intersectObjects(occlude, true);\n\tif (intersects.length) {\n\t\tconst intersectionDistance = intersects[0].distance;\n\t\tconst pointDistance = elPos.distanceTo(raycaster.ray.origin);\n\t\treturn pointDistance < intersectionDistance;\n\t}\n\treturn true;\n}\n\nexport function objectScale(el: Object3D, camera: Camera) {\n\tif (camera instanceof OrthographicCamera) return camera.zoom;\n\tif (camera instanceof PerspectiveCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst vFOV = (camera.fov * Math.PI) / 180;\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst scaleFOV = 2 * Math.tan(vFOV / 2) * dist;\n\t\treturn 1 / scaleFOV;\n\t}\n\treturn 1;\n}\n\nexport function objectZIndex(el: Object3D, camera: Camera, zIndexRange: Array<number>) {\n\tif (camera instanceof PerspectiveCamera || camera instanceof OrthographicCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);\n\t\tconst B = zIndexRange[1] - A * camera.far;\n\t\treturn Math.round(A * dist + B);\n\t}\n\treturn undefined;\n}\n\nexport function epsilon(value: number) {\n\treturn Math.abs(value) < 1e-10 ? 0 : value;\n}\n\nexport function getCSSMatrix(matrix: Matrix4, multipliers: number[], prepend = '') {\n\tlet matrix3d = 'matrix3d(';\n\tfor (let i = 0; i !== 16; i++) {\n\t\tmatrix3d += epsilon(multipliers[i] * matrix.elements[i]) + (i !== 15 ? ',' : ')');\n\t}\n\treturn prepend + matrix3d;\n}\n\nexport const getCameraCSSMatrix = ((multipliers: number[]) => {\n\treturn (matrix: Matrix4) => getCSSMatrix(matrix, multipliers);\n})([1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1]);\n\nexport const getObjectCSSMatrix = ((scaleMultipliers: (n: number) => number[]) => {\n\treturn (matrix: Matrix4, factor: number) => getCSSMatrix(matrix, scaleMultipliers(factor), 'translate(-50%,-50%)');\n})((f: number) => [1 / f, 1 / f, 1 / f, 1, -1 / f, -1 / f, -1 / f, -1, 1 / f, 1 / f, 1 / f, 1, 1, 1, 1, 1]);\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tElementRef,\n\tinject,\n\tinput,\n\toutput,\n\tRenderer2,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { injectBeforeRender, NgtHTML, pick, resolveRef } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Object3D, OrthographicCamera, Vector3 } from 'three';\nimport { NgtsHTML } from './html';\nimport {\n\tCalculatePosition,\n\tdefaultCalculatePosition,\n\tepsilon,\n\tgetCameraCSSMatrix,\n\tgetObjectCSSMatrix,\n\tisObjectBehindCamera,\n\tisObjectVisible,\n\tobjectScale,\n\tobjectZIndex,\n} from './utils';\n\ntype PointerEventsProperties =\n\t| 'auto'\n\t| 'none'\n\t| 'visiblePainted'\n\t| 'visibleFill'\n\t| 'visibleStroke'\n\t| 'visible'\n\t| 'painted'\n\t| 'fill'\n\t| 'stroke'\n\t| 'all'\n\t| 'inherit';\n\nexport interface NgtsHTMLContentOptions {\n\teps: number;\n\tzIndexRange: [number, number];\n\tcenter: boolean;\n\tprepend: boolean;\n\tfullscreen: boolean;\n\tcontainerClass: string;\n\tcontainerStyle: Partial<CSSStyleDeclaration>;\n\tpointerEvents: PointerEventsProperties;\n\tcalculatePosition: CalculatePosition;\n\tsprite: boolean;\n\tdistanceFactor?: number;\n\tparent?: HTMLElement | ElementRef<HTMLElement>;\n}\n\nconst defaultHtmlContentOptions: NgtsHTMLContentOptions = {\n\teps: 0.001,\n\tzIndexRange: [16777271, 0],\n\tpointerEvents: 'auto',\n\tcalculatePosition: defaultCalculatePosition,\n\tcontainerClass: '',\n\tcontainerStyle: {},\n\tcenter: false,\n\tprepend: false,\n\tfullscreen: false,\n\tsprite: false,\n};\n\n@Component({\n\tselector: '[ngtsHTMLContent]',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (html.transform()) {\n\t\t\t<div\n\t\t\t\t#transformOuter\n\t\t\t\tstyle=\"position: absolute; top: 0; left: 0; transform-style: preserve-3d; pointer-events: none;\"\n\t\t\t\t[style.width.px]=\"size().width\"\n\t\t\t\t[style.height.px]=\"size().height\"\n\t\t\t>\n\t\t\t\t<div #transformInner style=\"position: absolute\" [style.pointer-events]=\"pointerEvents()\">\n\t\t\t\t\t<div #container [class]=\"containerClass()\" [style]=\"containerStyle()\">\n\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"content\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div\n\t\t\t\t#container\n\t\t\t\tstyle=\"position:absolute\"\n\t\t\t\t[style.transform]=\"center() ? 'translate3d(-50%,-50%,0)' : 'none'\"\n\t\t\t\t[style.top]=\"fullscreen() ? -size().height / 2 + 'px' : 'unset'\"\n\t\t\t\t[style.left]=\"fullscreen() ? -size().width / 2 + 'px' : 'unset'\"\n\t\t\t\t[style.width]=\"fullscreen() ? size().width : 'unset'\"\n\t\t\t\t[style.height]=\"fullscreen() ? size().height : 'unset'\"\n\t\t\t\t[class]=\"containerClass()\"\n\t\t\t\t[style]=\"containerStyle()\"\n\t\t\t>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"content\" />\n\t\t\t</div>\n\t\t}\n\n\t\t<ng-template #content>\n\t\t\t<ng-content />\n\t\t</ng-template>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgTemplateOutlet],\n\thost: { 'data-ngts-html-content': '' },\n})\nexport class NgtsHTMLContent extends NgtHTML {\n\toptions = input(defaultHtmlContentOptions, {\n\t\ttransform: mergeInputs(defaultHtmlContentOptions),\n\t\talias: 'ngtsHTMLContent',\n\t});\n\toccluded = output<boolean>();\n\n\thtml = inject(NgtsHTML);\n\n\ttransformOuterRef = viewChild<ElementRef<HTMLDivElement>>('transformOuter');\n\ttransformInnerRef = viewChild<ElementRef<HTMLDivElement>>('transformInner');\n\tcontainerRef = viewChild<ElementRef<HTMLDivElement>>('container');\n\n\tprivate gl = this.store.select('gl');\n\tprivate events = this.store.select('events');\n\tprivate camera = this.store.select('camera');\n\tprivate scene = this.store.select('scene');\n\tsize = this.store.select('size');\n\n\tprivate parent = pick(this.options, 'parent');\n\tprivate zIndexRange = pick(this.options, 'zIndexRange');\n\tprivate calculatePosition = pick(this.options, 'calculatePosition');\n\tprivate prepend = pick(this.options, 'prepend');\n\tcenter = pick(this.options, 'center');\n\tfullscreen = pick(this.options, 'fullscreen');\n\tpointerEvents = pick(this.options, 'pointerEvents');\n\tcontainerClass = pick(this.options, 'containerClass');\n\tcontainerStyle = pick(this.options, 'containerStyle');\n\n\tprivate target = computed(() => {\n\t\tconst parent = resolveRef(this.parent());\n\t\tif (parent) return parent;\n\t\treturn (this.events().connected || this.gl().domElement.parentNode) as HTMLElement;\n\t});\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst renderer = inject(Renderer2);\n\n\t\tlet isMeshSizeSet = false;\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [occlude, canvasEl, zIndexRange] = [\n\t\t\t\t\tthis.html.occlude(),\n\t\t\t\t\tuntracked(this.gl).domElement,\n\t\t\t\t\tuntracked(this.zIndexRange),\n\t\t\t\t];\n\n\t\t\t\tif (occlude && occlude === 'blending') {\n\t\t\t\t\trenderer.setStyle(canvasEl, 'z-index', `${Math.floor(zIndexRange[0] / 2)}`);\n\t\t\t\t\trenderer.setStyle(canvasEl, 'position', 'absolute');\n\t\t\t\t\trenderer.setStyle(canvasEl, 'pointer-events', 'none');\n\t\t\t\t} else {\n\t\t\t\t\trenderer.removeStyle(canvasEl, 'z-index');\n\t\t\t\t\trenderer.removeStyle(canvasEl, 'position');\n\t\t\t\t\trenderer.removeStyle(canvasEl, 'pointer-events');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [transform, target, hostEl, prepend, scene, calculatePosition, group, size, camera] = [\n\t\t\t\t\tthis.html.transform(),\n\t\t\t\t\tthis.target(),\n\t\t\t\t\tthis.host.nativeElement,\n\t\t\t\t\tuntracked(this.prepend),\n\t\t\t\t\tuntracked(this.scene),\n\t\t\t\t\tuntracked(this.calculatePosition),\n\t\t\t\t\tuntracked(this.html.groupRef).nativeElement,\n\t\t\t\t\tuntracked(this.size),\n\t\t\t\t\tuntracked(this.camera),\n\t\t\t\t];\n\n\t\t\t\tscene.updateMatrixWorld();\n\t\t\t\trenderer.setStyle(hostEl, 'position', 'absolute');\n\t\t\t\trenderer.setStyle(hostEl, 'top', '0');\n\t\t\t\trenderer.setStyle(hostEl, 'left', '0');\n\n\t\t\t\tif (transform) {\n\t\t\t\t\trenderer.setStyle(hostEl, 'pointer-events', 'none');\n\t\t\t\t\trenderer.setStyle(hostEl, 'overflow', 'hidden');\n\t\t\t\t\trenderer.removeStyle(hostEl, 'transform');\n\t\t\t\t\trenderer.removeStyle(hostEl, 'transform-origin');\n\t\t\t\t} else {\n\t\t\t\t\tconst vec = calculatePosition(group, camera, size);\n\t\t\t\t\trenderer.setStyle(hostEl, 'transform', `translate3d(${vec[0]}px,${vec[1]}px,0)`);\n\t\t\t\t\trenderer.setStyle(hostEl, 'transform-origin', '0 0');\n\t\t\t\t\trenderer.removeStyle(hostEl, 'pointer-events');\n\t\t\t\t\trenderer.removeStyle(hostEl, 'overflow');\n\t\t\t\t}\n\n\t\t\t\tif (prepend) target.prepend(hostEl);\n\t\t\t\telse target.appendChild(hostEl);\n\n\t\t\t\treturn () => {\n\t\t\t\t\tif (target) target.removeChild(hostEl);\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tthis.options();\n\t\t\t\tthis.html.options();\n\t\t\t\tisMeshSizeSet = false;\n\t\t\t});\n\t\t});\n\n\t\tlet visible = true;\n\t\tlet oldZoom = 0;\n\t\tlet oldPosition = [0, 0];\n\n\t\tinjectBeforeRender(({ camera: rootCamera }) => {\n\t\t\tconst [\n\t\t\t\thostEl,\n\t\t\t\ttransformOuterEl,\n\t\t\t\ttransformInnerEl,\n\t\t\t\tgroup,\n\t\t\t\tocclusionMesh,\n\t\t\t\tocclusionGeometry,\n\t\t\t\tisRaycastOcclusion,\n\t\t\t\t{ camera, size, viewport, raycaster, scene },\n\t\t\t\t{ calculatePosition, eps, zIndexRange, sprite, distanceFactor },\n\t\t\t\t{ transform, occlude, scale },\n\t\t\t] = [\n\t\t\t\tthis.host.nativeElement,\n\t\t\t\tthis.transformOuterRef()?.nativeElement,\n\t\t\t\tthis.transformInnerRef()?.nativeElement,\n\t\t\t\tthis.html.groupRef().nativeElement,\n\t\t\t\tthis.html.occlusionMeshRef()?.nativeElement,\n\t\t\t\tthis.html.occlusionGeometryRef()?.nativeElement,\n\t\t\t\tthis.html.isRaycastOcclusion(),\n\t\t\t\tthis.store.snapshot,\n\t\t\t\tthis.options(),\n\t\t\t\tthis.html.options(),\n\t\t\t];\n\n\t\t\tif (group) {\n\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\tgroup.updateWorldMatrix(true, false);\n\t\t\t\tconst vec = transform ? oldPosition : calculatePosition(group, camera, size);\n\n\t\t\t\tif (\n\t\t\t\t\ttransform ||\n\t\t\t\t\tMath.abs(oldZoom - camera.zoom) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[0] - vec[0]) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[1] - vec[1]) > eps\n\t\t\t\t) {\n\t\t\t\t\tconst isBehindCamera = isObjectBehindCamera(group, camera);\n\t\t\t\t\tlet raytraceTarget: null | undefined | boolean | Object3D[] = false;\n\n\t\t\t\t\tif (isRaycastOcclusion) {\n\t\t\t\t\t\tif (Array.isArray(occlude)) {\n\t\t\t\t\t\t\traytraceTarget = occlude.map((item) => resolveRef(item)) as Object3D[];\n\t\t\t\t\t\t} else if (occlude !== 'blending') {\n\t\t\t\t\t\t\traytraceTarget = [scene];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst previouslyVisible = visible;\n\t\t\t\t\tif (raytraceTarget) {\n\t\t\t\t\t\tconst isVisible = isObjectVisible(group, camera, raycaster, raytraceTarget);\n\t\t\t\t\t\tvisible = isVisible && !isBehindCamera;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvisible = !isBehindCamera;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (previouslyVisible !== visible) {\n\t\t\t\t\t\tif (this.occluded['listeners']) this.occluded.emit(!visible);\n\t\t\t\t\t\telse renderer.setStyle(hostEl, 'display', visible ? 'block' : 'none');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfRange = Math.floor(zIndexRange[0] / 2);\n\t\t\t\t\tconst zRange = occlude\n\t\t\t\t\t\t? isRaycastOcclusion //\n\t\t\t\t\t\t\t? [zIndexRange[0], halfRange]\n\t\t\t\t\t\t\t: [halfRange - 1, 0]\n\t\t\t\t\t\t: zIndexRange;\n\n\t\t\t\t\trenderer.setStyle(hostEl, 'z-index', `${objectZIndex(group, camera, zRange)}`);\n\n\t\t\t\t\tif (transform) {\n\t\t\t\t\t\tconst [widthHalf, heightHalf] = [size.width / 2, size.height / 2];\n\t\t\t\t\t\tconst fov = camera.projectionMatrix.elements[5] * heightHalf;\n\t\t\t\t\t\tconst { isOrthographicCamera, top, left, bottom, right } = camera as OrthographicCamera;\n\t\t\t\t\t\tconst cameraMatrix = getCameraCSSMatrix(camera.matrixWorldInverse);\n\t\t\t\t\t\tconst cameraTransform = isOrthographicCamera\n\t\t\t\t\t\t\t? `scale(${fov})translate(${epsilon(-(right + left) / 2)}px,${epsilon((top + bottom) / 2)}px)`\n\t\t\t\t\t\t\t: `translateZ(${fov}px)`;\n\t\t\t\t\t\tlet matrix = group.matrixWorld;\n\t\t\t\t\t\tif (sprite) {\n\t\t\t\t\t\t\tmatrix = camera.matrixWorldInverse.clone().transpose().copyPosition(matrix).scale(group.scale);\n\t\t\t\t\t\t\tmatrix.elements[3] = matrix.elements[7] = matrix.elements[11] = 0;\n\t\t\t\t\t\t\tmatrix.elements[15] = 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'width', size.width + 'px');\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'height', size.height + 'px');\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'perspective', isOrthographicCamera ? '' : `${fov}px`);\n\n\t\t\t\t\t\tif (transformOuterEl && transformInnerEl) {\n\t\t\t\t\t\t\trenderer.setStyle(\n\t\t\t\t\t\t\t\ttransformOuterEl,\n\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\t`${cameraTransform}${cameraMatrix}translate(${widthHalf}px,${heightHalf}px)`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\trenderer.setStyle(\n\t\t\t\t\t\t\t\ttransformInnerEl,\n\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\tgetObjectCSSMatrix(matrix, 1 / ((distanceFactor || 10) / 400)),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst scale = distanceFactor === undefined ? 1 : objectScale(group, camera) * distanceFactor;\n\t\t\t\t\t\trenderer.setStyle(hostEl, 'transform', `translate3d(${vec[0]}px,${vec[1]}px,0) scale(${scale})`);\n\t\t\t\t\t}\n\t\t\t\t\toldPosition = vec;\n\t\t\t\t\toldZoom = camera.zoom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isRaycastOcclusion && occlusionMesh && !isMeshSizeSet) {\n\t\t\t\tif (transform) {\n\t\t\t\t\tif (transformOuterEl) {\n\t\t\t\t\t\tconst el = transformOuterEl.children[0];\n\n\t\t\t\t\t\tif (el?.clientWidth && el?.clientHeight) {\n\t\t\t\t\t\t\tconst { isOrthographicCamera } = camera as OrthographicCamera;\n\n\t\t\t\t\t\t\tif (isOrthographicCamera || occlusionGeometry) {\n\t\t\t\t\t\t\t\tif (scale) {\n\t\t\t\t\t\t\t\t\tif (!Array.isArray(scale)) {\n\t\t\t\t\t\t\t\t\t\tocclusionMesh.scale.setScalar(1 / (scale as number));\n\t\t\t\t\t\t\t\t\t} else if (scale instanceof Vector3) {\n\t\t\t\t\t\t\t\t\t\tocclusionMesh.scale.copy(scale.clone().divideScalar(1));\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tocclusionMesh.scale.set(1 / scale[0], 1 / scale[1], 1 / scale[2]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst ratio = (distanceFactor || 10) / 400;\n\t\t\t\t\t\t\t\tconst w = el.clientWidth * ratio;\n\t\t\t\t\t\t\t\tconst h = el.clientHeight * ratio;\n\n\t\t\t\t\t\t\t\tocclusionMesh.scale.set(w, h, 1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tisMeshSizeSet = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst ele = hostEl.children[0];\n\n\t\t\t\t\tif (ele?.clientWidth && ele?.clientHeight) {\n\t\t\t\t\t\tconst ratio = 1 / viewport.factor;\n\t\t\t\t\t\tconst w = ele.clientWidth * ratio;\n\t\t\t\t\t\tconst h = ele.clientHeight * ratio;\n\n\t\t\t\t\t\tocclusionMesh.scale.set(w, h, 1);\n\n\t\t\t\t\t\tisMeshSizeSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tocclusionMesh.lookAt(rootCamera.position);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tmodel,\n\tsignal,\n\tWritableSignal,\n} from '@angular/core';\nimport { addAfterEffect, addEffect, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Object3D } from 'three';\n\nexport function injectIntersect<TObject extends Object3D>(\n\tobject: () => ElementRef<TObject> | TObject | undefined | null,\n\t{ injector, source = signal(false) }: { injector?: Injector; source?: WritableSignal<boolean> } = {},\n) {\n\treturn assertInjector(injectIntersect, injector, () => {\n\t\tlet check = false;\n\t\tlet temp = false;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst obj = resolveRef(object());\n\t\t\tif (!obj) return;\n\n\t\t\t// Stamp out frustum check pre-emptively\n\t\t\tconst unsub1 = addEffect(() => {\n\t\t\t\tcheck = false;\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\t// If the object is inside the frustum three will call onRender\n\t\t\tconst oldOnRender = obj.onBeforeRender.bind(obj);\n\t\t\tobj.onBeforeRender = () => (check = true);\n\n\t\t\t// Compare the check value against the temp value, if it differs set state\n\t\t\tconst unsub2 = addAfterEffect(() => {\n\t\t\t\tif (check !== temp) source.set((temp = check));\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tonCleanup(() => {\n\t\t\t\tobj.onBeforeRender = oldOnRender;\n\t\t\t\tunsub1();\n\t\t\t\tunsub2();\n\t\t\t});\n\t\t});\n\n\t\treturn source.asReadonly();\n\t});\n}\n\n@Directive({ standalone: true, selector: '[intersect]' })\nexport class NgtsIntersect {\n\tintersect = model(false);\n\n\tconstructor() {\n\t\tconst host = inject<ElementRef<Object3D>>(ElementRef);\n\t\tconst injector = inject(Injector);\n\t\tafterNextRender(() => {\n\t\t\tinjectIntersect(() => host, { source: this.intersect, injector });\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tsignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, getLocalState, NgtGroup, omit, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BufferGeometry, Color, Group, InstancedBufferAttribute, InstancedMesh, Mesh, Object3D, Vector3 } from 'three';\nimport { MeshSurfaceSampler } from 'three-stdlib';\n\ninterface SamplePayload {\n\t/**\n\t * The position of the sample.\n\t */\n\tposition: Vector3;\n\t/**\n\t * The normal of the mesh at the sampled position.\n\t */\n\tnormal: Vector3;\n\t/**\n\t * The vertex color of the mesh at the sampled position.\n\t */\n\tcolor: Color;\n}\n\nexport type TransformFn = (payload: TransformPayload, i: number) => void;\n\ninterface TransformPayload extends SamplePayload {\n\t/**\n\t * The dummy object used to transform each instance.\n\t * This object's matrix will be updated after transforming & it will be used\n\t * to set the instance's matrix.\n\t */\n\tdummy: Object3D;\n\t/**\n\t * The mesh that's initially passed to the sampler.\n\t * Use this if you need to apply transforms from your mesh to your instances\n\t * or if you need to grab attributes from the geometry.\n\t */\n\tsampledMesh: Mesh;\n}\n\nexport function injectSurfaceSampler(\n\tmesh: () => ElementRef<Mesh> | Mesh | null | undefined,\n\toptions: () => {\n\t\tcount?: number;\n\t\ttransform?: TransformFn;\n\t\tweight?: string;\n\t\tinstanceMesh?: ElementRef<InstancedMesh> | InstancedMesh | null;\n\t} = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectSurfaceSampler, injector, () => {\n\t\tconst buffer = signal(\n\t\t\t(() => {\n\t\t\t\tconst arr = Array.from({ length: options().count ?? 16 }, () => [\n\t\t\t\t\t1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,\n\t\t\t\t]).flat();\n\t\t\t\treturn new InstancedBufferAttribute(Float32Array.from(arr), 16);\n\t\t\t})(),\n\t\t);\n\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst currentMesh = resolveRef(mesh());\n\t\t\t\tif (!currentMesh) return;\n\n\t\t\t\tconst localState = getLocalState(currentMesh);\n\t\t\t\tif (!localState) return;\n\n\t\t\t\tconst nonObjects = localState.nonObjects();\n\t\t\t\tif (\n\t\t\t\t\t!nonObjects ||\n\t\t\t\t\t!nonObjects.length ||\n\t\t\t\t\tnonObjects.every((nonObject) => !(nonObject as BufferGeometry).isBufferGeometry)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst sampler = new MeshSurfaceSampler(currentMesh);\n\n\t\t\t\tconst { weight, count = 16, transform, instanceMesh } = options();\n\n\t\t\t\tif (weight) {\n\t\t\t\t\tsampler.setWeightAttribute(weight);\n\t\t\t\t}\n\n\t\t\t\tsampler.build();\n\n\t\t\t\tconst position = new Vector3();\n\t\t\t\tconst normal = new Vector3();\n\t\t\t\tconst color = new Color();\n\t\t\t\tconst dummy = new Object3D();\n\t\t\t\tconst instance = resolveRef(instanceMesh);\n\n\t\t\t\tcurrentMesh.updateMatrixWorld(true);\n\n\t\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\t\tsampler.sample(position, normal, color);\n\n\t\t\t\t\tif (typeof transform === 'function') {\n\t\t\t\t\t\ttransform({ dummy, sampledMesh: currentMesh, position, normal, color }, i);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdummy.position.copy(position);\n\t\t\t\t\t}\n\n\t\t\t\t\tdummy.updateMatrix();\n\n\t\t\t\t\tif (instance) {\n\t\t\t\t\t\tinstance.setMatrixAt(i, dummy.matrix);\n\t\t\t\t\t}\n\n\t\t\t\t\tdummy.matrix.toArray(untracked(buffer).array, i * 16);\n\t\t\t\t}\n\n\t\t\t\tif (instance) {\n\t\t\t\t\tcheckUpdate(instance.instanceMatrix);\n\t\t\t\t}\n\n\t\t\t\tcheckUpdate(buffer);\n\n\t\t\t\tbuffer.set(\n\t\t\t\t\tnew InstancedBufferAttribute(untracked(buffer).array, untracked(buffer).itemSize).copy(untracked(buffer)),\n\t\t\t\t);\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\n\t\treturn buffer.asReadonly();\n\t});\n}\n\nexport interface NgtsSamplerOptions extends Partial<NgtGroup> {\n\t/**\n\t * The NAME of the weight attribute to use when sampling.\n\t *\n\t * @see https://threejs.org/docs/#examples/en/math/MeshSurfaceSampler.setWeightAttribute\n\t */\n\tweight?: string;\n\t/**\n\t * Transformation to be applied to each instance.\n\t * Receives a dummy object3D with all the sampled data ( @see TransformPayload ).\n\t * It should mutate `transformPayload.dummy`.\n\t *\n\t * @see ( @todo add link to example )\n\t *\n\t * There is no need to update the dummy's matrix\n\t */\n\ttransform?: TransformFn;\n\tcount: number;\n}\n\nconst defaultOptions: NgtsSamplerOptions = {\n\tcount: 16,\n};\n\n@Component({\n\tselector: 'ngts-sampler',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSampler {\n\tmesh = input<ElementRef<Mesh> | Mesh | null>(null);\n\tinstances = input<ElementRef<InstancedMesh> | InstancedMesh | null>(null);\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['weight', 'transform', 'count']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate meshToSample = signal<Mesh | null>(null);\n\tprivate instancedToSample = signal<InstancedMesh | null>(null);\n\n\tconstructor() {\n\t\textend({ Group });\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst injector = inject(Injector);\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(\n\t\t\t\t() => {\n\t\t\t\t\tconst group = this.groupRef().nativeElement;\n\t\t\t\t\tconst localState = getLocalState(group);\n\t\t\t\t\tif (!localState) return;\n\n\t\t\t\t\tconst [mesh, instances] = [resolveRef(this.mesh()), resolveRef(this.instances())];\n\n\t\t\t\t\tthis.meshToSample.set(mesh ?? (localState.objects().find((c) => c.type === 'Mesh') as Mesh));\n\t\t\t\t\tthis.instancedToSample.set(\n\t\t\t\t\t\tinstances ??\n\t\t\t\t\t\t\t(localState\n\t\t\t\t\t\t\t\t.objects()\n\t\t\t\t\t\t\t\t.find((c) => !!Object.getOwnPropertyDescriptor(c, 'instanceMatrix')) as InstancedMesh),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\t{ allowSignalWrites: true },\n\t\t\t);\n\n\t\t\tinjectSurfaceSampler(\n\t\t\t\tthis.meshToSample,\n\t\t\t\t() => ({\n\t\t\t\t\tcount: this.options().count,\n\t\t\t\t\ttransform: this.options().transform,\n\t\t\t\t\tweight: this.options().weight,\n\t\t\t\t\tinstanceMesh: this.instancedToSample(),\n\t\t\t\t}),\n\t\t\t\t{ injector },\n\t\t\t);\n\t\t});\n\t}\n}\n","import { NgtSize } from 'angular-three';\nimport { Camera, Vector3 } from 'three';\n\nconst tV0 = new Vector3();\nconst tV1 = new Vector3();\nconst tV2 = new Vector3();\n\nfunction getPoint2(point3: Vector3, camera: Camera, size: NgtSize) {\n\tconst widthHalf = size.width / 2;\n\tconst heightHalf = size.height / 2;\n\tcamera.updateMatrixWorld(false);\n\tconst vector = point3.project(camera);\n\tvector.x = vector.x * widthHalf + widthHalf;\n\tvector.y = -(vector.y * heightHalf) + heightHalf;\n\treturn vector;\n}\n\nfunction getPoint3(point2: Vector3, camera: Camera, size: NgtSize, zValue: number = 1) {\n\tconst vector = tV0.set((point2.x / size.width) * 2 - 1, -(point2.y / size.height) * 2 + 1, zValue);\n\tvector.unproject(camera);\n\treturn vector;\n}\n\nexport function calculateScaleFactor(point3: Vector3, radiusPx: number, camera: Camera, size: NgtSize) {\n\tconst point2 = getPoint2(tV2.copy(point3), camera, size);\n\tlet scale = 0;\n\tfor (let i = 0; i < 2; ++i) {\n\t\tconst point2off = tV1.copy(point2).setComponent(i, point2.getComponent(i) + radiusPx);\n\t\tconst point3off = getPoint3(point2off, camera, size, point2off.z);\n\t\tscale = Math.max(scale, point3.distanceTo(point3off));\n\t}\n\treturn scale;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}