angular-three-soba 2.0.0-beta.3 → 2.0.0-beta.30

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 (321) 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 +50 -0
  5. package/abstractions/index.d.ts +2 -7
  6. package/abstractions/text/text.d.ts +10 -5
  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 +50 -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 +180 -0
  19. package/esm2022/abstractions/index.mjs +3 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -124
  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 +130 -99
  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 +8 -6
  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 +6 -5
  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 +102 -99
  47. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  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 +39 -34
  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 +35 -36
  55. package/esm2022/misc/example/example.mjs +161 -0
  56. package/esm2022/misc/fbo/fbo.mjs +37 -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 +143 -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 +210 -0
  64. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +18 -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 +31 -0
  83. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  84. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  85. package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
  86. package/esm2022/shaders/index.mjs +6 -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 +2 -2
  90. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -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 +17 -25
  94. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  95. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -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 +128 -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/content/content.mjs +15 -0
  133. package/esm2022/utils/index.mjs +2 -0
  134. package/fesm2022/angular-three-soba-abstractions.mjs +514 -1947
  135. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  136. package/fesm2022/angular-three-soba-cameras.mjs +303 -259
  137. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  138. package/fesm2022/angular-three-soba-controls.mjs +108 -83
  139. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-gizmos.mjs +1045 -0
  141. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  142. package/fesm2022/angular-three-soba-loaders.mjs +129 -119
  143. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  144. package/fesm2022/angular-three-soba-materials.mjs +662 -592
  145. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  146. package/fesm2022/angular-three-soba-misc.mjs +2219 -108
  147. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  148. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  149. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  150. package/fesm2022/angular-three-soba-performances.mjs +957 -0
  151. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  152. package/fesm2022/angular-three-soba-shaders.mjs +551 -256
  153. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  154. package/fesm2022/angular-three-soba-staging.mjs +2910 -2573
  155. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  156. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  157. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  158. package/gizmos/README.md +3 -0
  159. package/gizmos/gizmo-helper/gizmo-helper.d.ts +69 -0
  160. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  161. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
  162. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
  163. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
  164. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
  165. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
  166. package/gizmos/index.d.ts +3 -0
  167. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  168. package/loaders/loader/loader.d.ts +19 -17
  169. package/loaders/progress/progress.d.ts +1 -1
  170. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  171. package/materials/index.d.ts +1 -0
  172. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  173. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  174. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  175. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  176. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  177. package/materials/point-material/point-material.d.ts +24 -0
  178. package/metadata.json +1 -0
  179. package/misc/animations/animations.d.ts +6 -4
  180. package/misc/caustics/caustics.d.ts +87 -0
  181. package/misc/decal/decal.d.ts +49 -0
  182. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  183. package/misc/example/example.d.ts +81 -0
  184. package/misc/fbo/fbo.d.ts +2 -2
  185. package/misc/html/html-wrapper.d.ts +559 -0
  186. package/misc/html/html.d.ts +214 -0
  187. package/misc/index.d.ts +9 -0
  188. package/misc/sampler/sampler.d.ts +67 -0
  189. package/misc/shadow/shadow.d.ts +37 -0
  190. package/misc/stats-gl/stats-gl.d.ts +24 -0
  191. package/misc/trail/trail.d.ts +57 -0
  192. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  193. package/misc/trail-texture/trail-texture.d.ts +50 -0
  194. package/modifiers/README.md +3 -0
  195. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  196. package/modifiers/index.d.ts +1 -0
  197. package/package.json +42 -26
  198. package/performances/README.md +3 -0
  199. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  200. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  201. package/performances/index.d.ts +7 -0
  202. package/performances/instances/instances.d.ts +79 -0
  203. package/{performance → performances}/instances/position-mesh.d.ts +1 -1
  204. package/performances/points/points-input.d.ts +32 -0
  205. package/performances/points/points.d.ts +92 -0
  206. package/performances/points/position-point.d.ts +11 -0
  207. package/performances/segments/segment-object.d.ts +7 -0
  208. package/performances/segments/segments.d.ts +124 -0
  209. package/shaders/grid-material/grid-material.d.ts +37 -0
  210. package/shaders/index.d.ts +5 -2
  211. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +173 -6
  212. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  213. package/shaders/shader-material/shader-material.d.ts +2 -2
  214. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  215. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  216. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  217. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  218. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  219. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  220. package/staging/accumulative-shadows/randomized-lights.d.ts +41 -28
  221. package/staging/backdrop/backdrop.d.ts +30 -0
  222. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  223. package/staging/bounds/bounds.d.ts +101 -25
  224. package/staging/camera-shake/camera-shake.d.ts +30 -19
  225. package/staging/center/center.d.ts +43 -35
  226. package/staging/cloud/cloud.d.ts +27 -24
  227. package/staging/contact-shadows/contact-shadows.d.ts +43 -30
  228. package/staging/environment/assets.d.ts +9 -9
  229. package/staging/environment/environment-cube.d.ts +9 -5
  230. package/staging/environment/environment-ground.d.ts +7 -7
  231. package/staging/environment/environment-input.d.ts +38 -38
  232. package/staging/environment/environment-map.d.ts +10 -5
  233. package/staging/environment/environment-portal.d.ts +10 -5
  234. package/staging/environment/environment.d.ts +0 -4
  235. package/staging/environment/utils.d.ts +2 -2
  236. package/staging/float/float.d.ts +15 -11
  237. package/staging/index.d.ts +6 -2
  238. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  239. package/staging/normal-texture/normal-texture.d.ts +16 -0
  240. package/staging/sky/sky.d.ts +28 -21
  241. package/staging/sparkles/sparkles.d.ts +36 -22
  242. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  243. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  244. package/staging/spot-light/spot-light-input.d.ts +25 -25
  245. package/staging/spot-light/spot-light.d.ts +31 -15
  246. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  247. package/staging/stage/stage.d.ts +89 -65
  248. package/staging/stars/stars.d.ts +28 -17
  249. package/staging/wireframe/wireframe-input.d.ts +65 -0
  250. package/staging/wireframe/wireframe.d.ts +28 -0
  251. package/utils/README.md +3 -0
  252. package/utils/content/content.d.ts +8 -0
  253. package/utils/index.d.ts +1 -0
  254. package/web-types.json +1 -0
  255. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  256. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  257. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  258. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  259. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  260. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  261. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  262. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  263. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  264. package/abstractions/line/line-input.d.ts +0 -42
  265. package/abstractions/line/line.d.ts +0 -35
  266. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  267. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  268. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  269. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  270. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  271. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  272. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  273. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  274. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  275. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  276. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  277. package/esm2022/abstractions/line/line-input.mjs +0 -113
  278. package/esm2022/abstractions/line/line.mjs +0 -165
  279. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  280. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  281. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  282. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  283. package/esm2022/performance/detailed/detailed.mjs +0 -61
  284. package/esm2022/performance/index.mjs +0 -7
  285. package/esm2022/performance/instances/instance.mjs +0 -48
  286. package/esm2022/performance/instances/instances.mjs +0 -189
  287. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  288. package/esm2022/performance/stats/stats.mjs +0 -79
  289. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  290. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  291. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  292. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  293. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
  294. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  295. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  296. package/performance/README.md +0 -3
  297. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  298. package/performance/detailed/detailed.d.ts +0 -20
  299. package/performance/index.d.ts +0 -6
  300. package/performance/instances/instance.d.ts +0 -9
  301. package/performance/instances/instances.d.ts +0 -35
  302. package/performance/stats/stats.d.ts +0 -18
  303. package/plugin/generators.json +0 -19
  304. package/plugin/libs/plugin/README.md +0 -11
  305. package/plugin/package.json +0 -9
  306. package/plugin/src/generators/init/compat.d.ts +0 -2
  307. package/plugin/src/generators/init/compat.js +0 -6
  308. package/plugin/src/generators/init/compat.js.map +0 -1
  309. package/plugin/src/generators/init/init.d.ts +0 -4
  310. package/plugin/src/generators/init/init.js +0 -22
  311. package/plugin/src/generators/init/init.js.map +0 -1
  312. package/plugin/src/generators/init/schema.json +0 -6
  313. package/plugin/src/index.d.ts +0 -1
  314. package/plugin/src/index.js +0 -6
  315. package/plugin/src/index.js.map +0 -1
  316. package/staging/caustics/caustisc.d.ts +0 -70
  317. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  318. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  319. /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
  320. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  321. /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 { DRACOLoader, MeshoptDecoder, GLTFLoader } from 'three-stdlib';
