angular-three-soba 2.0.0-beta.26 → 2.0.0-beta.261

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 (397) hide show
  1. package/README.md +62 -4
  2. package/abstractions/README.md +278 -2
  3. package/abstractions/index.d.ts +11 -6
  4. package/abstractions/lib/catmull-rom-line.d.ts +648 -0
  5. package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
  6. package/abstractions/lib/edges.d.ts +850 -0
  7. package/abstractions/lib/gradient-texture.d.ts +24 -0
  8. package/abstractions/lib/grid.d.ts +339 -0
  9. package/abstractions/lib/helper.d.ts +25 -0
  10. package/abstractions/lib/line.d.ts +41 -0
  11. package/abstractions/lib/prism-geometry.d.ts +30 -0
  12. package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
  13. package/abstractions/lib/text-3d.d.ts +338 -0
  14. package/abstractions/lib/text.d.ts +55 -0
  15. package/cameras/README.md +91 -2
  16. package/cameras/index.d.ts +4 -4
  17. package/cameras/lib/camera-content.d.ts +10 -0
  18. package/cameras/lib/cube-camera.d.ts +38 -0
  19. package/cameras/lib/orthographic-camera.d.ts +40 -0
  20. package/cameras/lib/perspective-camera.d.ts +36 -0
  21. package/controls/README.md +95 -2
  22. package/controls/index.d.ts +2 -1
  23. package/controls/lib/camera-controls.d.ts +31 -0
  24. package/controls/lib/orbit-controls.d.ts +38 -0
  25. package/esm2022/abstractions/index.mjs +12 -7
  26. package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
  27. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
  28. package/esm2022/abstractions/lib/edges.mjs +70 -0
  29. package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
  30. package/esm2022/abstractions/lib/grid.mjs +103 -0
  31. package/esm2022/abstractions/lib/helper.mjs +80 -0
  32. package/esm2022/abstractions/lib/line.mjs +123 -0
  33. package/esm2022/abstractions/lib/prism-geometry.mjs +55 -0
  34. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
  35. package/esm2022/abstractions/lib/text-3d.mjs +98 -0
  36. package/esm2022/abstractions/lib/text.mjs +92 -0
  37. package/esm2022/cameras/index.mjs +5 -5
  38. package/esm2022/cameras/lib/camera-content.mjs +14 -0
  39. package/esm2022/cameras/lib/cube-camera.mjs +111 -0
  40. package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
  41. package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
  42. package/esm2022/controls/index.mjs +3 -2
  43. package/esm2022/controls/lib/camera-controls.mjs +127 -0
  44. package/esm2022/controls/lib/orbit-controls.mjs +126 -0
  45. package/esm2022/loaders/index.mjs +6 -5
  46. package/esm2022/loaders/lib/font-loader.mjs +49 -0
  47. package/esm2022/loaders/lib/gltf-loader.mjs +33 -0
  48. package/esm2022/loaders/lib/loader.mjs +109 -0
  49. package/esm2022/loaders/lib/progress.mjs +51 -0
  50. package/esm2022/loaders/lib/texture-loader.mjs +32 -0
  51. package/esm2022/materials/index.mjs +7 -7
  52. package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
  53. package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
  54. package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
  55. package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
  56. package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
  57. package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
  58. package/esm2022/misc/index.mjs +10 -14
  59. package/esm2022/misc/lib/animations.mjs +74 -0
  60. package/esm2022/misc/lib/bake-shadows.mjs +26 -0
  61. package/esm2022/misc/lib/computed-attribute.mjs +56 -0
  62. package/esm2022/misc/lib/constants.mjs +5 -0
  63. package/esm2022/misc/lib/decal.mjs +135 -0
  64. package/esm2022/misc/lib/deprecated.mjs +15 -0
  65. package/esm2022/misc/lib/depth-buffer.mjs +39 -0
  66. package/esm2022/misc/lib/fbo.mjs +89 -0
  67. package/esm2022/misc/lib/sampler.mjs +121 -0
  68. package/esm2022/shaders/index.mjs +3 -18
  69. package/esm2022/shaders/lib/grid-material.mjs +81 -0
  70. package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
  71. package/esm2022/staging/index.mjs +19 -22
  72. package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
  73. package/esm2022/staging/lib/backdrop.mjs +73 -0
  74. package/esm2022/staging/lib/bb-anchor.mjs +58 -0
  75. package/esm2022/staging/lib/bounds.mjs +286 -0
  76. package/esm2022/staging/lib/camera-shake.mjs +69 -0
  77. package/esm2022/staging/lib/caustics.mjs +188 -0
  78. package/esm2022/staging/lib/center.mjs +113 -0
  79. package/esm2022/staging/lib/contact-shadows.mjs +201 -0
  80. package/esm2022/staging/lib/environment.mjs +465 -0
  81. package/esm2022/staging/lib/float.mjs +60 -0
  82. package/esm2022/staging/lib/lightformer.mjs +107 -0
  83. package/esm2022/staging/lib/matcap-texture.mjs +81 -0
  84. package/esm2022/staging/lib/normal-texture.mjs +85 -0
  85. package/esm2022/staging/lib/randomized-lights.mjs +104 -0
  86. package/esm2022/staging/lib/render-texture.mjs +213 -0
  87. package/esm2022/staging/lib/sky.mjs +86 -0
  88. package/esm2022/staging/lib/spot-light.mjs +450 -0
  89. package/esm2022/staging/lib/stage.mjs +236 -0
  90. package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
  91. package/esm2022/vanilla-exports/index.mjs +3 -0
  92. package/fesm2022/angular-three-soba-abstractions.mjs +739 -718
  93. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-cameras.mjs +260 -307
  95. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-controls.mjs +174 -110
  97. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  98. package/fesm2022/angular-three-soba-loaders.mjs +151 -129
  99. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  100. package/fesm2022/angular-three-soba-materials.mjs +511 -764
  101. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  102. package/fesm2022/angular-three-soba-misc.mjs +405 -2149
  103. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  104. package/fesm2022/angular-three-soba-shaders.mjs +33 -1373
  105. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  106. package/fesm2022/angular-three-soba-staging.mjs +2329 -3538
  107. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  108. package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
  109. package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
  110. package/loaders/README.md +130 -2
  111. package/loaders/index.d.ts +5 -4
  112. package/loaders/lib/font-loader.d.ts +27 -0
  113. package/loaders/lib/gltf-loader.d.ts +21 -0
  114. package/loaders/lib/loader.d.ts +29 -0
  115. package/loaders/lib/progress.d.ts +9 -0
  116. package/loaders/lib/texture-loader.d.ts +13 -0
  117. package/materials/README.md +160 -2
  118. package/materials/index.d.ts +6 -6
  119. package/materials/lib/custom-shader-material.d.ts +19 -0
  120. package/materials/lib/mesh-distort-material.d.ts +18 -0
  121. package/materials/lib/mesh-reflector-material.d.ts +50 -0
  122. package/materials/lib/mesh-refraction-material.d.ts +42 -0
  123. package/materials/lib/mesh-transmission-material.d.ts +77 -0
  124. package/materials/lib/mesh-wobble-material.d.ts +15 -0
  125. package/metadata.json +1 -1
  126. package/misc/README.md +217 -2
  127. package/misc/index.d.ts +9 -13
  128. package/misc/lib/animations.d.ts +14 -0
  129. package/misc/lib/computed-attribute.d.ts +69 -0
  130. package/misc/lib/constants.d.ts +1 -0
  131. package/misc/lib/decal.d.ts +27 -0
  132. package/misc/lib/deprecated.d.ts +14 -0
  133. package/misc/lib/depth-buffer.d.ts +8 -0
  134. package/misc/lib/fbo.d.ts +47 -0
  135. package/misc/lib/sampler.d.ts +73 -0
  136. package/package.json +60 -38
  137. package/shaders/index.d.ts +2 -17
  138. package/shaders/lib/grid-material.d.ts +69 -0
  139. package/shaders/lib/mesh-refraction-material.d.ts +11 -0
  140. package/staging/README.md +472 -2
  141. package/staging/index.d.ts +18 -21
  142. package/staging/lib/accumulative-shadows.d.ts +75 -0
  143. package/staging/lib/backdrop.d.ts +22 -0
  144. package/staging/lib/bb-anchor.d.ts +17 -0
  145. package/staging/lib/bounds.d.ts +47 -0
  146. package/staging/lib/camera-shake.d.ts +29 -0
  147. package/staging/lib/caustics.d.ts +53 -0
  148. package/staging/lib/center.d.ts +422 -0
  149. package/staging/lib/contact-shadows.d.ts +45 -0
  150. package/staging/lib/environment.d.ts +159 -0
  151. package/staging/lib/float.d.ts +19 -0
  152. package/staging/lib/lightformer.d.ts +334 -0
  153. package/staging/lib/matcap-texture.d.ts +32 -0
  154. package/staging/lib/normal-texture.d.ts +37 -0
  155. package/staging/lib/randomized-lights.d.ts +54 -0
  156. package/staging/lib/render-texture.d.ts +64 -0
  157. package/staging/lib/sky.d.ts +32 -0
  158. package/staging/lib/spot-light.d.ts +120 -0
  159. package/staging/lib/stage.d.ts +376 -0
  160. package/vanilla-exports/README.md +3 -0
  161. package/vanilla-exports/index.d.ts +27 -0
  162. package/web-types.json +1 -1
  163. package/abstractions/billboard/billboard.d.ts +0 -28
  164. package/abstractions/detailed/detailed.d.ts +0 -26
  165. package/abstractions/edges/edges.d.ts +0 -34
  166. package/abstractions/grid/grid.d.ts +0 -50
  167. package/abstractions/text/text.d.ts +0 -82
  168. package/abstractions/text-3d/text-3d.d.ts +0 -84
  169. package/assets/distort.vert.glsl +0 -1
  170. package/cameras/camera/camera-content.d.ts +0 -13
  171. package/cameras/camera/camera.d.ts +0 -26
  172. package/cameras/cube-camera/cube-camera.d.ts +0 -69
  173. package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
  174. package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
  175. package/controls/orbit-controls/orbit-controls.d.ts +0 -54
  176. package/esm2022/abstractions/billboard/billboard.mjs +0 -74
  177. package/esm2022/abstractions/detailed/detailed.mjs +0 -64
  178. package/esm2022/abstractions/edges/edges.mjs +0 -88
  179. package/esm2022/abstractions/grid/grid.mjs +0 -180
  180. package/esm2022/abstractions/text/text.mjs +0 -274
  181. package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
  182. package/esm2022/cameras/camera/camera-content.mjs +0 -21
  183. package/esm2022/cameras/camera/camera.mjs +0 -77
  184. package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
  185. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
  186. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
  187. package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -185
  188. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
  189. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +0 -197
  190. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  191. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -93
  192. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -150
  193. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +0 -66
  194. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -71
  195. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
  196. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -272
  197. package/esm2022/gizmos/index.mjs +0 -4
  198. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
  199. package/esm2022/loaders/loader/loader.mjs +0 -138
  200. package/esm2022/loaders/progress/progress.mjs +0 -52
  201. package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
  202. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
  203. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
  204. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
  205. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
  206. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
  207. package/esm2022/materials/point-material/point-material.mjs +0 -50
  208. package/esm2022/misc/animations/animations.mjs +0 -59
  209. package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
  210. package/esm2022/misc/caustics/caustics.mjs +0 -387
  211. package/esm2022/misc/decal/decal.mjs +0 -187
  212. package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
  213. package/esm2022/misc/example/example.mjs +0 -160
  214. package/esm2022/misc/fbo/fbo.mjs +0 -47
  215. package/esm2022/misc/html/html-wrapper.mjs +0 -478
  216. package/esm2022/misc/html/html.mjs +0 -304
  217. package/esm2022/misc/sampler/sampler.mjs +0 -142
  218. package/esm2022/misc/shadow/shadow.mjs +0 -111
  219. package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
  220. package/esm2022/misc/trail/trail.mjs +0 -209
  221. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
  222. package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
  223. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
  224. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
  225. package/esm2022/modifiers/index.mjs +0 -2
  226. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
  227. package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
  228. package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
  229. package/esm2022/performances/index.mjs +0 -8
  230. package/esm2022/performances/instances/instances.mjs +0 -220
  231. package/esm2022/performances/instances/position-mesh.mjs +0 -52
  232. package/esm2022/performances/points/points-input.mjs +0 -64
  233. package/esm2022/performances/points/points.mjs +0 -326
  234. package/esm2022/performances/points/position-point.mjs +0 -54
  235. package/esm2022/performances/segments/segment-object.mjs +0 -9
  236. package/esm2022/performances/segments/segments.mjs +0 -182
  237. package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
  238. package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
  239. package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
  240. package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
  241. package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
  242. package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
  243. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
  244. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  245. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
  246. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  247. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  248. package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
  249. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
  250. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
  251. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
  252. package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
  253. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
  254. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
  255. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
  256. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
  257. package/esm2022/staging/backdrop/backdrop.mjs +0 -77
  258. package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -69
  259. package/esm2022/staging/bounds/bounds.mjs +0 -308
  260. package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
  261. package/esm2022/staging/center/center.mjs +0 -165
  262. package/esm2022/staging/cloud/cloud.mjs +0 -158
  263. package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
  264. package/esm2022/staging/environment/assets.mjs +0 -13
  265. package/esm2022/staging/environment/environment-cube.mjs +0 -47
  266. package/esm2022/staging/environment/environment-ground.mjs +0 -41
  267. package/esm2022/staging/environment/environment-input.mjs +0 -119
  268. package/esm2022/staging/environment/environment-map.mjs +0 -53
  269. package/esm2022/staging/environment/environment-portal.mjs +0 -113
  270. package/esm2022/staging/environment/environment.mjs +0 -61
  271. package/esm2022/staging/environment/utils.mjs +0 -106
  272. package/esm2022/staging/float/float.mjs +0 -94
  273. package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
  274. package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
  275. package/esm2022/staging/sky/sky.mjs +0 -119
  276. package/esm2022/staging/sparkles/sparkles.mjs +0 -164
  277. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
  278. package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
  279. package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
  280. package/esm2022/staging/spot-light/spot-light.mjs +0 -81
  281. package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
  282. package/esm2022/staging/stage/stage.mjs +0 -389
  283. package/esm2022/staging/stars/stars.mjs +0 -147
  284. package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
  285. package/esm2022/staging/wireframe/wireframe.mjs +0 -228
  286. package/esm2022/utils/angular-three-soba-utils.mjs +0 -5
  287. package/esm2022/utils/content/content.mjs +0 -15
  288. package/esm2022/utils/index.mjs +0 -2
  289. package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
  290. package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
  291. package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
  292. package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
  293. package/fesm2022/angular-three-soba-performances.mjs +0 -956
  294. package/fesm2022/angular-three-soba-performances.mjs.map +0 -1
  295. package/fesm2022/angular-three-soba-utils.mjs +0 -22
  296. package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
  297. package/gizmos/README.md +0 -3
  298. package/gizmos/gizmo-helper/gizmo-helper.d.ts +0 -69
  299. package/gizmos/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  300. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  301. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -29
  302. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +0 -33
  303. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -10
  304. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -40
  305. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -30
  306. package/gizmos/index.d.ts +0 -3
  307. package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
  308. package/loaders/loader/loader.d.ts +0 -33
  309. package/loaders/progress/progress.d.ts +0 -9
  310. package/loaders/texture-loader/texture-loader.d.ts +0 -7
  311. package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
  312. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
  313. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
  314. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
  315. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
  316. package/materials/point-material/point-material.d.ts +0 -24
  317. package/misc/animations/animations.d.ts +0 -15
  318. package/misc/caustics/caustics.d.ts +0 -87
  319. package/misc/decal/decal.d.ts +0 -49
  320. package/misc/depth-buffer/depth-buffer.d.ts +0 -9
  321. package/misc/example/example.d.ts +0 -81
  322. package/misc/fbo/fbo.d.ts +0 -17
  323. package/misc/html/html-wrapper.d.ts +0 -559
  324. package/misc/html/html.d.ts +0 -214
  325. package/misc/sampler/sampler.d.ts +0 -67
  326. package/misc/shadow/shadow.d.ts +0 -37
  327. package/misc/stats-gl/stats-gl.d.ts +0 -24
  328. package/misc/trail/trail.d.ts +0 -57
  329. package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
  330. package/misc/trail-texture/trail-texture.d.ts +0 -50
  331. package/modifiers/README.md +0 -3
  332. package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
  333. package/modifiers/index.d.ts +0 -1
  334. package/performances/README.md +0 -3
  335. package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
  336. package/performances/adaptive-events/adaptive-events.d.ts +0 -9
  337. package/performances/index.d.ts +0 -7
  338. package/performances/instances/instances.d.ts +0 -79
  339. package/performances/instances/position-mesh.d.ts +0 -10
  340. package/performances/points/points-input.d.ts +0 -32
  341. package/performances/points/points.d.ts +0 -92
  342. package/performances/points/position-point.d.ts +0 -11
  343. package/performances/segments/segment-object.d.ts +0 -7
  344. package/performances/segments/segments.d.ts +0 -124
  345. package/shaders/blur-pass/blur-pass.d.ts +0 -23
  346. package/shaders/caustics/caustics-material.d.ts +0 -4
  347. package/shaders/caustics/caustics-projection-material.d.ts +0 -4
  348. package/shaders/convolution-material/convolution-material.d.ts +0 -7
  349. package/shaders/discard-material/discard-material.d.ts +0 -3
  350. package/shaders/grid-material/grid-material.d.ts +0 -37
  351. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
  352. package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
  353. package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
  354. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
  355. package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
  356. package/shaders/shader-material/shader-material.d.ts +0 -6
  357. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
  358. package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
  359. package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
  360. package/shaders/star-field-material/star-field-material.d.ts +0 -13
  361. package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
  362. package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
  363. package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
  364. package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
  365. package/staging/backdrop/backdrop.d.ts +0 -30
  366. package/staging/bb-anchor/bb-anchor.d.ts +0 -27
  367. package/staging/bounds/bounds.d.ts +0 -134
  368. package/staging/camera-shake/camera-shake.d.ts +0 -43
  369. package/staging/center/center.d.ts +0 -70
  370. package/staging/cloud/cloud.d.ts +0 -51
  371. package/staging/contact-shadows/contact-shadows.d.ts +0 -70
  372. package/staging/environment/assets.d.ts +0 -13
  373. package/staging/environment/environment-cube.d.ts +0 -15
  374. package/staging/environment/environment-ground.d.ts +0 -13
  375. package/staging/environment/environment-input.d.ts +0 -68
  376. package/staging/environment/environment-map.d.ts +0 -16
  377. package/staging/environment/environment-portal.d.ts +0 -18
  378. package/staging/environment/environment.d.ts +0 -8
  379. package/staging/environment/utils.d.ts +0 -7
  380. package/staging/float/float.d.ts +0 -31
  381. package/staging/matcap-texture/matcap-texture.d.ts +0 -13
  382. package/staging/normal-texture/normal-texture.d.ts +0 -16
  383. package/staging/sky/sky.d.ts +0 -48
  384. package/staging/sparkles/sparkles.d.ts +0 -63
  385. package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
  386. package/staging/spot-light/shadow-mesh.d.ts +0 -37
  387. package/staging/spot-light/spot-light-input.d.ts +0 -38
  388. package/staging/spot-light/spot-light.d.ts +0 -39
  389. package/staging/spot-light/volumetric-mesh.d.ts +0 -24
  390. package/staging/stage/stage.d.ts +0 -130
  391. package/staging/stars/stars.d.ts +0 -45
  392. package/staging/wireframe/wireframe-input.d.ts +0 -65
  393. package/staging/wireframe/wireframe.d.ts +0 -28
  394. package/utils/README.md +0 -3
  395. package/utils/content/content.d.ts +0 -8
  396. package/utils/index.d.ts +0 -1
  397. /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, signalStore, type NgtGroup } 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 (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} 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.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\tassertInjectionContext,\n\tcheckUpdate,\n\textend,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtGroup,\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, extend, injectNgtRef, signalStore, type NgtMesh } 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 { addAfterEffect, addEffect, injectNgtStore, is, signalStore, type NgtRef } 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 { assertInjectionContext, injectBeforeRender, type NgtThreeEvent } 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\tassertInjectionContext,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tis,\n\tsignalStore,\n\ttype NgtRef,\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/sampler.ts","../../../../libs/soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { ElementRef, Injector, afterNextRender, computed, isSignal, signal, untracked } from '@angular/core';\nimport { injectBeforeRender, is } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\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\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 autoEffect = injectAutoEffect();\n\n\t\tconst mixer = new AnimationMixer(null!);\n\t\tinjectBeforeRender(({ delta }) => mixer.update(delta));\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 (is.ref(object)) {\n\t\t\t\treturn object.nativeElement;\n\t\t\t}\n\n\t\t\tif (isSignal(object) || typeof object === 'function') {\n\t\t\t\tconst value = object();\n\t\t\t\tif (is.ref(value)) {\n\t\t\t\t\treturn value.nativeElement;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\treturn object;\n\t\t});\n\n\t\tconst ready = signal(false);\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst obj = actualObject();\n\t\t\t\tif (!obj) return;\n\t\t\t\tObject.assign(mixer, { _root: obj });\n\n\t\t\t\tconst maybeAnimationClips = animations();\n\t\t\t\tif (!maybeAnimationClips) return;\n\n\t\t\t\tconst animationClips = Array.isArray(maybeAnimationClips)\n\t\t\t\t\t? maybeAnimationClips\n\t\t\t\t\t: maybeAnimationClips.animations;\n\n\t\t\t\tfor (let i = 0; i < animationClips.length; i++) {\n\t\t\t\t\tconst clip = animationClips[i];\n\n\t\t\t\t\tnames.push(clip.name);\n\t\t\t\t\tclips.push(clip);\n\n\t\t\t\t\tif (!actions[clip.name as TAnimation['name']]) {\n\t\t\t\t\t\tObject.defineProperty(actions, clip.name, {\n\t\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\t\tget: () => {\n\t\t\t\t\t\t\t\treturn cached[clip.name] || (cached[clip.name] = mixer.clipAction(clip, obj));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tif (!ready()) {\n\t\t\t\t\t\tready.set(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn () => {\n\t\t\t\t\t// clear cached\n\t\t\t\t\tcached = {};\n\t\t\t\t\t// stop all actions\n\t\t\t\t\tmixer.stopAllAction();\n\t\t\t\t\t// uncache actions\n\t\t\t\t\tObject.values(actions).forEach((action) => {\n\t\t\t\t\t\tmixer.uncacheAction(action as AnimationClip, obj);\n\t\t\t\t\t});\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 #primitive *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\tprimitive = viewChild<ElementRef<BufferAttribute>>('primitive');\n\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst primitive = this.primitive()?.nativeElement;\n\t\t\t\tif (!primitive) return;\n\n\t\t\t\tconst localState = getLocalState(primitive);\n\t\t\t\tif (!localState) return;\n\n\t\t\t\tconst geometry = ((primitive as any).parent as BufferGeometry) ?? localState.parent();\n\t\t\t\tconsole.log(geometry);\n\n\t\t\t\tconst attribute = this.compute()(geometry);\n\t\t\t\tprimitive.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;\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<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\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</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// @ts-expect-error - r159\n\t\tattribute.updateRanges[0] = updateRange;\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\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\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 autoEffect = injectAutoEffect();\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\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [{ samples = 0 }, _width, _height, _target] = [settings(), width(), height(), target()];\n\t\t\t\t_target.setSize(_width, _height);\n\t\t\t\tif (samples) _target.samples = samples;\n\t\t\t});\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\ttemplate = inject(TemplateRef);\n\tviewContainerRef = inject(ViewContainerRef);\n\n\tfboTarget = injectFBO(() => {\n\t\tconst { width, height, ...settings } = this.fbo();\n\t\treturn { width, height, settings };\n\t});\n\n\tconstructor() {\n\t\tlet ref: EmbeddedViewRef<{ $implicit: ReturnType<typeof injectFBO> }>;\n\t\tafterNextRender(() => {\n\t\t\tuntracked(() => {\n\t\t\t\tref = this.viewContainerRef.createEmbeddedView(this.template, { $implicit: this.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\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\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\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(\n\t\t\t\t() => {\n\t\t\t\t\tconst currentMesh = resolveRef(mesh());\n\t\t\t\t\tif (!currentMesh) return;\n\n\t\t\t\t\tconst localState = getLocalState(currentMesh);\n\t\t\t\t\tif (!localState) return;\n\n\t\t\t\t\tconst nonObjects = localState.nonObjects();\n\t\t\t\t\tif (\n\t\t\t\t\t\t!nonObjects ||\n\t\t\t\t\t\t!nonObjects.length ||\n\t\t\t\t\t\tnonObjects.every((nonObject) => !(nonObject as BufferGeometry).isBufferGeometry)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst sampler = new MeshSurfaceSampler(currentMesh);\n\n\t\t\t\t\tconst { weight, count = 16, transform, instanceMesh } = options();\n\n\t\t\t\t\tif (weight) {\n\t\t\t\t\t\tsampler.setWeightAttribute(weight);\n\t\t\t\t\t}\n\n\t\t\t\t\tsampler.build();\n\n\t\t\t\t\tconst position = new Vector3();\n\t\t\t\t\tconst normal = new Vector3();\n\t\t\t\t\tconst color = new Color();\n\t\t\t\t\tconst dummy = new Object3D();\n\t\t\t\t\tconst instance = resolveRef(instanceMesh);\n\n\t\t\t\t\tcurrentMesh.updateMatrixWorld(true);\n\n\t\t\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\t\t\tsampler.sample(position, normal, color);\n\n\t\t\t\t\t\tif (typeof transform === 'function') {\n\t\t\t\t\t\t\ttransform({ dummy, sampledMesh: currentMesh, position, normal, color }, i);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdummy.position.copy(position);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdummy.updateMatrix();\n\n\t\t\t\t\t\tif (instance) {\n\t\t\t\t\t\t\tinstance.setMatrixAt(i, dummy.matrix);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdummy.matrix.toArray(untracked(buffer).array, i * 16);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (instance) {\n\t\t\t\t\t\tcheckUpdate(instance.instanceMatrix);\n\t\t\t\t\t}\n\n\t\t\t\t\tcheckUpdate(buffer);\n\n\t\t\t\t\tbuffer.set(\n\t\t\t\t\t\tnew InstancedBufferAttribute(untracked(buffer).array, untracked(buffer).itemSize).copy(untracked(buffer)),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\t{ allowSignalWrites: true },\n\t\t\t);\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\tgroup = 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\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(\n\t\t\t\t() => {\n\t\t\t\t\tconst group = this.group().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 ?? (localState.objects().find((c) => c.hasOwnProperty('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\t\t});\n\n\t\tinjectSurfaceSampler(this.meshToSample, () => ({\n\t\t\tcount: this.options().count,\n\t\t\ttransform: this.options().transform,\n\t\t\tweight: this.options().weight,\n\t\t\tinstanceMesh: this.instancedToSample(),\n\t\t}));\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}