angular-three-soba 2.0.0-beta.4 → 2.0.0-beta.41

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 (323) hide show
  1. package/abstractions/billboard/billboard.d.ts +12 -8
  2. package/abstractions/detailed/detailed.d.ts +26 -0
  3. package/abstractions/edges/edges.d.ts +24 -12
  4. package/abstractions/grid/grid.d.ts +42 -51
  5. package/abstractions/index.d.ts +1 -7
  6. package/abstractions/text/text.d.ts +10 -4
  7. package/abstractions/text-3d/text-3d.d.ts +51 -41
  8. package/cameras/camera/camera-content.d.ts +1 -1
  9. package/cameras/camera/camera.d.ts +16 -13
  10. package/cameras/cube-camera/cube-camera.d.ts +49 -23
  11. package/cameras/index.d.ts +0 -1
  12. package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
  13. package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
  14. package/controls/orbit-controls/orbit-controls.d.ts +34 -15
  15. package/esm2022/abstractions/billboard/billboard.mjs +36 -33
  16. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  17. package/esm2022/abstractions/edges/edges.mjs +58 -63
  18. package/esm2022/abstractions/grid/grid.mjs +140 -110
  19. package/esm2022/abstractions/index.mjs +2 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -122
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +120 -115
  22. package/esm2022/cameras/camera/camera-content.mjs +6 -6
  23. package/esm2022/cameras/camera/camera.mjs +48 -42
  24. package/esm2022/cameras/cube-camera/cube-camera.mjs +120 -100
  25. package/esm2022/cameras/index.mjs +1 -2
  26. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
  27. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
  28. package/esm2022/controls/orbit-controls/orbit-controls.mjs +109 -85
  29. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  30. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +198 -0
  31. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  32. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
  33. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +151 -0
  34. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
  35. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
  36. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
  37. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
  38. package/esm2022/gizmos/index.mjs +4 -0
  39. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +14 -9
  40. package/esm2022/loaders/loader/loader.mjs +92 -87
  41. package/esm2022/loaders/progress/progress.mjs +31 -30
  42. package/esm2022/loaders/texture-loader/texture-loader.mjs +20 -15
  43. package/esm2022/materials/index.mjs +2 -1
  44. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  45. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  46. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
  47. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +164 -144
  48. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  49. package/esm2022/materials/point-material/point-material.mjs +50 -0
  50. package/esm2022/misc/animations/animations.mjs +28 -23
  51. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  52. package/esm2022/misc/caustics/caustics.mjs +387 -0
  53. package/esm2022/misc/decal/decal.mjs +187 -0
  54. package/esm2022/misc/depth-buffer/depth-buffer.mjs +41 -37
  55. package/esm2022/misc/example/example.mjs +161 -0
  56. package/esm2022/misc/fbo/fbo.mjs +42 -36
  57. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  58. package/esm2022/misc/html/html.mjs +305 -0
  59. package/esm2022/misc/index.mjs +10 -1
  60. package/esm2022/misc/sampler/sampler.mjs +132 -0
  61. package/esm2022/misc/shadow/shadow.mjs +111 -0
  62. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  63. package/esm2022/misc/trail/trail.mjs +204 -0
  64. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  65. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  66. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  67. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  68. package/esm2022/modifiers/index.mjs +2 -0
  69. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  70. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  71. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  72. package/esm2022/performances/index.mjs +8 -0
  73. package/esm2022/performances/instances/instances.mjs +221 -0
  74. package/esm2022/performances/instances/position-mesh.mjs +52 -0
  75. package/esm2022/performances/points/points-input.mjs +64 -0
  76. package/esm2022/performances/points/points.mjs +327 -0
  77. package/esm2022/performances/points/position-point.mjs +54 -0
  78. package/esm2022/performances/segments/segment-object.mjs +9 -0
  79. package/esm2022/performances/segments/segments.mjs +183 -0
  80. package/esm2022/shaders/blur-pass/blur-pass.mjs +2 -2
  81. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  82. package/esm2022/shaders/caustics/caustics-projection-material.mjs +32 -0
  83. package/esm2022/shaders/convolution-material/convolution-material.mjs +3 -2
  84. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  85. package/esm2022/shaders/grid-material/grid-material.mjs +30 -14
  86. package/esm2022/shaders/index.mjs +5 -3
  87. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  88. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +2 -2
  89. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +3 -2
  90. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +7 -4
  91. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  92. package/esm2022/shaders/shader-material/shader-material.mjs +3 -5
  93. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +18 -25
  94. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  95. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +8 -7
  96. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  97. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  98. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +161 -176
  99. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +8 -8
  100. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +129 -129
  101. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  102. package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
  103. package/esm2022/staging/bounds/bounds.mjs +145 -143
  104. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  105. package/esm2022/staging/center/center.mjs +129 -112
  106. package/esm2022/staging/cloud/cloud.mjs +118 -124
  107. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -136
  108. package/esm2022/staging/environment/assets.mjs +12 -12
  109. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  110. package/esm2022/staging/environment/environment-ground.mjs +17 -19
  111. package/esm2022/staging/environment/environment-input.mjs +98 -85
  112. package/esm2022/staging/environment/environment-map.mjs +33 -33
  113. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  114. package/esm2022/staging/environment/environment.mjs +34 -51
  115. package/esm2022/staging/environment/utils.mjs +40 -17
  116. package/esm2022/staging/float/float.mjs +70 -58
  117. package/esm2022/staging/index.mjs +7 -3
  118. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  119. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  120. package/esm2022/staging/sky/sky.mjs +85 -80
  121. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  122. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  123. package/esm2022/staging/spot-light/shadow-mesh.mjs +267 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  125. package/esm2022/staging/spot-light/spot-light.mjs +51 -63
  126. package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
  127. package/esm2022/staging/stage/stage.mjs +305 -290
  128. package/esm2022/staging/stars/stars.mjs +101 -102
  129. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  130. package/esm2022/staging/wireframe/wireframe.mjs +228 -0
  131. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  132. package/esm2022/utils/constants.mjs +3 -0
  133. package/esm2022/utils/content/content.mjs +15 -0
  134. package/esm2022/utils/index.mjs +3 -0
  135. package/fesm2022/angular-three-soba-abstractions.mjs +504 -2079
  136. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  137. package/fesm2022/angular-three-soba-cameras.mjs +293 -260
  138. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  139. package/fesm2022/angular-three-soba-controls.mjs +108 -83
  140. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  141. package/fesm2022/angular-three-soba-gizmos.mjs +1045 -0
  142. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  143. package/fesm2022/angular-three-soba-loaders.mjs +148 -132
  144. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  145. package/fesm2022/angular-three-soba-materials.mjs +656 -588
  146. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  147. package/fesm2022/angular-three-soba-misc.mjs +2202 -99
  148. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  149. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  150. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  151. package/fesm2022/angular-three-soba-performances.mjs +957 -0
  152. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  153. package/fesm2022/angular-three-soba-shaders.mjs +508 -269
  154. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  155. package/fesm2022/angular-three-soba-staging.mjs +2910 -2573
  156. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  157. package/fesm2022/angular-three-soba-utils.mjs +25 -0
  158. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  159. package/gizmos/README.md +3 -0
  160. package/gizmos/gizmo-helper/gizmo-helper.d.ts +73 -0
  161. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  162. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
  163. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
  164. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
  165. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
  166. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
  167. package/gizmos/index.d.ts +3 -0
  168. package/loaders/gltf-loader/gltf-loader.d.ts +15 -4
  169. package/loaders/loader/loader.d.ts +19 -17
  170. package/loaders/progress/progress.d.ts +1 -1
  171. package/loaders/texture-loader/texture-loader.d.ts +8 -3
  172. package/materials/index.d.ts +1 -0
  173. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  174. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  175. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  176. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  177. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  178. package/materials/point-material/point-material.d.ts +24 -0
  179. package/metadata.json +1 -0
  180. package/misc/animations/animations.d.ts +6 -4
  181. package/misc/caustics/caustics.d.ts +87 -0
  182. package/misc/decal/decal.d.ts +49 -0
  183. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  184. package/misc/example/example.d.ts +85 -0
  185. package/misc/fbo/fbo.d.ts +2 -2
  186. package/misc/html/html-wrapper.d.ts +559 -0
  187. package/misc/html/html.d.ts +218 -0
  188. package/misc/index.d.ts +9 -0
  189. package/misc/sampler/sampler.d.ts +67 -0
  190. package/misc/shadow/shadow.d.ts +37 -0
  191. package/misc/stats-gl/stats-gl.d.ts +24 -0
  192. package/misc/trail/trail.d.ts +57 -0
  193. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  194. package/misc/trail-texture/trail-texture.d.ts +50 -0
  195. package/modifiers/README.md +3 -0
  196. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  197. package/modifiers/index.d.ts +1 -0
  198. package/package.json +42 -24
  199. package/performances/README.md +3 -0
  200. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  201. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  202. package/performances/index.d.ts +7 -0
  203. package/performances/instances/instances.d.ts +83 -0
  204. package/{performance → performances}/instances/position-mesh.d.ts +1 -1
  205. package/performances/points/points-input.d.ts +32 -0
  206. package/performances/points/points.d.ts +96 -0
  207. package/performances/points/position-point.d.ts +11 -0
  208. package/performances/segments/segment-object.d.ts +7 -0
  209. package/performances/segments/segments.d.ts +128 -0
  210. package/shaders/grid-material/grid-material.d.ts +33 -0
  211. package/shaders/index.d.ts +4 -2
  212. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +173 -6
  213. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  214. package/shaders/shader-material/shader-material.d.ts +2 -2
  215. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  216. package/shaders/sparkles-material/sparkles-material.d.ts +13 -0
  217. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  218. package/shaders/star-field-material/star-field-material.d.ts +9 -0
  219. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  220. package/staging/accumulative-shadows/accumulative-shadows.d.ts +93 -39
  221. package/staging/accumulative-shadows/randomized-lights.d.ts +41 -28
  222. package/staging/backdrop/backdrop.d.ts +30 -0
  223. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  224. package/staging/bounds/bounds.d.ts +105 -25
  225. package/staging/camera-shake/camera-shake.d.ts +30 -19
  226. package/staging/center/center.d.ts +43 -35
  227. package/staging/cloud/cloud.d.ts +27 -24
  228. package/staging/contact-shadows/contact-shadows.d.ts +43 -30
  229. package/staging/environment/assets.d.ts +9 -9
  230. package/staging/environment/environment-cube.d.ts +9 -5
  231. package/staging/environment/environment-ground.d.ts +7 -7
  232. package/staging/environment/environment-input.d.ts +38 -38
  233. package/staging/environment/environment-map.d.ts +10 -5
  234. package/staging/environment/environment-portal.d.ts +10 -5
  235. package/staging/environment/environment.d.ts +0 -4
  236. package/staging/environment/utils.d.ts +2 -2
  237. package/staging/float/float.d.ts +15 -11
  238. package/staging/index.d.ts +6 -2
  239. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  240. package/staging/normal-texture/normal-texture.d.ts +16 -0
  241. package/staging/sky/sky.d.ts +28 -21
  242. package/staging/sparkles/sparkles.d.ts +36 -22
  243. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  244. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  245. package/staging/spot-light/spot-light-input.d.ts +25 -25
  246. package/staging/spot-light/spot-light.d.ts +35 -15
  247. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  248. package/staging/stage/stage.d.ts +89 -65
  249. package/staging/stars/stars.d.ts +28 -17
  250. package/staging/wireframe/wireframe-input.d.ts +65 -0
  251. package/staging/wireframe/wireframe.d.ts +28 -0
  252. package/utils/README.md +3 -0
  253. package/utils/constants.d.ts +1 -0
  254. package/utils/content/content.d.ts +8 -0
  255. package/utils/index.d.ts +2 -0
  256. package/web-types.json +1 -0
  257. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  258. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  259. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  260. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  261. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  262. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  263. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  264. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  265. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  266. package/abstractions/line/line-input.d.ts +0 -42
  267. package/abstractions/line/line.d.ts +0 -35
  268. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  269. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  270. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  271. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  272. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  273. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  274. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  275. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  276. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  277. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  278. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  279. package/esm2022/abstractions/line/line-input.mjs +0 -113
  280. package/esm2022/abstractions/line/line.mjs +0 -165
  281. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  282. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  283. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  284. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  285. package/esm2022/performance/detailed/detailed.mjs +0 -61
  286. package/esm2022/performance/index.mjs +0 -7
  287. package/esm2022/performance/instances/instance.mjs +0 -48
  288. package/esm2022/performance/instances/instances.mjs +0 -189
  289. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  290. package/esm2022/performance/stats/stats.mjs +0 -79
  291. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  292. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  293. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  294. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  295. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
  296. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  297. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  298. package/performance/README.md +0 -3
  299. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  300. package/performance/detailed/detailed.d.ts +0 -20
  301. package/performance/index.d.ts +0 -6
  302. package/performance/instances/instance.d.ts +0 -9
  303. package/performance/instances/instances.d.ts +0 -35
  304. package/performance/stats/stats.d.ts +0 -18
  305. package/plugin/generators.json +0 -19
  306. package/plugin/libs/plugin/README.md +0 -11
  307. package/plugin/package.json +0 -9
  308. package/plugin/src/generators/init/compat.d.ts +0 -2
  309. package/plugin/src/generators/init/compat.js +0 -6
  310. package/plugin/src/generators/init/compat.js.map +0 -1
  311. package/plugin/src/generators/init/init.d.ts +0 -7
  312. package/plugin/src/generators/init/init.js +0 -28
  313. package/plugin/src/generators/init/init.js.map +0 -1
  314. package/plugin/src/generators/init/schema.json +0 -6
  315. package/plugin/src/index.d.ts +0 -1
  316. package/plugin/src/index.js +0 -6
  317. package/plugin/src/index.js.map +0 -1
  318. package/staging/caustics/caustisc.d.ts +0 -70
  319. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  320. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  321. /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
  322. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  323. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-soba-gizmos.mjs","sources":["../../../../libs/soba/gizmos/src/gizmo-helper/gizmo-helper.ts","../../../../libs/soba/gizmos/src/gizmo-helper/gizmo-viewcube/constants.ts","../../../../libs/soba/gizmos/src/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.ts","../../../../libs/soba/gizmos/src/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.ts","../../../../libs/soba/gizmos/src/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.ts","../../../../libs/soba/gizmos/src/gizmo-helper/gizmo-viewcube/gizmo-viewcube.ts","../../../../libs/soba/gizmos/src/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.ts","../../../../libs/soba/gizmos/src/gizmo-helper/gizmo-viewport/gizmo-viewport.ts","../../../../libs/soba/gizmos/src/angular-three-soba-gizmos.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tContentChild,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tTemplateRef,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\ttype Signal,\n} from '@angular/core';\nimport {\n\tNgtPortal,\n\tNgtPortalContent,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tsignalStore,\n\ttype NgtGroup,\n} from 'angular-three';\nimport { NgtsOrthographicCamera } from 'angular-three-soba/cameras';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport { createInjectionToken } from 'ngxtension/create-injection-token';\nimport { Group, Matrix4, Object3D, OrthographicCamera, Quaternion, Vector3 } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nexport type NgtsGizmoHelperState = {\n\talignment:\n\t\t| 'top-left'\n\t\t| 'top-right'\n\t\t| 'bottom-right'\n\t\t| 'bottom-left'\n\t\t| 'bottom-center'\n\t\t| 'center-right'\n\t\t| 'center-left'\n\t\t| 'center-center'\n\t\t| 'top-center';\n\tmargin: [number, number];\n\trenderPriority: number;\n\tautoClear?: boolean;\n};\n\ntype ControlsProto = { update(): void; target: THREE.Vector3 };\n\nconst isOrbitControls = (controls: ControlsProto): controls is OrbitControls => {\n\treturn 'minPolarAngle' in (controls as OrbitControls);\n};\n\nextend({ Group });\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-gizmo-helper': NgtsGizmoHelperState & NgtGroup;\n\t}\n}\n\nexport const [injectNgtsGizmoHelperApi, provideNgtsGizmoHelperApi] = createInjectionToken(\n\t(gizmoHelper: NgtsGizmoHelper) => gizmoHelper.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsGizmoHelper)] },\n);\n\n@Component({\n\tselector: 'ngts-gizmo-helper',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-portal [renderPriority]=\"renderPriority()\">\n\t\t\t<ng-template ngtPortalContent>\n\t\t\t\t<ngts-orthographic-camera [makeDefault]=\"true\" [position]=\"[0, 0, 200]\" [cameraRef]=\"virtualCamRef\" />\n\t\t\t\t<ngt-group [ref]=\"gizmoRef\" [position]=\"gizmoPosition()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t\t\t</ngt-group>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\timports: [NgtPortal, NgtPortalContent, NgtsOrthographicCamera, NgTemplateOutlet],\n\tproviders: [provideNgtsGizmoHelperApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoHelper {\n\tprivate inputs = signalStore<NgtsGizmoHelperState>({\n\t\talignment: 'bottom-right',\n\t\tmargin: [80, 80],\n\t\trenderPriority: 1,\n\t});\n\n\t@Input() gizmoRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'alignment' }) set _alignment(\n\t\talignment:\n\t\t\t| 'top-left'\n\t\t\t| 'top-right'\n\t\t\t| 'bottom-right'\n\t\t\t| 'bottom-left'\n\t\t\t| 'bottom-center'\n\t\t\t| 'center-right'\n\t\t\t| 'center-left'\n\t\t\t| 'center-center'\n\t\t\t| 'top-center',\n\t) {\n\t\tthis.inputs.set({ alignment });\n\t}\n\n\t@Input({ alias: 'margin' }) set _margin(margin: [number, number]) {\n\t\tthis.inputs.set({ margin });\n\t}\n\n\t@Input({ alias: 'renderPriority' }) set _renderPriority(renderPriority: number) {\n\t\tthis.inputs.set({ renderPriority });\n\t}\n\n\t@Input({ alias: 'autoClear' }) set _autoClear(autoClear: boolean) {\n\t\tthis.inputs.set({ autoClear });\n\t}\n\n\t@Output() update = new EventEmitter();\n\n\t@ContentChild(NgtsSobaContent, { static: true, read: TemplateRef }) content!: TemplateRef<unknown>;\n\n\tprivate store = injectNgtStore();\n\tprivate mainCamera = this.store.select('camera');\n\t// @ts-expect-error\n\tprivate defaultControls = this.store.select('controls') as Signal<ControlsProto>;\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate size = this.store.select('size');\n\n\tprivate animating = false;\n\tprivate q1 = new Quaternion();\n\tprivate q2 = new Quaternion();\n\tprivate turnRate = 2 * Math.PI; // turn rate in angles per second\n\tprivate matrix = new Matrix4();\n\n\tprivate radius = 0;\n\tprivate focusPoint = new Vector3(0, 0, 0);\n\tprivate defaultUp = new Vector3(0, 0, 0);\n\tprivate target = new Vector3();\n\tprivate targetPosition = new Vector3();\n\tprivate dummy = new Object3D();\n\n\tprivate margin = this.inputs.select('margin');\n\tprivate alignment = this.inputs.select('alignment');\n\n\tvirtualCamRef = injectNgtRef<OrthographicCamera>();\n\trenderPriority = this.inputs.select('renderPriority');\n\n\tgizmoPosition = computed(() => {\n\t\tconst [{ width, height }, [marginX, marginY], alignment] = [this.size(), this.margin(), this.alignment()];\n\t\tconst x = alignment.endsWith('-center')\n\t\t\t? 0\n\t\t\t: alignment.endsWith('-left')\n\t\t\t? -width / 2 + marginX\n\t\t\t: width / 2 - marginX;\n\t\tconst y = alignment.startsWith('center-')\n\t\t\t? 0\n\t\t\t: alignment.startsWith('top-')\n\t\t\t? height / 2 - marginY\n\t\t\t: -height / 2 + marginY;\n\t\treturn [x, y, 0];\n\t});\n\n\tapi = {\n\t\ttweenCamera: (direction: Vector3) => {\n\t\t\tconst [defaultControls, mainCamera, invalidate] = [\n\t\t\t\tthis.defaultControls(),\n\t\t\t\tthis.mainCamera(),\n\t\t\t\tthis.invalidate(),\n\t\t\t];\n\t\t\tthis.animating = true;\n\t\t\tif (defaultControls) this.focusPoint = defaultControls?.target;\n\t\t\tthis.radius = mainCamera.position.distanceTo(this.target);\n\n\t\t\t// Rotate from current camera orientation\n\t\t\tthis.q1.copy(mainCamera.quaternion);\n\n\t\t\t// To new current camera orientation\n\t\t\tthis.targetPosition.copy(direction).multiplyScalar(this.radius).add(this.target);\n\n\t\t\tthis.dummy.lookAt(this.targetPosition);\n\t\t\tthis.dummy.up.copy(mainCamera.up);\n\n\t\t\tthis.q2.copy(this.dummy.quaternion);\n\n\t\t\tinvalidate();\n\t\t},\n\t};\n\n\tconstructor() {\n\t\tthis.trackMainCameraUp();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate trackMainCameraUp() {\n\t\teffect(() => {\n\t\t\tconst mainCamera = this.mainCamera();\n\t\t\tthis.defaultUp.copy(mainCamera.up);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [gizmo, virtualCam, defaultControls, mainCamera, invalidate] = [\n\t\t\t\tthis.gizmoRef.nativeElement,\n\t\t\t\tthis.virtualCamRef.nativeElement,\n\t\t\t\tthis.defaultControls(),\n\t\t\t\tthis.mainCamera(),\n\t\t\t\tthis.invalidate(),\n\t\t\t];\n\n\t\t\tif (gizmo && virtualCam) {\n\t\t\t\t// Animate step\n\t\t\t\tif (this.animating) {\n\t\t\t\t\tif (this.q1.angleTo(this.q2) < 0.01) {\n\t\t\t\t\t\tthis.animating = false;\n\t\t\t\t\t\t// Orbit controls uses UP vector as the orbit axes,\n\t\t\t\t\t\t// so we need to reset it after the animation is done\n\t\t\t\t\t\t// moving it around for the controls to work correctly\n\t\t\t\t\t\tif (isOrbitControls(defaultControls)) {\n\t\t\t\t\t\t\tmainCamera.up.copy(this.defaultUp);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst step = delta * this.turnRate;\n\t\t\t\t\t\t// animate position by doing a slerp and then scaling the position on the unit sphere\n\t\t\t\t\t\tthis.q1.rotateTowards(this.q2, step);\n\t\t\t\t\t\t// animate orientation\n\t\t\t\t\t\tmainCamera.position\n\t\t\t\t\t\t\t.set(0, 0, 1)\n\t\t\t\t\t\t\t.applyQuaternion(this.q1)\n\t\t\t\t\t\t\t.multiplyScalar(this.radius)\n\t\t\t\t\t\t\t.add(this.focusPoint);\n\t\t\t\t\t\tmainCamera.up.set(0, 1, 0).applyQuaternion(this.q1).normalize();\n\t\t\t\t\t\tmainCamera.quaternion.copy(this.q1);\n\t\t\t\t\t\tif (this.update.observed) this.update.emit();\n\t\t\t\t\t\telse if (defaultControls) defaultControls.update();\n\t\t\t\t\t\tinvalidate();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Sync Gizmo with main camera orientation\n\t\t\t\tthis.matrix.copy(mainCamera.matrix).invert();\n\t\t\t\tgizmo.quaternion.setFromRotationMatrix(this.matrix);\n\t\t\t}\n\t\t});\n\t}\n}\n","import * as THREE from 'three';\n\nexport const colors = { bg: '#f0f0f0', hover: '#999', text: 'black', stroke: 'black' };\nexport const defaultFaces = ['Right', 'Left', 'Top', 'Bottom', 'Front', 'Back'];\nconst makePositionVector = (xyz: number[]) => new THREE.Vector3(...xyz).multiplyScalar(0.38);\n\nexport const corners: THREE.Vector3[] = [\n\t[1, 1, 1],\n\t[1, 1, -1],\n\t[1, -1, 1],\n\t[1, -1, -1],\n\t[-1, 1, 1],\n\t[-1, 1, -1],\n\t[-1, -1, 1],\n\t[-1, -1, -1],\n].map(makePositionVector);\n\nexport const cornerDimensions = [0.25, 0.25, 0.25] as [number, number, number];\n\nexport const edges: THREE.Vector3[] = [\n\t[1, 1, 0],\n\t[1, 0, 1],\n\t[1, 0, -1],\n\t[1, -1, 0],\n\t[0, 1, 1],\n\t[0, 1, -1],\n\t[0, -1, 1],\n\t[0, -1, -1],\n\t[-1, 1, 0],\n\t[-1, 0, 1],\n\t[-1, 0, -1],\n\t[-1, -1, 0],\n].map(makePositionVector);\n\nexport const edgeDimensions = edges.map(\n\t(edge) => edge.toArray().map((axis: number): number => (axis == 0 ? 0.5 : 0.25)) as [number, number, number],\n);\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { signalStore, type NgtThreeEvent } from 'angular-three';\n\nexport type NgtsGizmoViewCubeInputState = {\n\topacity: number;\n\thoverColor: string;\n\ttextColor: string;\n\tstrokeColor: string;\n\tfaces: string[];\n\tfont?: string;\n\tcolor?: string;\n\tclickEmitter: EventEmitter<NgtThreeEvent<MouseEvent>>;\n};\n\n@Directive()\nexport abstract class NgtsGizmoViewcubeInput {\n\tinputs = signalStore<NgtsGizmoViewCubeInputState>({});\n\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t@Input({ alias: 'hoverColor' }) set _hoverColor(hoverColor: string) {\n\t\tthis.inputs.set({ hoverColor });\n\t}\n\n\t@Input({ alias: 'textColor' }) set _textColor(textColor: string) {\n\t\tthis.inputs.set({ textColor });\n\t}\n\n\t@Input({ alias: 'strokeColor' }) set _strokeColor(strokeColor: string) {\n\t\tthis.inputs.set({ strokeColor });\n\t}\n\n\t@Input({ alias: 'faces' }) set _faces(faces: string[]) {\n\t\tthis.inputs.set({ faces });\n\t}\n\n\t@Input({ alias: 'font' }) set _font(font: string) {\n\t\tthis.inputs.set({ font });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: string) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Output() viewcubeClick = new EventEmitter<NgtThreeEvent<MouseEvent>>();\n\n\thoverColor = this.inputs.select('hoverColor');\n\topacity = this.inputs.select('opacity');\n\ttextColor = this.inputs.select('textColor');\n\tstrokeColor = this.inputs.select('strokeColor');\n\tfaces = this.inputs.select('faces');\n\tfont = this.inputs.select('font');\n\tcolor = this.inputs.select('color');\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input, signal } from '@angular/core';\nimport { extend, NgtArgs, signalStore, type NgtThreeEvent } from 'angular-three';\nimport { BoxGeometry, Mesh, MeshBasicMaterial, Vector3 } from 'three';\nimport { injectNgtsGizmoHelperApi } from '../gizmo-helper';\nimport { colors } from './constants';\nimport { NgtsGizmoViewcubeInput } from './gizmo-viewcube-input';\n\nextend({ Mesh, BoxGeometry, MeshBasicMaterial });\n\n@Component({\n\tselector: 'ngts-gizmo-viewcube-edge-cube',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh\n\t\t\t[scale]=\"1.01\"\n\t\t\t[position]=\"position()\"\n\t\t\t(pointermove)=\"onPointerMove($event)\"\n\t\t\t(pointerout)=\"onPointerOut($event)\"\n\t\t\t(click)=\"onClick($event)\"\n\t\t>\n\t\t\t<ngt-box-geometry *args=\"dimensions()\" />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\t[color]=\"hover() ? viewcubeInput.hoverColor() : 'white'\"\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[opacity]=\"0.6\"\n\t\t\t\t[visible]=\"hover()\"\n\t\t\t/>\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewcubeEdgeCube {\n\tprivate inputs = signalStore<{\n\t\tposition: THREE.Vector3;\n\t\tdimensions: [number, number, number];\n\t}>();\n\n\tgizmoApi = injectNgtsGizmoHelperApi();\n\tviewcubeInput = inject(NgtsGizmoViewcubeInput);\n\n\thover = signal(false);\n\n\t@Input({ required: true, alias: 'dimensions' }) set _dimensions(dimensions: [number, number, number]) {\n\t\tthis.inputs.set({ dimensions });\n\t}\n\n\t@Input({ required: true, alias: 'position' }) set _position(position: Vector3) {\n\t\tthis.inputs.set({ position });\n\t}\n\n\tposition = this.inputs.select('position');\n\tdimensions = this.inputs.select('dimensions');\n\n\tconstructor() {\n\t\tthis.viewcubeInput.inputs.patch({ hoverColor: colors.hover });\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hover.set(true);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hover.set(false);\n\t}\n\n\tonClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tif (this.viewcubeInput.viewcubeClick.observed) {\n\t\t\tthis.viewcubeInput.viewcubeClick.emit(event);\n\t\t} else {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoApi.tweenCamera(this.position());\n\t\t}\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input, signal } from '@angular/core';\nimport { extend, injectNgtStore, signalStore, type NgtThreeEvent } from 'angular-three';\nimport { Repeat } from 'ngxtension/repeat';\nimport { BoxGeometry, CanvasTexture, Mesh, MeshLambertMaterial } from 'three';\nimport { injectNgtsGizmoHelperApi } from '../gizmo-helper';\nimport { colors, defaultFaces } from './constants';\nimport { NgtsGizmoViewcubeInput } from './gizmo-viewcube-input';\n\nextend({ MeshLambertMaterial, Mesh, BoxGeometry });\n\n@Component({\n\tselector: 'ngts-gizmo-viewcube-face-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh-lambert-material\n\t\t\t[attach]=\"['material', index()]\"\n\t\t\t[map]=\"texture()\"\n\t\t\t[color]=\"hover() ? viewcubeInput.hoverColor() : viewcubeInput.color()\"\n\t\t\t[opacity]=\"viewcubeInput.opacity()\"\n\t\t\t[transparent]=\"true\"\n\t\t>\n\t\t\t<ngt-value [rawValue]=\"gl().capabilities.getMaxAnisotropy() || 1\" attach=\"map.anisotrophy\" />\n\t\t</ngt-mesh-lambert-material>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewcubeFaceMaterial {\n\tprivate inputs = signalStore<{ index: number; hover: boolean }>();\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectNgtStore();\n\tgl = this.store.select('gl');\n\n\tviewcubeInput = inject(NgtsGizmoViewcubeInput);\n\n\t@Input({ required: true, alias: 'index' }) set _index(index: number) {\n\t\tthis.inputs.set({ index });\n\t}\n\n\t@Input({ required: true, alias: 'hover' }) set _hover(hover: boolean) {\n\t\tthis.inputs.set({ hover });\n\t}\n\n\tindex = this.inputs.select('index');\n\thover = this.inputs.select('hover');\n\n\ttexture = computed(() => {\n\t\tconst [index, color, font, faces, textColor, strokeColor] = [\n\t\t\tthis.index(),\n\t\t\tthis.viewcubeInput.color(),\n\t\t\tthis.viewcubeInput.font(),\n\t\t\tthis.viewcubeInput.faces(),\n\t\t\tthis.viewcubeInput.textColor(),\n\t\t\tthis.viewcubeInput.strokeColor(),\n\t\t];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 128;\n\t\tcanvas.height = 128;\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.fillStyle = color!;\n\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.strokeStyle = strokeColor;\n\t\tcontext.strokeRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.font = font!;\n\t\tcontext.textAlign = 'center';\n\t\tcontext.fillStyle = textColor;\n\t\tcontext.fillText(faces[index].toUpperCase(), 64, 76);\n\n\t\treturn new CanvasTexture(canvas);\n\t});\n\n\tconstructor() {\n\t\tthis.viewcubeInput.inputs.patch({\n\t\t\tcolor: colors.bg,\n\t\t\tfont: '20px Inter var, Arial, sans-serif',\n\t\t\tfaces: defaultFaces,\n\t\t\thoverColor: colors.hover,\n\t\t\ttextColor: colors.text,\n\t\t\tstrokeColor: colors.stroke,\n\t\t\topacity: 1,\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-gizmo-viewcube-face-cube',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh\n\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t(click)=\"onClick($any($event))\"\n\t\t>\n\t\t\t<ngt-box-geometry />\n\t\t\t<ngts-gizmo-viewcube-face-material *ngFor=\"let i; repeat: 6\" [hover]=\"hover() === i\" [index]=\"i\" />\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtsGizmoViewcubeFaceMaterial, Repeat],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewcubeFaceCube {\n\tprivate gizmoApi = injectNgtsGizmoHelperApi();\n\tprivate viewcubeInput = inject(NgtsGizmoViewcubeInput);\n\n\thover = signal(-1);\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hover.set(Math.floor(event.faceIndex! / 2));\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hover.set(-1);\n\t}\n\n\tonClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tif (this.viewcubeInput.viewcubeClick.observed) {\n\t\t\tthis.viewcubeInput.viewcubeClick.emit(event);\n\t\t} else {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoApi.tweenCamera(event.face!.normal);\n\t\t}\n\t}\n}\n","import { NgFor } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { extend } from 'angular-three';\nimport { AmbientLight, Group, PointLight } from 'three';\nimport { cornerDimensions, corners, edgeDimensions, edges } from './constants';\nimport { NgtsGizmoViewcubeEdgeCube } from './gizmo-viewcube-edge';\nimport { NgtsGizmoViewcubeFaceCube } from './gizmo-viewcube-face';\nimport { NgtsGizmoViewcubeInput } from './gizmo-viewcube-input';\n\nextend({ Group, AmbientLight, PointLight });\n\n@Component({\n\tselector: 'ngts-gizmo-viewcube',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [scale]=\"60\">\n\t\t\t<ngts-gizmo-viewcube-face-cube />\n\n\t\t\t<ngts-gizmo-viewcube-edge-cube\n\t\t\t\t*ngFor=\"let edge of edges; let i = index\"\n\t\t\t\t[position]=\"edge\"\n\t\t\t\t[dimensions]=\"edgeDimensions[i]\"\n\t\t\t/>\n\n\t\t\t<ngts-gizmo-viewcube-edge-cube\n\t\t\t\t*ngFor=\"let corner of corners\"\n\t\t\t\t[position]=\"corner\"\n\t\t\t\t[dimensions]=\"cornerDimensions\"\n\t\t\t/>\n\n\t\t\t<ngt-ambient-light [intensity]=\"0.5\" />\n\t\t\t<ngt-point-light [position]=\"10\" [intensity]=\"0.5\" />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtsGizmoViewcubeEdgeCube, NgtsGizmoViewcubeFaceCube, NgFor],\n\tproviders: [{ provide: NgtsGizmoViewcubeInput, useExisting: NgtsGizmoViewcube }],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewcube extends NgtsGizmoViewcubeInput {\n\tedges = edges;\n\tedgeDimensions = edgeDimensions;\n\n\tcorners = corners;\n\tcornerDimensions = cornerDimensions;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, inject, Input, signal } from '@angular/core';\nimport { extend, injectNgtStore, NgtArgs, signalStore, type NgtThreeEvent } from 'angular-three';\nimport { BoxGeometry, CanvasTexture, Group, Mesh, MeshBasicMaterial, Sprite, SpriteMaterial } from 'three';\n\nextend({ Group, Mesh, BoxGeometry, MeshBasicMaterial, Sprite, SpriteMaterial });\n\n@Component({\n\tselector: 'ngts-gizmo-viewport-axis',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [rotation]=\"rotation()\">\n\t\t\t<ngt-mesh [position]=\"[0.4, 0, 0]\">\n\t\t\t\t<ngt-box-geometry *args=\"scale()\" />\n\t\t\t\t<ngt-mesh-basic-material [color]=\"color()\" [toneMapped]=\"false\" />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewportAxis {\n\tprivate inputs = signalStore<{\n\t\tcolor: string;\n\t\trotation: [number, number, number];\n\t\tscale: [number, number, number];\n\t}>({ scale: [0.8, 0.05, 0.05] });\n\n\t@Input({ required: true, alias: 'color' }) set _color(color: string) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ required: true, alias: 'rotation' }) set _rotation(rotation: [number, number, number]) {\n\t\tthis.inputs.set({ rotation });\n\t}\n\n\t@Input({ alias: 'scale' }) set _scale(scale: [number, number, number]) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\trotation = this.inputs.select('rotation');\n\tcolor = this.inputs.select('color');\n\tscale = this.inputs.select('scale');\n}\n\n@Component({\n\tselector: 'ngts-gizmo-viewport-axis-head',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-sprite\n\t\t\tngtCompound\n\t\t\t[scale]=\"scale()\"\n\t\t\t(pointerover)=\"onPointerOver($event)\"\n\t\t\t(pointerout)=\"onPointerOut($event)\"\n\t\t>\n\t\t\t<ngt-sprite-material\n\t\t\t\t[map]=\"texture()\"\n\t\t\t\t[opacity]=\"label() ? 1 : 0.75\"\n\t\t\t\t[alphaTest]=\"0.3\"\n\t\t\t\t[toneMapped]=\"false\"\n\t\t\t>\n\t\t\t\t<ngt-value [rawValue]=\"capabilities().getMaxAnisotropy() || 1\" attach=\"map.anisotropy\" />\n\t\t\t</ngt-sprite-material>\n\t\t</ngt-sprite>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewportAxisHead {\n\tprivate inputs = signalStore<{\n\t\tarcStyle: string;\n\t\tlabel: string;\n\t\tlabelColor: string;\n\t\taxisHeadScale: number;\n\t\tdisabled: boolean;\n\t\tfont: string;\n\t}>({ axisHeadScale: 1 });\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectNgtStore();\n\tcapabilities = this.store.select('gl', 'capabilities');\n\n\t@Input({ alias: 'arcStyle' }) set _arcStyle(arcStyle: string) {\n\t\tthis.inputs.set({ arcStyle });\n\t}\n\n\t@Input({ alias: 'label' }) set _label(label: string) {\n\t\tthis.inputs.set({ label });\n\t}\n\n\t@Input({ alias: 'labelColor' }) set _labelColor(labelColor: string) {\n\t\tthis.inputs.set({ labelColor });\n\t}\n\n\t@Input({ alias: 'axisHeadScale' }) set _axisHeadScale(axisHeadScale: number) {\n\t\tthis.inputs.set({ axisHeadScale });\n\t}\n\n\t@Input({ alias: 'disabled' }) set _disabled(disabled: boolean) {\n\t\tthis.inputs.set({ disabled });\n\t}\n\n\t@Input({ alias: 'font' }) set _font(font: string) {\n\t\tthis.inputs.set({ font });\n\t}\n\n\t@Input() viewportClickEmitter?: EventEmitter<NgtThreeEvent<MouseEvent>>;\n\n\tactive = signal(false);\n\n\tprivate arcStyle = this.inputs.select('arcStyle');\n\tprivate labelColor = this.inputs.select('labelColor');\n\tprivate font = this.inputs.select('font');\n\tprivate axisHeadScale = this.inputs.select('axisHeadScale');\n\n\tlabel = this.inputs.select('label');\n\n\ttexture = computed(() => {\n\t\tconst [arcStyle, labelColor, font, label] = [this.arcStyle(), this.labelColor(), this.font(), this.label()];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 64;\n\t\tcanvas.height = 64;\n\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.beginPath();\n\t\tcontext.arc(32, 32, 16, 0, 2 * Math.PI);\n\t\tcontext.closePath();\n\t\tcontext.fillStyle = arcStyle;\n\t\tcontext.fill();\n\n\t\tif (label) {\n\t\t\tcontext.font = font;\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.fillStyle = labelColor;\n\t\t\tcontext.fillText(label, 32, 41);\n\t\t}\n\t\treturn new CanvasTexture(canvas);\n\t});\n\n\tscale = computed(() => {\n\t\tconst [active, axisHeadScale, label] = [this.active(), this.axisHeadScale(), this.label()];\n\t\treturn (label ? 1 : 0.75) * (active ? 1.2 : 1) * axisHeadScale;\n\t});\n\n\tonPointerOver(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (!this.inputs.get('disabled')) {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.active.set(true);\n\t\t}\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (!this.inputs.get('disabled')) {\n\t\t\tif (this.viewportClickEmitter?.observed) {\n\t\t\t\tthis.viewportClickEmitter.emit(event);\n\t\t\t} else {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tthis.active.set(false);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, Output } from '@angular/core';\nimport { extend, signalStore, type NgtThreeEvent } from 'angular-three';\nimport { AmbientLight, Group, PointLight } from 'three';\nimport { injectNgtsGizmoHelperApi } from '../gizmo-helper';\nimport { NgtsGizmoViewportAxis, NgtsGizmoViewportAxisHead } from './gizmo-viewport-axis';\n\nextend({ Group, AmbientLight, PointLight });\n\n@Component({\n\tselector: 'ngts-gizmo-viewport',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [scale]=\"40\">\n\t\t\t<ngts-gizmo-viewport-axis [color]=\"axisColors()[0]\" [rotation]=\"[0, 0, 0]\" [scale]=\"axisScale()\" />\n\t\t\t<ngts-gizmo-viewport-axis\n\t\t\t\t[color]=\"axisColors()[1]\"\n\t\t\t\t[rotation]=\"[0, 0, Math.PI / 2]\"\n\t\t\t\t[scale]=\"axisScale()\"\n\t\t\t/>\n\t\t\t<ngts-gizmo-viewport-axis\n\t\t\t\t[color]=\"axisColors()[2]\"\n\t\t\t\t[rotation]=\"[0, -Math.PI / 2, 0]\"\n\t\t\t\t[scale]=\"axisScale()\"\n\t\t\t/>\n\t\t\t<ng-container *ngIf=\"!hideAxisHeads()\">\n\t\t\t\t<ngts-gizmo-viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"axisColors()[0]\"\n\t\t\t\t\t[position]=\"[1, 0, 0]\"\n\t\t\t\t\t[label]=\"labels()[0]\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t[viewportClickEmitter]=\"viewportClick\"\n\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t/>\n\t\t\t\t<ngts-gizmo-viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"axisColors()[1]\"\n\t\t\t\t\t[position]=\"[0, 1, 0]\"\n\t\t\t\t\t[label]=\"labels()[1]\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t[viewportClickEmitter]=\"viewportClick\"\n\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t/>\n\t\t\t\t<ngts-gizmo-viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"axisColors()[2]\"\n\t\t\t\t\t[position]=\"[0, 0, 1]\"\n\t\t\t\t\t[label]=\"labels()[2]\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t[viewportClickEmitter]=\"viewportClick\"\n\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t/>\n\t\t\t\t<ng-container *ngIf=\"!hideNegativeAxes()\">\n\t\t\t\t\t<ngts-gizmo-viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"axisColors()[0]\"\n\t\t\t\t\t\t[position]=\"[-1, 0, 0]\"\n\t\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t\t[viewportClickEmitter]=\"viewportClick\"\n\t\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t\t/>\n\t\t\t\t\t<ngts-gizmo-viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"axisColors()[1]\"\n\t\t\t\t\t\t[position]=\"[0, -1, 0]\"\n\t\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t\t[viewportClickEmitter]=\"viewportClick\"\n\t\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t\t/>\n\t\t\t\t\t<ngts-gizmo-viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"axisColors()[2]\"\n\t\t\t\t\t\t[position]=\"[0, 0, -1]\"\n\t\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t\t[viewportClickEmitter]=\"viewportClick\"\n\t\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t\t/>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\t\t\t<ngt-ambient-light [intensity]=\"0.5\"></ngt-ambient-light>\n\t\t\t<ngt-point-light [position]=\"10\" [intensity]=\"0.5\"></ngt-point-light>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtsGizmoViewportAxis, NgtsGizmoViewportAxisHead, NgIf],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsGizmoViewport {\n\tprivate inputs = signalStore<{\n\t\taxisColors: [string, string, string];\n\t\taxisScale: [number, number, number];\n\t\tlabels: [string, string, string];\n\t\taxisHeadScale: number;\n\t\tlabelColor: string;\n\t\thideNegativeAxes: boolean;\n\t\thideAxisHeads: boolean;\n\t\tdisabled: boolean;\n\t\tfont: string;\n\t}>({\n\t\tfont: '18px Inter var, Arial, sans-serif',\n\t\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\t\taxisHeadScale: 1,\n\t\tlabels: ['X', 'Y', 'Z'],\n\t\tlabelColor: '#000',\n\t});\n\tprivate gizmoApi = injectNgtsGizmoHelperApi();\n\n\tMath = Math;\n\n\t@Input({ alias: 'axisColors' }) set _axisColors(axisColors: [string, string, string]) {\n\t\tthis.inputs.set({ axisColors });\n\t}\n\n\t@Input({ alias: 'axisScale' }) set _axisScale(axisScale: [number, number, number]) {\n\t\tthis.inputs.set({ axisScale });\n\t}\n\n\t@Input({ alias: 'labels' }) set _labels(labels: [string, string, string]) {\n\t\tthis.inputs.set({ labels });\n\t}\n\n\t@Input({ alias: 'axisHeadScale' }) set _axisHeadScale(axisHeadScale: number) {\n\t\tthis.inputs.set({ axisHeadScale });\n\t}\n\n\t@Input({ alias: 'labelColor' }) set _labelColor(labelColor: string) {\n\t\tthis.inputs.set({ labelColor });\n\t}\n\n\t@Input({ alias: 'hideNegativeAxes' }) set _hideNegativeAxes(hideNegativeAxes: boolean) {\n\t\tthis.inputs.set({ hideNegativeAxes });\n\t}\n\n\t@Input({ alias: 'hideAxisHeads' }) set _hideAxisHeads(hideAxisHeads: boolean) {\n\t\tthis.inputs.set({ hideAxisHeads });\n\t}\n\n\t@Input({ alias: 'disabled' }) set _disabled(disabled: boolean) {\n\t\tthis.inputs.set({ disabled });\n\t}\n\n\t@Input({ alias: 'font' }) set _font(font: string) {\n\t\tthis.inputs.set({ font });\n\t}\n\n\t@Output() viewportClick = new EventEmitter<NgtThreeEvent<MouseEvent>>();\n\n\taxisColors = this.inputs.select('axisColors');\n\taxisScale = this.inputs.select('axisScale');\n\tlabels = this.inputs.select('labels');\n\taxisHeadScale = this.inputs.select('axisHeadScale');\n\tlabelColor = this.inputs.select('labelColor');\n\thideNegativeAxes = this.inputs.select('hideNegativeAxes');\n\thideAxisHeads = this.inputs.select('hideAxisHeads');\n\tdisabled = this.inputs.select('disabled');\n\tfont = this.inputs.select('font');\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (!this.inputs.get('disabled')) {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoApi.tweenCamera(event.object.position);\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,13 +1,13 @@