5
3
  import { NgIf } from '@angular/common';
6
4
  import * as i0 from '@angular/core';
7
- import { runInInjectionContext, inject, ChangeDetectorRef, computed, signal, effect, untracked, Component, ChangeDetectionStrategy, Input, ViewChild } from '@angular/core';
5
+ import { runInInjectionContext, inject, ChangeDetectorRef, signal, untracked, computed, effect, Component, ChangeDetectionStrategy, Input, ViewChild } from '@angular/core';
6
+ import { assertInjector } from 'ngxtension/assert-injector';
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) {
@@ -27,6 +27,7 @@ function _extensions(useDraco, useMeshOpt, extensions) {
27
27
  }
28
28
  function injectNgtsGLTFLoader(path, { useDraco = true, useMeshOpt = true, injector, extensions, } = {}) {
29
29
  return injectNgtLoader(() => GLTFLoader, path, {
30
+ // TODO: fix "as any" when three-stdlib is updated with THREE 0.156
30
31
  extensions: _extensions(useDraco, useMeshOpt, extensions),
31
32
  injector,
32
33
  });
@@ -34,50 +35,53 @@ function injectNgtsGLTFLoader(path, { useDraco = true, useMeshOpt = true, inject
34
35
  injectNgtsGLTFLoader['preload'] = (path, { useDraco = true, useMeshOpt = true, extensions, } = {}) => {
35
36
  injectNgtLoader['preload'](() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));
36
37
  };
38
+ injectNgtsGLTFLoader['setDecoderPath'] = (path) => {
39
+ decoderPath = path;
40
+ };
37
41
 
38
42
  function injectNgtsProgress(injector) {
39
- injector = assertInjectionContext(injectNgtsProgress, injector);
43
+ injector = assertInjector(injectNgtsProgress, injector);
40
44
  return runInInjectionContext(injector, () => {
41
45
  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
- });
46
+ const progress = signal({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });
50
47
  let saveLastTotalLoaded = 0;
51
48
  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
- }));
49
+ untracked(() => {
50
+ progress.update((prev) => ({
51
+ ...prev,
52
+ active: true,
53
+ item,
54
+ loaded,
55
+ total,
56
+ progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,
57
+ }));
58
+ });
60
59
  safeDetectChanges(cdr);
61
60
  };
62
61
  THREE.DefaultLoadingManager.onLoad = () => {
63
- progress.update((prev) => ({ ...prev, active: false }));
62
+ untracked(() => {
63
+ progress.update((prev) => ({ ...prev, active: false }));
64
+ });
64
65
  safeDetectChanges(cdr);
65
- cdr.detectChanges();
66
66
  };
67
67
  THREE.DefaultLoadingManager.onError = (url) => {
68
- progress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));
68
+ untracked(() => {
69
+ progress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));
70
+ });
69
71
  safeDetectChanges(cdr);
70
72
  };
71
73
  THREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {
72
74
  if (loaded === total)
73
75
  saveLastTotalLoaded = total;
74
- progress.update((prev) => ({
75
- ...prev,
76
- item,
77
- loaded,
78
- total,
79
- progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,
80
- }));
76
+ untracked(() => {
77
+ progress.update((prev) => ({
78
+ ...prev,
79
+ item,
80
+ loaded,
81
+ total,
82
+ progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,
83
+ }));
84
+ });
81
85
  safeDetectChanges(cdr);
82
86
  };
83
87
  return progress.asReadonly();
@@ -85,58 +89,58 @@ function injectNgtsProgress(injector) {
85
89
  }
86
90
 
87
91
  const defaultDataInterpolation = (p) => `Loading ${p.toFixed(2)}%`;