1
- import { injectNgtLoader, assertInjectionContext, createSignal, safeDetectChanges, NgtSignalStore, NgtStore } from 'angular-three';
2
- import { MeshoptDecoder } from 'three-stdlib';
3
- import { DRACOLoader } from 'three-stdlib/loaders/DRACOLoader';
4
- import { GLTFLoader } from 'three-stdlib/loaders/GLTFLoader';
1
+ import { injectNgtLoader, safeDetectChanges, signalStore, injectNgtStore } from 'angular-three';
2
+ import { assertInjector } from 'ngxtension/assert-injector';
3
+ import { DRACOLoader, MeshoptDecoder, GLTFLoader } from 'three-stdlib';
5
4
  import { NgIf } from '@angular/common';
6
5
  import * as i0 from '@angular/core';
7
- import { runInInjectionContext, inject, ChangeDetectorRef, computed, signal, effect, untracked, Component, ChangeDetectionStrategy, Input, ViewChild } from '@angular/core';
6
+ import { runInInjectionContext, inject, ChangeDetectorRef, signal, untracked, computed, effect, Component, ChangeDetectionStrategy, Input, ViewChild } from '@angular/core';
8
7
  import * as THREE from 'three';
9
8
 
10
9
  let dracoLoader = null;
10
+ let decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';
11
11
  function _extensions(useDraco, useMeshOpt, extensions) {
12
12
  return (loader) => {
13
13
  if (extensions) {
@@ -17,7 +17,7 @@ function _extensions(useDraco, useMeshOpt, extensions) {
17
17
  if (!dracoLoader) {
18
18
  dracoLoader = new DRACOLoader();
19
19
  }
20
- dracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/');
20
+ dracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : decoderPath);
21
21
  loader.setDRACOLoader(dracoLoader);
22
22
  }
23
23
  if (useMeshOpt) {
@@ -25,59 +25,65 @@ function _extensions(useDraco, useMeshOpt, extensions) {
25
25
  }
26
26
  };
27
27
  }
28
- function injectNgtsGLTFLoader(path, { useDraco = true, useMeshOpt = true, injector, extensions, } = {}) {
28
+ function _injectNgtsGLTFLoader(path, { useDraco = true, useMeshOpt = true, injector, extensions, } = {}) {
29
+ injector = assertInjector(_injectNgtsGLTFLoader, injector);
29
30
  return injectNgtLoader(() => GLTFLoader, path, {
31
+ // TODO: fix "as any" when three-stdlib is updated with THREE 0.156
30
32
  extensions: _extensions(useDraco, useMeshOpt, extensions),
31
33
  injector,
32
34
  });
33
35
  }
34
- injectNgtsGLTFLoader['preload'] = (path, { useDraco = true, useMeshOpt = true, extensions, } = {}) => {
35
- injectNgtLoader['preload'](() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));
36
+ _injectNgtsGLTFLoader.preload = (path, { useDraco = true, useMeshOpt = true, extensions, } = {}) => {
37
+ injectNgtLoader.preload(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));
36
38
  };
39
+ _injectNgtsGLTFLoader.setDecoderPath = (path) => {
40
+ decoderPath = path;
41
+ };
42
+ const injectNgtsGLTFLoader = _injectNgtsGLTFLoader;
37
43
 
38
44
  function injectNgtsProgress(injector) {
39
- injector = assertInjectionContext(injectNgtsProgress, injector);
45
+ injector = assertInjector(injectNgtsProgress, injector);
40
46
  return runInInjectionContext(injector, () => {
41
47
  const cdr = inject(ChangeDetectorRef);
42
- const progress = createSignal({
43
- errors: [],
44
- active: false,
45
- progress: 0,
46
- item: '',
47
- loaded: 0,
48
- total: 0,
49
- });
48
+ const progress = signal({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });
50
49
  let saveLastTotalLoaded = 0;
51
50
  THREE.DefaultLoadingManager.onStart = (item, loaded, total) => {
52
- progress.update((prev) => ({
53
- ...prev,
54
- active: true,
55
- item,
56
- loaded,
57
- total,
58
- progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,
59
- }));
51
+ untracked(() => {
52
+ progress.update((prev) => ({
53
+ ...prev,
54
+ active: true,
55
+ item,
56
+ loaded,
57
+ total,
58
+ progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,
59
+ }));
60
+ });
60
61
  safeDetectChanges(cdr);
61
62
  };
62
63
  THREE.DefaultLoadingManager.onLoad = () => {
63
- progress.update((prev) => ({ ...prev, active: false }));
64
+ untracked(() => {
65
+ progress.update((prev) => ({ ...prev, active: false }));
66
+ });
64
67
  safeDetectChanges(cdr);
65
- cdr.detectChanges();
66
68
  };
67
69
  THREE.DefaultLoadingManager.onError = (url) => {
68
- progress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));
70
+ untracked(() => {
71
+ progress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));
72
+ });
69
73
  safeDetectChanges(cdr);
70
74
  };
71
75
  THREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {
72
76
  if (loaded === total)
73
77
  saveLastTotalLoaded = total;
74
- progress.update((prev) => ({
75
- ...prev,
76
- item,
77
- loaded,
78
- total,
79
- progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,
80
- }));
78
+ untracked(() => {
79
+ progress.update((prev) => ({
80
+ ...prev,
81
+ item,
82
+ loaded,
83
+ total,
84
+ progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,
85
+ }));
86
+ });
81
87
  safeDetectChanges(cdr);
82
88
  };
83
89
  return progress.asReadonly();
@@ -85,58 +91,58 @@ function injectNgtsProgress(injector) {
85
91
  }
86
92
 
87
93
  const defaultDataInterpolation = (p) => `Loading ${p.toFixed(2)}%`;
88
- class NgtsLoader extends NgtSignalStore {
89
- #progress;
90
- set containerClass(containerClass) {
91
- this.set({ containerClass });
94
+ class NgtsLoader {
95
+ set _containerClass(containerClass) {
96
+ this.inputs.set({ containerClass });
92
97
  }
93
- set innerClass(innerClass) {
94
- this.set({ innerClass });
98
+ set _innerClass(innerClass) {
99
+ this.inputs.set({ innerClass });
95
100
  }
96
- set barClass(barClass) {
97
- this.set({ barClass });
101
+ set _barClass(barClass) {
102
+ this.inputs.set({ barClass });
98
103
  }
99
- set dataClass(dataClass) {
100
- this.set({ dataClass });
104
+ set _dataClass(dataClass) {
105
+ this.inputs.set({ dataClass });
101
106
  }
102
- set dataInterpolation(dataInterpolation) {
103
- this.set({ dataInterpolation });
107
+ set _dataInterpolation(dataInterpolation) {
108
+ this.inputs.set({ dataInterpolation });
104
109
  }
105
- set initialState(initialState) {
106
- this.set({ initialState });
110
+ set _initialState(initialState) {
111
+ this.inputs.set({ initialState });
107
112
  }
108
113
  constructor() {
109
- super({ dataInterpolation: defaultDataInterpolation, initialState: (active) => active });
110
- this.#progress = injectNgtsProgress();
111
- this.active = computed(() => this.#progress().active);
112
- this.progress = computed(() => this.#progress().progress);
113
- this.container = this.select('containerClass');
114
- this.inner = this.select('innerClass');
115
- this.bar = this.select('barClass');
116
- this.data = this.select('dataClass');
117
- this.shown = signal(this.get('initialState')(this.active()));
118
- this.#setShown();
119
- this.#updateProgress();
114
+ this.inputs = signalStore({
115
+ dataInterpolation: defaultDataInterpolation,
116
+ initialState: (active) => active,
117
+ });
118
+ this.progressState = injectNgtsProgress();
119
+ this.active = computed(() => this.progressState().active);
120
+ this.progress = computed(() => this.progressState().progress);
121
+ this.container = this.inputs.select('containerClass');
122
+ this.inner = this.inputs.select('innerClass');
123
+ this.bar = this.inputs.select('barClass');
124
+ this.data = this.inputs.select('dataClass');
125
+ this.shown = signal(this.inputs.get('initialState')(this.active()));
126
+ this.setShown();
127
+ this.updateProgress();
120
128
  }
121
- #setShown() {
129
+ setShown() {
122
130
  effect((onCleanup) => {
123
- const active = this.active();
124
- const lastShown = untracked(this.shown);
131
+ const [active, lastShown] = [this.active(), untracked(this.shown)];
125
132
  if (lastShown !== active) {
126
133
  const timeoutId = setTimeout(() => {
127
134
  this.shown.set(active);
128
135
  }, 300);
129
136
  onCleanup(() => clearTimeout(timeoutId));
130
137
  }
131
- }, { allowSignalWrites: true });
138
+ });
132
139
  }
133
- #updateProgress() {
140
+ updateProgress() {
134
141
  let progressRef = 0;
135
142
  let rafId;
136
- const dataInterpolation = this.select('dataInterpolation');
137
- const trigger = computed(() => ({ dataInterpolation: dataInterpolation(), progress: this.progress() }));
143
+ const _dataInterpolation = this.inputs.select('dataInterpolation');
138
144
  effect((onCleanup) => {
139
- const { dataInterpolation, progress } = trigger();
145
+ const [dataInterpolation, progress] = [_dataInterpolation(), this.progress()];
140
146
  const updateProgress = () => {
141
147
  if (!this.progressSpanRef?.nativeElement)
142
148
  return;
@@ -152,89 +158,99 @@ class NgtsLoader extends NgtSignalStore {
152
158
  onCleanup(() => cancelAnimationFrame(rafId));
153
159
  });
154
160
  }
155
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
156
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { containerClass: "containerClass", innerClass: "innerClass", barClass: "barClass", dataClass: "dataClass", dataInterpolation: "dataInterpolation", initialState: "initialState" }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
157
- <div
158
- *ngIf="shown()"
159
- class="ngts-loader-container"
160
- [class]="container() || ''"
161
- [style.--ngts-loader-container-opacity]="active() ? 1 : 0"
162
- >
163
- <div>
164
- <div class="ngts-loader-inner" [class]="inner() || ''">
165
- <div
166
- class="ngts-loader-bar"
167
- [class]="bar() || ''"
168
- [style.--ngts-loader-bar-scale]="progress() / 100"
169
- ></div>
170
- <span #progressSpanRef class="ngts-loader-data" [class]="data() || ''"></span>
171
- </div>
172
- </div>
173
- </div>
174
- `, isInline: true, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:white;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { _containerClass: ["containerClass", "_containerClass"], _innerClass: ["innerClass", "_innerClass"], _barClass: ["barClass", "_barClass"], _dataClass: ["dataClass", "_dataClass"], _dataInterpolation: ["dataInterpolation", "_dataInterpolation"], _initialState: ["initialState", "_initialState"] }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true }], ngImport: i0, template: `
163
+ <div
164
+ *ngIf="shown()"
165
+ class="ngts-loader-container"
166
+ [class]="container() || ''"
167
+ [style.--ngts-loader-container-opacity]="active() ? 1 : 0"
168
+ >
169
+ <div>
170
+ <div class="ngts-loader-inner" [class]="inner() || ''">
171
+ <div
172
+ class="ngts-loader-bar"
173
+ [class]="bar() || ''"
174
+ [style.--ngts-loader-bar-scale]="progress() / 100"
175
+ ></div>
176
+ <span #progressSpanRef class="ngts-loader-data" [class]="data() || ''"></span>
177
+ </div>
178
+ </div>
179
+ </div>
180
+ `, isInline: true, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:white;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
175
181
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsLoader, decorators: [{
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsLoader, decorators: [{
177
183
  type: Component,
178
184
  args: [{ selector: 'ngts-loader', standalone: true, template: `
179
- <div
180
- *ngIf="shown()"
181
- class="ngts-loader-container"
182
- [class]="container() || ''"
183
- [style.--ngts-loader-container-opacity]="active() ? 1 : 0"
184
- >
185
- <div>
186
- <div class="ngts-loader-inner" [class]="inner() || ''">
187
- <div
188
- class="ngts-loader-bar"
189
- [class]="bar() || ''"
190
- [style.--ngts-loader-bar-scale]="progress() / 100"
191
- ></div>
192
- <span #progressSpanRef class="ngts-loader-data" [class]="data() || ''"></span>
193
- </div>
194
- </div>
195
- </div>
196
- `, imports: [NgIf], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:white;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"] }]
197
- }], ctorParameters: function () { return []; }, propDecorators: { containerClass: [{
198
- type: Input
199
- }], innerClass: [{
200
- type: Input
201
- }], barClass: [{
202
- type: Input
203
- }], dataClass: [{
204
- type: Input
205
- }], dataInterpolation: [{
206
- type: Input
207
- }], initialState: [{
208
- type: Input
185
+ <div
186
+ *ngIf="shown()"
187
+ class="ngts-loader-container"
188
+ [class]="container() || ''"
189
+ [style.--ngts-loader-container-opacity]="active() ? 1 : 0"
190
+ >
191
+ <div>
192
+ <div class="ngts-loader-inner" [class]="inner() || ''">
193
+ <div
194
+ class="ngts-loader-bar"
195
+ [class]="bar() || ''"
196
+ [style.--ngts-loader-bar-scale]="progress() / 100"
197
+ ></div>
198
+ <span #progressSpanRef class="ngts-loader-data" [class]="data() || ''"></span>
199
+ </div>
200
+ </div>
201
+ </div>
202
+ `, imports: [NgIf], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:white;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"] }]
203
+ }], ctorParameters: function () { return []; }, propDecorators: { _containerClass: [{
204
+ type: Input,
205
+ args: [{ alias: 'containerClass' }]
206
+ }], _innerClass: [{
207
+ type: Input,
208
+ args: [{ alias: 'innerClass' }]
209
+ }], _barClass: [{
210
+ type: Input,
211
+ args: [{ alias: 'barClass' }]
212
+ }], _dataClass: [{
213
+ type: Input,
214
+ args: [{ alias: 'dataClass' }]
215
+ }], _dataInterpolation: [{
216
+ type: Input,
217
+ args: [{ alias: 'dataInterpolation' }]
218
+ }], _initialState: [{
219
+ type: Input,
220
+ args: [{ alias: 'initialState' }]
209
221
  }], progressSpanRef: [{
210
222
  type: ViewChild,
211
223
  args: ['progressSpanRef']
212
224
  }] } });
213
225
 
214
- function injectNgtsTextureLoader(input, { onLoad, injector, } = {}) {
215
- injector = assertInjectionContext(injectNgtsTextureLoader, injector);
226
+ function _injectNgtsTextureLoader(input, { onLoad, injector, } = {}) {
227
+ injector = assertInjector(_injectNgtsTextureLoader, injector);
216
228
  return runInInjectionContext(injector, () => {
217
- const store = inject(NgtStore);
229
+ const store = injectNgtStore();
218
230
  const result = injectNgtLoader(() => THREE.TextureLoader, input, { injector });
219
231
  effect(() => {
220
232
  const textures = result();
221
233
  if (!textures)
222
234
  return;
223
- const array = Array.isArray(textures)
224
- ? textures
225
- : textures instanceof THREE.Texture
226
- ? [textures]
227
- : Object.values(textures);
228
- if (onLoad)
229
- onLoad(array);
230
- array.forEach(store.get('gl').initTexture);
235
+ const gl = store.get('gl');
236
+ if ('initTexture' in gl) {
237
+ const array = Array.isArray(textures)
238
+ ? textures
239
+ : textures instanceof THREE.Texture
240
+ ? [textures]
241
+ : Object.values(textures);
242
+ if (onLoad)
243
+ onLoad(array);
244
+ array.forEach(store.get('gl').initTexture);
245
+ }
231
246
  });
232
247
  return result;
233
248
  });
234
249
  }
235
- injectNgtsTextureLoader['preload'] = (input) => {
250
+ _injectNgtsTextureLoader.preload = (input) => {
236
251
  injectNgtLoader.preload(() => THREE.TextureLoader, input);
237
252
  };
253
+ const injectNgtsTextureLoader = _injectNgtsTextureLoader;
238
254
 
239
255
  /**
240
256
  * Generated bundle index. Do not edit.