88
- class NgtsLoader extends NgtSignalStore {
89
- #progress;
90
- set containerClass(containerClass) {
91
- this.set({ containerClass });
92
+ class NgtsLoader {
93
+ set _containerClass(containerClass) {
94
+ this.inputs.set({ containerClass });
92
95
  }
93
- set innerClass(innerClass) {
94
- this.set({ innerClass });
96
+ set _innerClass(innerClass) {
97
+ this.inputs.set({ innerClass });
95
98
  }
96
- set barClass(barClass) {
97
- this.set({ barClass });
99
+ set _barClass(barClass) {
100
+ this.inputs.set({ barClass });
98
101
  }
99
- set dataClass(dataClass) {
100
- this.set({ dataClass });
102
+ set _dataClass(dataClass) {
103
+ this.inputs.set({ dataClass });
101
104
  }
102
- set dataInterpolation(dataInterpolation) {
103
- this.set({ dataInterpolation });
105
+ set _dataInterpolation(dataInterpolation) {
106
+ this.inputs.set({ dataInterpolation });
104
107
  }
105
- set initialState(initialState) {
106
- this.set({ initialState });
108
+ set _initialState(initialState) {
109
+ this.inputs.set({ initialState });
107
110
  }
108
111
  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();
112
+ this.inputs = signalStore({
113
+ dataInterpolation: defaultDataInterpolation,
114
+ initialState: (active) => active,
115
+ });
116
+ this.progressState = injectNgtsProgress();
117
+ this.active = computed(() => this.progressState().active);
118
+ this.progress = computed(() => this.progressState().progress);
119
+ this.container = this.inputs.select('containerClass');
120
+ this.inner = this.inputs.select('innerClass');
121
+ this.bar = this.inputs.select('barClass');
122
+ this.data = this.inputs.select('dataClass');
123
+ this.shown = signal(this.inputs.get('initialState')(this.active()));
124
+ this.setShown();
125
+ this.updateProgress();
120
126
  }
121
- #setShown() {
127
+ setShown() {
122
128
  effect((onCleanup) => {
123
- const active = this.active();
124
- const lastShown = untracked(this.shown);
129
+ const [active, lastShown] = [this.active(), untracked(this.shown)];
125
130
  if (lastShown !== active) {
126
131
  const timeoutId = setTimeout(() => {
127
132
  this.shown.set(active);
128
133
  }, 300);
129
134
  onCleanup(() => clearTimeout(timeoutId));
130
135
  }
131
- }, { allowSignalWrites: true });
136
+ });
132
137
  }
133
- #updateProgress() {
138
+ updateProgress() {
134
139
  let progressRef = 0;
135
140
  let rafId;
136
- const dataInterpolation = this.select('dataInterpolation');
137
- const trigger = computed(() => ({ dataInterpolation: dataInterpolation(), progress: this.progress() }));
141
+ const _dataInterpolation = this.inputs.select('dataInterpolation');
138
142
  effect((onCleanup) => {
139
- const { dataInterpolation, progress } = trigger();
143
+ const [dataInterpolation, progress] = [_dataInterpolation(), this.progress()];
140
144
  const updateProgress = () => {
141
145
  if (!this.progressSpanRef?.nativeElement)
142
146
  return;
@@ -152,69 +156,75 @@ class NgtsLoader extends NgtSignalStore {
152
156
  onCleanup(() => cancelAnimationFrame(rafId));
153
157
  });
154
158
  }
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 }); }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
160
+ 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: `
161
+ <div
162
+ *ngIf="shown()"
163
+ class="ngts-loader-container"
164
+ [class]="container() || ''"
165
+ [style.--ngts-loader-container-opacity]="active() ? 1 : 0"
166
+ >
167
+ <div>
168
+ <div class="ngts-loader-inner" [class]="inner() || ''">
169
+ <div
170
+ class="ngts-loader-bar"
171
+ [class]="bar() || ''"
172
+ [style.--ngts-loader-bar-scale]="progress() / 100"
173
+ ></div>
174
+ <span #progressSpanRef class="ngts-loader-data" [class]="data() || ''"></span>
175
+ </div>
176
+ </div>
177
+ </div>
178
+ `, 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
179
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsLoader, decorators: [{
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsLoader, decorators: [{
177
181
  type: Component,
178
182
  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
183
+ <div
184
+ *ngIf="shown()"
185
+ class="ngts-loader-container"
186
+ [class]="container() || ''"
187
+ [style.--ngts-loader-container-opacity]="active() ? 1 : 0"
188
+ >
189
+ <div>
190
+ <div class="ngts-loader-inner" [class]="inner() || ''">
191
+ <div
192
+ class="ngts-loader-bar"
193
+ [class]="bar() || ''"
194
+ [style.--ngts-loader-bar-scale]="progress() / 100"
195
+ ></div>
196
+ <span #progressSpanRef class="ngts-loader-data" [class]="data() || ''"></span>
197
+ </div>
198
+ </div>
199
+ </div>
200
+ `, 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"] }]
201
+ }], ctorParameters: function () { return []; }, propDecorators: { _containerClass: [{
202
+ type: Input,
203
+ args: [{ alias: 'containerClass' }]
204
+ }], _innerClass: [{
205
+ type: Input,
206
+ args: [{ alias: 'innerClass' }]
207
+ }], _barClass: [{
208
+ type: Input,
209
+ args: [{ alias: 'barClass' }]
210
+ }], _dataClass: [{
211
+ type: Input,
212
+ args: [{ alias: 'dataClass' }]
213
+ }], _dataInterpolation: [{
214
+ type: Input,
215
+ args: [{ alias: 'dataInterpolation' }]
216
+ }], _initialState: [{
217
+ type: Input,
218
+ args: [{ alias: 'initialState' }]
209
219
  }], progressSpanRef: [{
210
220
  type: ViewChild,
211
221
  args: ['progressSpanRef']
212
222
  }] } });
213
223
 
214
224
  function injectNgtsTextureLoader(input, { onLoad, injector, } = {}) {
215
- injector = assertInjectionContext(injectNgtsTextureLoader, injector);
225
+ injector = assertInjector(injectNgtsTextureLoader, injector);
216
226
  return runInInjectionContext(injector, () => {
217
- const store = inject(NgtStore);
227
+ const store = injectNgtStore();
218
228
  const result = injectNgtLoader(() => THREE.TextureLoader, input, { injector });
219
229
  effect(() => {
220
230
  const textures = result();
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-loaders.mjs","sources":["../../../../libs/soba/loaders/src/gltf-loader/gltf-loader.ts","../../../../libs/soba/loaders/src/progress/progress.ts","../../../../libs/soba/loaders/src/loader/loader.ts","../../../../libs/soba/loaders/src/texture-loader/texture-loader.ts","../../../../libs/soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import { Injector, Signal } from '@angular/core';\nimport { injectNgtLoader, type NgtLoaderResults, type NgtObjectMap } from 'angular-three';\n// @ts-ignore\nimport { MeshoptDecoder } from 'three-stdlib';\nimport { DRACOLoader } from 'three-stdlib/loaders/DRACOLoader';\nimport { GLTF, GLTFLoader } from 'three-stdlib/loaders/GLTFLoader';\n\nlet dracoLoader: DRACOLoader | null = null;\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n return (loader: THREE.Loader) => {\n if (extensions) {\n extensions(loader as GLTFLoader);\n }\n\n if (useDraco) {\n if (!dracoLoader) {\n dracoLoader = new DRACOLoader();\n }\n\n dracoLoader.setDecoderPath(\n typeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/'\n );\n (loader as GLTFLoader).setDRACOLoader(dracoLoader);\n }\n\n if (useMeshOpt) {\n (loader as GLTFLoader).setMeshoptDecoder(\n typeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder\n );\n }\n };\n}\n\nexport function injectNgtsGLTFLoader<TUrl extends string | string[] | Record<string, string>>(\n path: () => TUrl,\n {\n useDraco = true,\n useMeshOpt = true,\n injector,\n extensions,\n }: {\n useDraco?: boolean | string;\n useMeshOpt?: boolean;\n injector?: Injector;\n extensions?: (loader: GLTFLoader) => void;\n } = {}\n): Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap>> {\n return injectNgtLoader(() => GLTFLoader, path, {\n extensions: _extensions(useDraco, useMeshOpt, extensions),\n injector,\n });\n}\n\ninjectNgtsGLTFLoader['preload'] = <TUrl extends string | string[] | Record<string, string>>(\n path: () => TUrl,\n {\n useDraco = true,\n useMeshOpt = true,\n extensions,\n }: {\n useDraco?: boolean | string;\n useMeshOpt?: boolean;\n extensions?: (loader: GLTFLoader) => void;\n } = {}\n) => {\n (injectNgtLoader as any)['preload'](() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));\n};\n","import { ChangeDetectorRef, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { assertInjectionContext, createSignal, safeDetectChanges } from 'angular-three';\nimport * as THREE from 'three';\n\nexport function injectNgtsProgress(injector?: Injector) {\n injector = assertInjectionContext(injectNgtsProgress, injector);\n return runInInjectionContext(injector, () => {\n const cdr = inject(ChangeDetectorRef);\n\n const progress = createSignal<{\n errors: string[];\n active: boolean;\n progress: number;\n item: string;\n loaded: number;\n total: number;\n }>({\n errors: [],\n active: false,\n progress: 0,\n item: '',\n loaded: 0,\n total: 0,\n });\n\n let saveLastTotalLoaded = 0;\n\n THREE.DefaultLoadingManager.onStart = (item, loaded, total) => {\n progress.update((prev) => ({\n ...prev,\n active: true,\n item,\n loaded,\n total,\n progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,\n }));\n safeDetectChanges(cdr);\n };\n\n THREE.DefaultLoadingManager.onLoad = () => {\n progress.update((prev) => ({ ...prev, active: false }));\n safeDetectChanges(cdr);\n cdr.detectChanges();\n };\n\n THREE.DefaultLoadingManager.onError = (url) => {\n progress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));\n safeDetectChanges(cdr);\n };\n\n THREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {\n if (loaded === total) saveLastTotalLoaded = total;\n progress.update((prev) => ({\n ...prev,\n item,\n loaded,\n total,\n progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,\n }));\n safeDetectChanges(cdr);\n };\n\n return progress.asReadonly();\n });\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n ViewChild,\n computed,\n effect,\n signal,\n untracked,\n} from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\nimport { injectNgtsProgress } from '../progress/progress';\n\nconst defaultDataInterpolation = (p: number) => `Loading ${p.toFixed(2)}%`;\n\nexport interface NgtsLoaderState {\n containerClass?: string;\n innerClass?: string;\n barClass?: string;\n dataClass?: string;\n dataInterpolation: (value: number) => string;\n initialState: (value: boolean) => boolean;\n}\n\n@Component({\n selector: 'ngts-loader',\n standalone: true,\n template: `\n <div\n *ngIf=\"shown()\"\n class=\"ngts-loader-container\"\n [class]=\"container() || ''\"\n [style.--ngts-loader-container-opacity]=\"active() ? 1 : 0\"\n >\n <div>\n <div class=\"ngts-loader-inner\" [class]=\"inner() || ''\">\n <div\n class=\"ngts-loader-bar\"\n [class]=\"bar() || ''\"\n [style.--ngts-loader-bar-scale]=\"progress() / 100\"\n ></div>\n <span #progressSpanRef class=\"ngts-loader-data\" [class]=\"data() || ''\"></span>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./loader.css'],\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsLoader extends NgtSignalStore<NgtsLoaderState> {\n readonly #progress = injectNgtsProgress();\n\n readonly active = computed(() => this.#progress().active);\n readonly progress = computed(() => this.#progress().progress);\n\n readonly container = this.select('containerClass');\n readonly inner = this.select('innerClass');\n readonly bar = this.select('barClass');\n readonly data = this.select('dataClass');\n\n @Input() set containerClass(containerClass: string) {\n this.set({ containerClass });\n }\n\n @Input() set innerClass(innerClass: string) {\n this.set({ innerClass });\n }\n\n @Input() set barClass(barClass: string) {\n this.set({ barClass });\n }\n\n @Input() set dataClass(dataClass: string) {\n this.set({ dataClass });\n }\n\n @Input() set dataInterpolation(dataInterpolation: (value: number) => string) {\n this.set({ dataInterpolation });\n }\n\n @Input() set initialState(initialState: (value: boolean) => boolean) {\n this.set({ initialState });\n }\n\n @ViewChild('progressSpanRef') progressSpanRef?: ElementRef<HTMLSpanElement>;\n\n readonly shown = signal(this.get('initialState')(this.active()));\n\n constructor() {\n super({ dataInterpolation: defaultDataInterpolation, initialState: (active: boolean) => active });\n this.#setShown();\n this.#updateProgress();\n }\n\n #setShown() {\n effect(\n (onCleanup) => {\n const active = this.active();\n const lastShown = untracked(this.shown);\n if (lastShown !== active) {\n const timeoutId = setTimeout(() => {\n this.shown.set(active);\n }, 300);\n onCleanup(() => clearTimeout(timeoutId));\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n #updateProgress() {\n let progressRef = 0;\n let rafId: ReturnType<typeof requestAnimationFrame>;\n\n const dataInterpolation = this.select('dataInterpolation');\n const trigger = computed(() => ({ dataInterpolation: dataInterpolation(), progress: this.progress() }));\n\n effect((onCleanup) => {\n const { dataInterpolation, progress } = trigger();\n\n const updateProgress = () => {\n if (!this.progressSpanRef?.nativeElement) return;\n progressRef += (progress - progressRef) / 2;\n if (progressRef > 0.95 * progress || progress === 100) progressRef = progress;\n this.progressSpanRef.nativeElement.innerText = dataInterpolation(progressRef);\n if (progressRef < progress) {\n rafId = requestAnimationFrame(updateProgress);\n }\n };\n updateProgress();\n onCleanup(() => cancelAnimationFrame(rafId));\n });\n }\n}\n","import { effect, inject, Injector, runInInjectionContext, type Signal } from '@angular/core';\nimport { assertInjectionContext, injectNgtLoader, NgtStore, type NgtLoaderResults } from 'angular-three';\nimport * as THREE from 'three';\n\nexport function injectNgtsTextureLoader<TInput extends string[] | string | Record<string, string>>(\n input: () => TInput,\n {\n onLoad,\n injector,\n }: {\n onLoad?: (texture: THREE.Texture | THREE.Texture[]) => void;\n injector?: Injector;\n } = {}\n): Signal<NgtLoaderResults<TInput, THREE.Texture>> {\n injector = assertInjectionContext(injectNgtsTextureLoader, injector);\n return runInInjectionContext(injector, () => {\n const store = inject(NgtStore);\n const result = injectNgtLoader(() => THREE.TextureLoader, input, { injector });\n\n effect(() => {\n const textures = result();\n if (!textures) return;\n const array = Array.isArray(textures)\n ? textures\n : textures instanceof THREE.Texture\n ? [textures]\n : Object.values(textures);\n if (onLoad) onLoad(array);\n array.forEach(store.get('gl').initTexture);\n });\n\n return result;\n });\n}\n\ninjectNgtsTextureLoader['preload'] = <TInput extends string[] | string | Record<string, string>>(\n input: () => TInput\n) => {\n (injectNgtLoader as any).preload(() => THREE.TextureLoader, input);\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-loaders.mjs","sources":["../../../../libs/soba/loaders/src/gltf-loader/gltf-loader.ts","../../../../libs/soba/loaders/src/progress/progress.ts","../../../../libs/soba/loaders/src/loader/loader.ts","../../../../libs/soba/loaders/src/texture-loader/texture-loader.ts","../../../../libs/soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import type { Injector, Signal } from '@angular/core';\nimport { injectNgtLoader, type NgtLoaderResults, type NgtObjectMap } from 'angular-three';\nimport { DRACOLoader, GLTFLoader, MeshoptDecoder, type GLTF } from 'three-stdlib';\n\nlet dracoLoader: DRACOLoader | null = null;\nlet decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n\treturn (loader: THREE.Loader) => {\n\t\tif (extensions) {\n\t\t\textensions(loader as GLTFLoader);\n\t\t}\n\n\t\tif (useDraco) {\n\t\t\tif (!dracoLoader) {\n\t\t\t\tdracoLoader = new DRACOLoader();\n\t\t\t}\n\n\t\t\tdracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : decoderPath);\n\t\t\t(loader as GLTFLoader).setDRACOLoader(dracoLoader);\n\t\t}\n\t\tif (useMeshOpt) {\n\t\t\t(loader as GLTFLoader).setMeshoptDecoder(\n\t\t\t\ttypeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder,\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport type NgtsGLTF<T extends Partial<NgtObjectMap>> = GLTF & NgtObjectMap & T;\n\nexport function injectNgtsGLTFLoader<TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\tinjector,\n\t\textensions,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\tinjector?: Injector;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t} = {},\n): Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null> {\n\treturn injectNgtLoader(() => GLTFLoader, path, {\n\t\t// TODO: fix \"as any\" when three-stdlib is updated with THREE 0.156\n\t\textensions: _extensions(useDraco, useMeshOpt, extensions) as any,\n\t\tinjector,\n\t});\n}\n\ninjectNgtsGLTFLoader['preload'] = <TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\textensions,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t} = {},\n) => {\n\t(injectNgtLoader as any)['preload'](() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));\n};\ninjectNgtsGLTFLoader['setDecoderPath'] = (path: string) => {\n\tdecoderPath = path;\n};\n","import { ChangeDetectorRef, inject, runInInjectionContext, signal, untracked, type Injector } from '@angular/core';\nimport { safeDetectChanges } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\n\nexport function injectNgtsProgress(injector?: Injector) {\n\tinjector = assertInjector(injectNgtsProgress, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst progress = signal<{\n\t\t\terrors: string[];\n\t\t\tactive: boolean;\n\t\t\tprogress: number;\n\t\t\titem: string;\n\t\t\tloaded: number;\n\t\t\ttotal: number;\n\t\t}>({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });\n\n\t\tlet saveLastTotalLoaded = 0;\n\n\t\tTHREE.DefaultLoadingManager.onStart = (item, loaded, total) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tactive: true,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onLoad = () => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, active: false }));\n\t\t\t});\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onError = (url) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));\n\t\t\t});\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {\n\t\t\tif (loaded === total) saveLastTotalLoaded = total;\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\treturn progress.asReadonly();\n\t});\n}\n","import { NgIf } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tInput,\n\tViewChild,\n\tcomputed,\n\teffect,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { signalStore } from 'angular-three';\nimport { injectNgtsProgress } from '../progress/progress';\n\nconst defaultDataInterpolation = (p: number) => `Loading ${p.toFixed(2)}%`;\n\nexport interface NgtsLoaderState {\n\tcontainerClass?: string;\n\tinnerClass?: string;\n\tbarClass?: string;\n\tdataClass?: string;\n\tdataInterpolation: (value: number) => string;\n\tinitialState: (value: boolean) => boolean;\n}\n\n@Component({\n\tselector: 'ngts-loader',\n\tstandalone: true,\n\ttemplate: `\n\t\t<div\n\t\t\t*ngIf=\"shown()\"\n\t\t\tclass=\"ngts-loader-container\"\n\t\t\t[class]=\"container() || ''\"\n\t\t\t[style.--ngts-loader-container-opacity]=\"active() ? 1 : 0\"\n\t\t>\n\t\t\t<div>\n\t\t\t\t<div class=\"ngts-loader-inner\" [class]=\"inner() || ''\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"ngts-loader-bar\"\n\t\t\t\t\t\t[class]=\"bar() || ''\"\n\t\t\t\t\t\t[style.--ngts-loader-bar-scale]=\"progress() / 100\"\n\t\t\t\t\t></div>\n\t\t\t\t\t<span #progressSpanRef class=\"ngts-loader-data\" [class]=\"data() || ''\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyleUrls: ['./loader.css'],\n\timports: [NgIf],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsLoader {\n\tprivate inputs = signalStore<NgtsLoaderState>({\n\t\tdataInterpolation: defaultDataInterpolation,\n\t\tinitialState: (active) => active,\n\t});\n\n\tprivate progressState = injectNgtsProgress();\n\n\tactive = computed(() => this.progressState().active);\n\tprogress = computed(() => this.progressState().progress);\n\n\tcontainer = this.inputs.select('containerClass');\n\tinner = this.inputs.select('innerClass');\n\tbar = this.inputs.select('barClass');\n\tdata = this.inputs.select('dataClass');\n\n\t@Input({ alias: 'containerClass' }) set _containerClass(containerClass: string) {\n\t\tthis.inputs.set({ containerClass });\n\t}\n\n\t@Input({ alias: 'innerClass' }) set _innerClass(innerClass: string) {\n\t\tthis.inputs.set({ innerClass });\n\t}\n\n\t@Input({ alias: 'barClass' }) set _barClass(barClass: string) {\n\t\tthis.inputs.set({ barClass });\n\t}\n\n\t@Input({ alias: 'dataClass' }) set _dataClass(dataClass: string) {\n\t\tthis.inputs.set({ dataClass });\n\t}\n\n\t@Input({ alias: 'dataInterpolation' }) set _dataInterpolation(dataInterpolation: (value: number) => string) {\n\t\tthis.inputs.set({ dataInterpolation });\n\t}\n\n\t@Input({ alias: 'initialState' }) set _initialState(initialState: (value: boolean) => boolean) {\n\t\tthis.inputs.set({ initialState });\n\t}\n\n\t@ViewChild('progressSpanRef') progressSpanRef?: ElementRef<HTMLSpanElement>;\n\n\tshown = signal(this.inputs.get('initialState')(this.active()));\n\n\tconstructor() {\n\t\tthis.setShown();\n\t\tthis.updateProgress();\n\t}\n\n\tprivate setShown() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [active, lastShown] = [this.active(), untracked(this.shown)];\n\t\t\tif (lastShown !== active) {\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tthis.shown.set(active);\n\t\t\t\t}, 300);\n\t\t\t\tonCleanup(() => clearTimeout(timeoutId));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updateProgress() {\n\t\tlet progressRef = 0;\n\t\tlet rafId: ReturnType<typeof requestAnimationFrame>;\n\n\t\tconst _dataInterpolation = this.inputs.select('dataInterpolation');\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [dataInterpolation, progress] = [_dataInterpolation(), this.progress()];\n\t\t\tconst updateProgress = () => {\n\t\t\t\tif (!this.progressSpanRef?.nativeElement) return;\n\t\t\t\tprogressRef += (progress - progressRef) / 2;\n\t\t\t\tif (progressRef > 0.95 * progress || progress === 100) progressRef = progress;\n\t\t\t\tthis.progressSpanRef.nativeElement.innerText = dataInterpolation(progressRef);\n\t\t\t\tif (progressRef < progress) {\n\t\t\t\t\trafId = requestAnimationFrame(updateProgress);\n\t\t\t\t}\n\t\t\t};\n\t\t\tupdateProgress();\n\t\t\tonCleanup(() => cancelAnimationFrame(rafId));\n\t\t});\n\t}\n}\n","import { effect, runInInjectionContext, type Injector, type Signal } from '@angular/core';\nimport { injectNgtLoader, injectNgtStore, type NgtLoaderResults } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\n\nexport function injectNgtsTextureLoader<TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n\t{\n\t\tonLoad,\n\t\tinjector,\n\t}: {\n\t\tonLoad?: (texture: THREE.Texture | THREE.Texture[]) => void;\n\t\tinjector?: Injector;\n\t} = {},\n): Signal<NgtLoaderResults<TInput, THREE.Texture> | null> {\n\tinjector = assertInjector(injectNgtsTextureLoader, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst store = injectNgtStore();\n\t\tconst result = injectNgtLoader(() => THREE.TextureLoader, input, { injector });\n\n\t\teffect(() => {\n\t\t\tconst textures = result();\n\t\t\tif (!textures) return;\n\t\t\tconst array = Array.isArray(textures)\n\t\t\t\t? textures\n\t\t\t\t: textures instanceof THREE.Texture\n\t\t\t\t? [textures]\n\t\t\t\t: Object.values(textures);\n\t\t\tif (onLoad) onLoad(array);\n\t\t\tarray.forEach(store.get('gl').initTexture);\n\t\t});\n\n\t\treturn result;\n\t});\n}\n\ninjectNgtsTextureLoader['preload'] = <TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n) => {\n\t(injectNgtLoader as any).preload(() => THREE.TextureLoader, input);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}