angular-three-soba 1.14.0 → 2.0.0-beta.10

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 (426) hide show
  1. package/README.md +2 -2
  2. package/abstractions/billboard/billboard.d.ts +28 -0
  3. package/abstractions/detailed/detailed.d.ts +26 -0
  4. package/abstractions/edges/edges.d.ts +34 -0
  5. package/abstractions/grid/grid.d.ts +50 -0
  6. package/abstractions/index.d.ts +6 -11
  7. package/abstractions/text/text.d.ts +82 -0
  8. package/abstractions/text-3d/text-3d.d.ts +81 -0
  9. package/cameras/{lib/camera → camera}/camera-content.d.ts +2 -2
  10. package/cameras/camera/camera.d.ts +26 -0
  11. package/cameras/cube-camera/cube-camera.d.ts +69 -0
  12. package/cameras/index.d.ts +4 -4
  13. package/cameras/orthographic-camera/orthographic-camera.d.ts +37 -0
  14. package/cameras/{lib/perspective-camera → perspective-camera}/perspective-camera.d.ts +10 -1
  15. package/controls/index.d.ts +1 -1
  16. package/controls/orbit-controls/orbit-controls.d.ts +54 -0
  17. package/esm2022/abstractions/angular-three-soba-abstractions.mjs +1 -1
  18. package/esm2022/abstractions/billboard/billboard.mjs +74 -0
  19. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  20. package/esm2022/abstractions/edges/edges.mjs +88 -0
  21. package/esm2022/abstractions/grid/grid.mjs +180 -0
  22. package/esm2022/abstractions/index.mjs +7 -12
  23. package/esm2022/abstractions/text/text.mjs +274 -0
  24. package/esm2022/abstractions/text-3d/text-3d.mjs +165 -0
  25. package/esm2022/angular-three-soba.mjs +1 -1
  26. package/esm2022/cameras/angular-three-soba-cameras.mjs +1 -1
  27. package/esm2022/cameras/camera/camera-content.mjs +20 -0
  28. package/esm2022/cameras/camera/camera.mjs +77 -0
  29. package/esm2022/cameras/cube-camera/cube-camera.mjs +161 -0
  30. package/esm2022/cameras/index.mjs +5 -5
  31. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +102 -0
  32. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +46 -0
  33. package/esm2022/controls/angular-three-soba-controls.mjs +1 -1
  34. package/esm2022/controls/index.mjs +2 -2
  35. package/esm2022/controls/orbit-controls/orbit-controls.mjs +181 -0
  36. package/esm2022/index.mjs +1 -1
  37. package/esm2022/loaders/angular-three-soba-loaders.mjs +1 -1
  38. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +30 -0
  39. package/esm2022/loaders/index.mjs +5 -6
  40. package/esm2022/loaders/loader/loader.mjs +138 -0
  41. package/esm2022/loaders/progress/progress.mjs +45 -0
  42. package/esm2022/loaders/texture-loader/texture-loader.mjs +28 -0
  43. package/esm2022/materials/angular-three-soba-materials.mjs +1 -1
  44. package/esm2022/materials/index.mjs +7 -6
  45. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +82 -0
  46. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +367 -0
  47. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +171 -0
  48. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +278 -0
  49. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +68 -0
  50. package/esm2022/materials/point-material/point-material.mjs +46 -0
  51. package/esm2022/misc/angular-three-soba-misc.mjs +1 -1
  52. package/esm2022/misc/animations/animations.mjs +59 -0
  53. package/esm2022/misc/bake-shadows/bake-shadows.mjs +24 -0
  54. package/esm2022/misc/caustics/caustics.mjs +387 -0
  55. package/esm2022/misc/decal/decal.mjs +187 -0
  56. package/esm2022/misc/depth-buffer/depth-buffer.mjs +44 -0
  57. package/esm2022/misc/example/example.mjs +160 -0
  58. package/esm2022/misc/fbo/fbo.mjs +47 -0
  59. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  60. package/esm2022/misc/html/html.mjs +304 -0
  61. package/esm2022/misc/index.mjs +14 -5
  62. package/esm2022/misc/sampler/sampler.mjs +142 -0
  63. package/esm2022/misc/shadow/shadow.mjs +111 -0
  64. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  65. package/esm2022/misc/trail/trail.mjs +209 -0
  66. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  67. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  68. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  69. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  70. package/esm2022/modifiers/index.mjs +2 -0
  71. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  72. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  73. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  74. package/esm2022/performances/index.mjs +6 -0
  75. package/esm2022/performances/points/points-input.mjs +64 -0
  76. package/esm2022/performances/points/points.mjs +329 -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 +182 -0
  80. package/esm2022/shaders/angular-three-soba-shaders.mjs +1 -1
  81. package/esm2022/shaders/blur-pass/blur-pass.mjs +61 -0
  82. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  83. package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
  84. package/esm2022/shaders/convolution-material/convolution-material.mjs +94 -0
  85. package/esm2022/shaders/discard-material/discard-material.mjs +3 -0
  86. package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
  87. package/esm2022/shaders/index.mjs +18 -15
  88. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +56 -0
  89. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +223 -0
  90. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +170 -0
  91. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +268 -0
  92. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +37 -0
  93. package/esm2022/shaders/shader-material/shader-material.mjs +34 -0
  94. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +25 -0
  95. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +33 -0
  96. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +86 -0
  97. package/esm2022/shaders/star-field-material/star-field-material.mjs +33 -0
  98. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  99. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +267 -0
  100. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +108 -0
  101. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +206 -0
  102. package/esm2022/staging/angular-three-soba-staging.mjs +1 -1
  103. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  104. package/esm2022/staging/bb-anchor/bb-anchor.mjs +70 -0
  105. package/esm2022/staging/bounds/bounds.mjs +308 -0
  106. package/esm2022/staging/camera-shake/camera-shake.mjs +123 -0
  107. package/esm2022/staging/center/center.mjs +163 -0
  108. package/esm2022/staging/cloud/cloud.mjs +158 -0
  109. package/esm2022/staging/contact-shadows/contact-shadows.mjs +246 -0
  110. package/esm2022/staging/environment/assets.mjs +13 -0
  111. package/esm2022/staging/environment/environment-cube.mjs +47 -0
  112. package/esm2022/staging/environment/environment-ground.mjs +41 -0
  113. package/esm2022/staging/environment/environment-input.mjs +119 -0
  114. package/esm2022/staging/environment/environment-map.mjs +53 -0
  115. package/esm2022/staging/environment/environment-portal.mjs +113 -0
  116. package/esm2022/staging/environment/environment.mjs +61 -0
  117. package/esm2022/staging/environment/utils.mjs +105 -0
  118. package/esm2022/staging/float/float.mjs +94 -0
  119. package/esm2022/staging/index.mjs +22 -18
  120. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  121. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  122. package/esm2022/staging/sky/sky.mjs +119 -0
  123. package/esm2022/staging/sparkles/sparkles.mjs +164 -0
  124. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  125. package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
  126. package/esm2022/staging/spot-light/spot-light-input.mjs +84 -0
  127. package/esm2022/staging/spot-light/spot-light.mjs +81 -0
  128. package/esm2022/staging/spot-light/volumetric-mesh.mjs +98 -0
  129. package/esm2022/staging/stage/stage.mjs +388 -0
  130. package/esm2022/staging/stars/stars.mjs +147 -0
  131. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  132. package/esm2022/staging/wireframe/wireframe.mjs +224 -0
  133. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  134. package/esm2022/utils/content/content.mjs +15 -0
  135. package/esm2022/utils/index.mjs +2 -0
  136. package/fesm2022/angular-three-soba-abstractions.mjs +668 -1882
  137. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  138. package/fesm2022/angular-three-soba-cameras.mjs +279 -232
  139. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-controls.mjs +104 -69
  141. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  142. package/fesm2022/angular-three-soba-loaders.mjs +177 -164
  143. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  144. package/fesm2022/angular-three-soba-materials.mjs +630 -482
  145. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  146. package/fesm2022/angular-three-soba-misc.mjs +2248 -122
  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 +697 -0
  151. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  152. package/fesm2022/angular-three-soba-shaders.mjs +554 -209
  153. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  154. package/fesm2022/angular-three-soba-staging.mjs +3231 -2852
  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/fesm2022/angular-three-soba.mjs.map +1 -1
  159. package/loaders/gltf-loader/gltf-loader.d.ts +10 -0
  160. package/loaders/index.d.ts +4 -5
  161. package/loaders/loader/loader.d.ts +33 -0
  162. package/loaders/progress/progress.d.ts +9 -0
  163. package/loaders/texture-loader/texture-loader.d.ts +7 -0
  164. package/materials/index.d.ts +6 -5
  165. package/materials/mesh-distort-material/mesh-distort-material.d.ts +40 -0
  166. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +99 -0
  167. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +62 -0
  168. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +107 -0
  169. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +29 -0
  170. package/materials/point-material/point-material.d.ts +24 -0
  171. package/metadata.json +1 -0
  172. package/misc/animations/animations.d.ts +15 -0
  173. package/misc/{lib/bake-shadows → bake-shadows}/bake-shadows.d.ts +2 -5
  174. package/misc/caustics/caustics.d.ts +87 -0
  175. package/misc/decal/decal.d.ts +49 -0
  176. package/misc/depth-buffer/depth-buffer.d.ts +9 -0
  177. package/misc/example/example.d.ts +81 -0
  178. package/misc/{lib/fbo → fbo}/fbo.d.ts +4 -2
  179. package/misc/html/html-wrapper.d.ts +559 -0
  180. package/misc/html/html.d.ts +214 -0
  181. package/misc/index.d.ts +13 -4
  182. package/misc/sampler/sampler.d.ts +67 -0
  183. package/misc/shadow/shadow.d.ts +37 -0
  184. package/misc/stats-gl/stats-gl.d.ts +24 -0
  185. package/misc/trail/trail.d.ts +57 -0
  186. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  187. package/misc/trail-texture/trail-texture.d.ts +50 -0
  188. package/modifiers/README.md +3 -0
  189. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  190. package/modifiers/index.d.ts +1 -0
  191. package/package.json +38 -27
  192. package/performances/README.md +3 -0
  193. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  194. package/{performance/lib/adaptive → performances/adaptive-events}/adaptive-events.d.ts +5 -6
  195. package/performances/index.d.ts +5 -0
  196. package/performances/points/points-input.d.ts +32 -0
  197. package/performances/points/points.d.ts +92 -0
  198. package/performances/points/position-point.d.ts +11 -0
  199. package/performances/segments/segment-object.d.ts +7 -0
  200. package/performances/segments/segments.d.ts +124 -0
  201. package/shaders/{lib/blur-pass → blur-pass}/blur-pass.d.ts +2 -2
  202. package/shaders/grid-material/grid-material.d.ts +37 -0
  203. package/shaders/index.d.ts +17 -14
  204. package/shaders/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +147 -2
  205. package/shaders/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +1 -1
  206. package/shaders/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +1 -0
  207. package/shaders/{lib/shader-material → shader-material}/shader-material.d.ts +2 -2
  208. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +19 -0
  209. package/shaders/sparkles-material/sparkles-material.d.ts +17 -0
  210. package/shaders/spot-light-material/spot-light-material.d.ts +13 -0
  211. package/shaders/star-field-material/star-field-material.d.ts +13 -0
  212. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  213. package/staging/accumulative-shadows/accumulative-shadows.d.ts +146 -0
  214. package/staging/{lib/accumulative-shadows → accumulative-shadows}/progressive-light-map.d.ts +2 -2
  215. package/staging/accumulative-shadows/randomized-lights.d.ts +90 -0
  216. package/staging/backdrop/backdrop.d.ts +30 -0
  217. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  218. package/staging/bounds/bounds.d.ts +134 -0
  219. package/staging/camera-shake/camera-shake.d.ts +43 -0
  220. package/staging/center/center.d.ts +70 -0
  221. package/staging/cloud/cloud.d.ts +51 -0
  222. package/staging/contact-shadows/contact-shadows.d.ts +70 -0
  223. package/staging/{lib/environment → environment}/assets.d.ts +9 -9
  224. package/staging/environment/environment-cube.d.ts +15 -0
  225. package/staging/environment/environment-ground.d.ts +13 -0
  226. package/staging/environment/environment-input.d.ts +68 -0
  227. package/staging/environment/environment-map.d.ts +16 -0
  228. package/staging/environment/environment-portal.d.ts +18 -0
  229. package/staging/{lib/environment → environment}/environment.d.ts +2 -6
  230. package/staging/environment/utils.d.ts +7 -0
  231. package/staging/float/float.d.ts +31 -0
  232. package/staging/index.d.ts +21 -17
  233. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  234. package/staging/normal-texture/normal-texture.d.ts +16 -0
  235. package/staging/sky/sky.d.ts +48 -0
  236. package/staging/sparkles/sparkles.d.ts +63 -0
  237. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  238. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  239. package/staging/spot-light/spot-light-input.d.ts +38 -0
  240. package/staging/spot-light/spot-light.d.ts +39 -0
  241. package/staging/spot-light/volumetric-mesh.d.ts +24 -0
  242. package/staging/stage/stage.d.ts +130 -0
  243. package/staging/stars/stars.d.ts +45 -0
  244. package/staging/wireframe/wireframe-input.d.ts +65 -0
  245. package/staging/wireframe/wireframe.d.ts +28 -0
  246. package/utils/README.md +3 -0
  247. package/utils/content/content.d.ts +8 -0
  248. package/utils/index.d.ts +1 -0
  249. package/web-types.json +1 -0
  250. package/abstractions/lib/billboard/billboard.d.ts +0 -14
  251. package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +0 -15
  252. package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +0 -15
  253. package/abstractions/lib/edges/edges.d.ts +0 -18
  254. package/abstractions/lib/gizmo-helper/gizmo-helper.d.ts +0 -41
  255. package/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  256. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -16
  257. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -24
  258. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -14
  259. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -15
  260. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -28
  261. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -21
  262. package/abstractions/lib/line/line-input.d.ts +0 -19
  263. package/abstractions/lib/line/line.d.ts +0 -21
  264. package/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -19
  265. package/abstractions/lib/text/text.d.ts +0 -21
  266. package/abstractions/lib/text-3d/text-3d.d.ts +0 -39
  267. package/assets/default-spot-light-shadow.glsl +0 -10
  268. package/cameras/lib/camera/camera.d.ts +0 -19
  269. package/cameras/lib/cube-camera/cube-camera.d.ts +0 -27
  270. package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +0 -17
  271. package/controls/lib/orbit-controls/orbit-controls.d.ts +0 -27
  272. package/esm2022/abstractions/lib/billboard/billboard.mjs +0 -74
  273. package/esm2022/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -120
  274. package/esm2022/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -99
  275. package/esm2022/abstractions/lib/edges/edges.mjs +0 -96
  276. package/esm2022/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -213
  277. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  278. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -92
  279. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -184
  280. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -46
  281. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -134
  282. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
  283. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -267
  284. package/esm2022/abstractions/lib/line/line-input.mjs +0 -76
  285. package/esm2022/abstractions/lib/line/line.mjs +0 -133
  286. package/esm2022/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  287. package/esm2022/abstractions/lib/text/text.mjs +0 -115
  288. package/esm2022/abstractions/lib/text-3d/text-3d.mjs +0 -145
  289. package/esm2022/cameras/lib/camera/camera-content.mjs +0 -21
  290. package/esm2022/cameras/lib/camera/camera.mjs +0 -75
  291. package/esm2022/cameras/lib/cube-camera/cube-camera.mjs +0 -131
  292. package/esm2022/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -93
  293. package/esm2022/cameras/lib/perspective-camera/perspective-camera.mjs +0 -47
  294. package/esm2022/controls/lib/orbit-controls/orbit-controls.mjs +0 -147
  295. package/esm2022/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +0 -10
  296. package/esm2022/loaders/lib/gltf-loader/gltf-loader.mjs +0 -32
  297. package/esm2022/loaders/lib/loader/loader.mjs +0 -134
  298. package/esm2022/loaders/lib/progress/progress.mjs +0 -39
  299. package/esm2022/loaders/lib/texture-loader/texture-loader.mjs +0 -19
  300. package/esm2022/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -75
  301. package/esm2022/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -328
  302. package/esm2022/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -158
  303. package/esm2022/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -238
  304. package/esm2022/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
  305. package/esm2022/misc/lib/animations/animations.mjs +0 -52
  306. package/esm2022/misc/lib/bake-shadows/bake-shadows.mjs +0 -26
  307. package/esm2022/misc/lib/depth-buffer/depth-buffer.mjs +0 -39
  308. package/esm2022/misc/lib/fbo/fbo.mjs +0 -39
  309. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  310. package/esm2022/performance/index.mjs +0 -5
  311. package/esm2022/performance/lib/adaptive/adaptive-dpr.mjs +0 -47
  312. package/esm2022/performance/lib/adaptive/adaptive-events.mjs +0 -37
  313. package/esm2022/performance/lib/detailed/detailed.mjs +0 -54
  314. package/esm2022/performance/lib/stats/stats.mjs +0 -80
  315. package/esm2022/shaders/lib/blur-pass/blur-pass.mjs +0 -61
  316. package/esm2022/shaders/lib/caustics-material/caustics-material.mjs +0 -128
  317. package/esm2022/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -33
  318. package/esm2022/shaders/lib/convolution-material/convolution-material.mjs +0 -94
  319. package/esm2022/shaders/lib/discard-material/discard-material.mjs +0 -3
  320. package/esm2022/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -55
  321. package/esm2022/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  322. package/esm2022/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -169
  323. package/esm2022/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  324. package/esm2022/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  325. package/esm2022/shaders/lib/shader-material/shader-material.mjs +0 -34
  326. package/esm2022/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -33
  327. package/esm2022/shaders/lib/spot-light-material/spot-light-material.mjs +0 -86
  328. package/esm2022/shaders/lib/star-field-material/star-field-material.mjs +0 -32
  329. package/esm2022/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -249
  330. package/esm2022/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -108
  331. package/esm2022/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -201
  332. package/esm2022/staging/lib/bounds/bounds.mjs +0 -284
  333. package/esm2022/staging/lib/camera-shake/camera-shake.mjs +0 -122
  334. package/esm2022/staging/lib/caustics/caustics.mjs +0 -364
  335. package/esm2022/staging/lib/center/center.mjs +0 -143
  336. package/esm2022/staging/lib/cloud/cloud.mjs +0 -160
  337. package/esm2022/staging/lib/contact-shadows/contact-shadows.mjs +0 -228
  338. package/esm2022/staging/lib/environment/assets.mjs +0 -13
  339. package/esm2022/staging/lib/environment/environment-cube.mjs +0 -41
  340. package/esm2022/staging/lib/environment/environment-ground.mjs +0 -67
  341. package/esm2022/staging/lib/environment/environment-inputs.mjs +0 -87
  342. package/esm2022/staging/lib/environment/environment-map.mjs +0 -39
  343. package/esm2022/staging/lib/environment/environment-portal.mjs +0 -111
  344. package/esm2022/staging/lib/environment/environment.mjs +0 -165
  345. package/esm2022/staging/lib/environment/utils.mjs +0 -70
  346. package/esm2022/staging/lib/float/float.mjs +0 -77
  347. package/esm2022/staging/lib/sky/sky.mjs +0 -109
  348. package/esm2022/staging/lib/sparkles/sparkles.mjs +0 -210
  349. package/esm2022/staging/lib/spot-light/common.mjs +0 -42
  350. package/esm2022/staging/lib/spot-light/shadow-mesh-input.mjs +0 -51
  351. package/esm2022/staging/lib/spot-light/spot-light-input.mjs +0 -62
  352. package/esm2022/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -74
  353. package/esm2022/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -126
  354. package/esm2022/staging/lib/spot-light/spot-light-shadow.mjs +0 -63
  355. package/esm2022/staging/lib/spot-light/spot-light.mjs +0 -117
  356. package/esm2022/staging/lib/spot-light/volumetric-mesh.mjs +0 -86
  357. package/esm2022/staging/lib/stage/stage.mjs +0 -368
  358. package/esm2022/staging/lib/stars/stars.mjs +0 -140
  359. package/fesm2022/angular-three-soba-performance.mjs +0 -210
  360. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  361. package/loaders/lib/cube-texture-loader/cube-texture-loader.d.ts +0 -3
  362. package/loaders/lib/gltf-loader/gltf-loader.d.ts +0 -8
  363. package/loaders/lib/loader/loader.d.ts +0 -26
  364. package/loaders/lib/progress/progress.d.ts +0 -16
  365. package/loaders/lib/texture-loader/texture-loader.d.ts +0 -5
  366. package/materials/lib/mesh-distort-material/mesh-distort-material.d.ts +0 -24
  367. package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +0 -41
  368. package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +0 -28
  369. package/materials/lib/mesh-transmission-material/mesh-transmission-material.d.ts +0 -46
  370. package/materials/lib/mesh-wobble-material/mesh-wobble-material.d.ts +0 -14
  371. package/misc/lib/animations/animations.d.ts +0 -13
  372. package/misc/lib/depth-buffer/depth-buffer.d.ts +0 -7
  373. package/performance/README.md +0 -3
  374. package/performance/index.d.ts +0 -4
  375. package/performance/lib/adaptive/adaptive-dpr.d.ts +0 -11
  376. package/performance/lib/detailed/detailed.d.ts +0 -13
  377. package/performance/lib/stats/stats.d.ts +0 -15
  378. package/plugin/README.md +0 -11
  379. package/plugin/generators.json +0 -19
  380. package/plugin/package.json +0 -9
  381. package/plugin/src/generators/init/compat.d.ts +0 -2
  382. package/plugin/src/generators/init/compat.js +0 -6
  383. package/plugin/src/generators/init/compat.js.map +0 -1
  384. package/plugin/src/generators/init/init.d.ts +0 -4
  385. package/plugin/src/generators/init/init.js +0 -22
  386. package/plugin/src/generators/init/init.js.map +0 -1
  387. package/plugin/src/generators/init/schema.json +0 -6
  388. package/plugin/src/index.d.ts +0 -1
  389. package/plugin/src/index.js +0 -6
  390. package/plugin/src/index.js.map +0 -1
  391. package/shaders/lib/soft-shadow-material/soft-shadow-material.d.ts +0 -10
  392. package/shaders/lib/spot-light-material/spot-light-material.d.ts +0 -4
  393. package/shaders/lib/star-field-material/star-field-material.d.ts +0 -3
  394. package/staging/lib/accumulative-shadows/accumulative-shadows.d.ts +0 -58
  395. package/staging/lib/accumulative-shadows/randomized-lights.d.ts +0 -42
  396. package/staging/lib/bounds/bounds.d.ts +0 -48
  397. package/staging/lib/camera-shake/camera-shake.d.ts +0 -28
  398. package/staging/lib/caustics/caustics.d.ts +0 -47
  399. package/staging/lib/center/center.d.ts +0 -40
  400. package/staging/lib/cloud/cloud.d.ts +0 -23
  401. package/staging/lib/contact-shadows/contact-shadows.d.ts +0 -29
  402. package/staging/lib/environment/environment-cube.d.ts +0 -11
  403. package/staging/lib/environment/environment-ground.d.ts +0 -9
  404. package/staging/lib/environment/environment-inputs.d.ts +0 -28
  405. package/staging/lib/environment/environment-map.d.ts +0 -10
  406. package/staging/lib/environment/environment-portal.d.ts +0 -15
  407. package/staging/lib/environment/utils.d.ts +0 -8
  408. package/staging/lib/float/float.d.ts +0 -16
  409. package/staging/lib/sky/sky.d.ts +0 -20
  410. package/staging/lib/sparkles/sparkles.d.ts +0 -29
  411. package/staging/lib/spot-light/common.d.ts +0 -3
  412. package/staging/lib/spot-light/shadow-mesh-input.d.ts +0 -14
  413. package/staging/lib/spot-light/spot-light-input.d.ts +0 -16
  414. package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +0 -14
  415. package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +0 -25
  416. package/staging/lib/spot-light/spot-light-shadow.d.ts +0 -6
  417. package/staging/lib/spot-light/spot-light.d.ts +0 -17
  418. package/staging/lib/spot-light/volumetric-mesh.d.ts +0 -15
  419. package/staging/lib/stage/stage.d.ts +0 -87
  420. package/staging/lib/stars/stars.d.ts +0 -20
  421. /package/shaders/{lib/caustics-material → caustics}/caustics-material.d.ts +0 -0
  422. /package/shaders/{lib/caustics-projection-material → caustics}/caustics-projection-material.d.ts +0 -0
  423. /package/shaders/{lib/convolution-material → convolution-material}/convolution-material.d.ts +0 -0
  424. /package/shaders/{lib/discard-material → discard-material}/discard-material.d.ts +0 -0
  425. /package/shaders/{lib/mesh-reflector-material → mesh-reflector-material}/mesh-reflector-material.d.ts +0 -0
  426. /package/shaders/{lib/mesh-refraction-material → mesh-refraction-material}/mesh-refraction-material.d.ts +0 -0
@@ -0,0 +1,388 @@
1
+ import { NgIf } from '@angular/common';
2
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, Directive, EventEmitter, Input, Output, computed, } from '@angular/core';
3
+ import { NgtArgs, extend, signalStore } from 'angular-three';
4
+ import { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';
5
+ import { NgtsAccumulativeShadows, } from '../accumulative-shadows/accumulative-shadows';
6
+ import { NgtsRandomizedLights } from '../accumulative-shadows/randomized-lights';
7
+ import { NgtsBounds, injectNgtsBoundsApi } from '../bounds/bounds';
8
+ import { NgtsCenter } from '../center/center';
9
+ import { NgtsContactShadows } from '../contact-shadows/contact-shadows';
10
+ import { NgtsEnvironment } from '../environment/environment';
11
+ import * as i0 from "@angular/core";
12
+ const presets = {
13
+ rembrandt: {
14
+ main: [1, 2, 1],
15
+ fill: [-2, -0.5, -2],
16
+ },
17
+ portrait: {
18
+ main: [-1, 2, 0.5],
19
+ fill: [-1, 0.5, -1.5],
20
+ },
21
+ upfront: {
22
+ main: [0, 2, 1],
23
+ fill: [-1, 0.5, -1.5],
24
+ },
25
+ soft: {
26
+ main: [-2, 4, 4],
27
+ fill: [-1, 0.5, -1.5],
28
+ },
29
+ };
30
+ extend({ AmbientLight, SpotLight, Vector2, PointLight, Group });
31
+ export class NgtsStageRefit {
32
+ constructor() {
33
+ this.boundsApi = injectNgtsBoundsApi();
34
+ this.radius = 0;
35
+ this.adjustCamera = true;
36
+ }
37
+ ngOnChanges() {
38
+ if (this.adjustCamera) {
39
+ this.boundsApi().refresh().clip().fit();
40
+ }
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: "radius", adjustCamera: "adjustCamera" }, usesOnChanges: true, ngImport: i0 }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStageRefit, decorators: [{
46
+ type: Directive,
47
+ args: [{ selector: 'ngts-stage-refit', standalone: true }]
48
+ }], propDecorators: { radius: [{
49
+ type: Input
50
+ }], adjustCamera: [{
51
+ type: Input
52
+ }] } });
53
+ export class NgtsStage {
54
+ constructor() {
55
+ this.Number = Number;
56
+ this.inputs = signalStore({
57
+ adjustCamera: true,
58
+ intensity: 0.5,
59
+ shadows: 'contact',
60
+ environment: 'city',
61
+ preset: 'rembrandt',
62
+ });
63
+ this.centered = new EventEmitter();
64
+ this.preset = this.inputs.select('preset');
65
+ this.environment = this.inputs.select('environment');
66
+ this.boundingState = signalStore({ radius: 0, width: 0, height: 0, depth: 0 });
67
+ this.config = computed(() => {
68
+ const preset = this.preset();
69
+ return typeof preset === 'string' ? presets[preset] : preset;
70
+ });
71
+ this.shadows = this.inputs.select('shadows');
72
+ this.intensity = this.inputs.select('intensity');
73
+ this.adjustCamera = this.inputs.select('adjustCamera');
74
+ this.center = this.inputs.select('center');
75
+ this.shadowsState = computed(() => {
76
+ const shadows = this.shadows();
77
+ const { bias: shadowBias = -0.0001, normalBias = 0, size: shadowSize = 1024, offset: shadowOffset = 0, ...restProps } = (typeof shadows === 'string' ? {} : shadows || {});
78
+ return {
79
+ contactShadow: shadows === 'contact' || restProps.type === 'contact',
80
+ accumulativeShadow: shadows === 'accumulative' || restProps.type === 'accumulative',
81
+ shadowBias,
82
+ normalBias,
83
+ shadowSize,
84
+ shadowOffset,
85
+ ...restProps,
86
+ };
87
+ });
88
+ this.environmentState = computed(() => {
89
+ const environment = this.environment();
90
+ return !environment ? null : typeof environment === 'string' ? { preset: environment } : environment;
91
+ });
92
+ }
93
+ set _preset(preset) {
94
+ this.inputs.set({ preset });
95
+ }
96
+ set _shadows(shadows) {
97
+ this.inputs.set({ shadows });
98
+ }
99
+ set _adjustCamera(adjustCamera) {
100
+ this.inputs.set({ adjustCamera });
101
+ }
102
+ set _environment(environment) {
103
+ this.inputs.set({ environment });
104
+ }
105
+ set _intensity(intensity) {
106
+ this.inputs.set({ intensity });
107
+ }
108
+ set _center(center) {
109
+ this.inputs.set({ center });
110
+ }
111
+ onCentered($event) {
112
+ const { width, height, depth, boundingSphere } = $event;
113
+ this.boundingState.set({ radius: boundingSphere.radius, width, height, depth });
114
+ if (this.centered.observed)
115
+ this.centered.emit($event);
116
+ }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { _preset: ["preset", "_preset"], _shadows: ["shadows", "_shadows"], _adjustCamera: ["adjustCamera", "_adjustCamera"], _environment: ["environment", "_environment"], _intensity: ["intensity", "_intensity"], _center: ["center", "_center"] }, outputs: { centered: "centered" }, ngImport: i0, template: `
119
+ <ngt-ambient-light [intensity]="intensity() / 3" />
120
+ <ngt-spot-light
121
+ [penumbra]="1"
122
+ [position]="[
123
+ config().main[0] * boundingState.get('radius'),
124
+ config().main[1] * boundingState.get('radius'),
125
+ config().main[2] * boundingState.get('radius')
126
+ ]"
127
+ [intensity]="intensity() * 2"
128
+ [castShadow]="!!shadows()"
129
+ >
130
+ <ngt-value [rawValue]="shadowsState().shadowBias" attach="shadow.bias" />
131
+ <ngt-value [rawValue]="shadowsState().normalBias" attach="shadow.normalBias" />
132
+ <ngt-vector2 *args="[shadowsState().shadowSize, shadowsState().shadowSize]" attach="shadow.mapSize" />
133
+ </ngt-spot-light>
134
+ <ngt-point-light
135
+ [position]="[
136
+ config().fill[0] * boundingState.get('radius'),
137
+ config().fill[1] * boundingState.get('radius'),
138
+ config().fill[2] * boundingState.get('radius')
139
+ ]"
140
+ [intensity]="intensity()"
141
+ />
142
+
143
+ <ngts-bounds
144
+ [fit]="!!adjustCamera()"
145
+ [clip]="!!adjustCamera()"
146
+ [margin]="Number(adjustCamera())"
147
+ [observe]="true"
148
+ >
149
+ <ngts-stage-refit [radius]="boundingState.get('radius')" [adjustCamera]="adjustCamera()" />
150
+ <ngts-center
151
+ [position]="[0, shadowsState().shadowOffset / 2, 0]"
152
+ [top]="!!center()?.top"
153
+ [right]="!!center()?.right"
154
+ [bottom]="!!center()?.bottom"
155
+ [left]="!!center()?.left"
156
+ [front]="!!center()?.front"
157
+ [back]="!!center()?.back"
158
+ [disableX]="!!center()?.disableX"
159
+ [disableY]="!!center()?.disableY"
160
+ [disableZ]="!!center()?.disableZ"
161
+ [precise]="!!center()?.precise"
162
+ (centered)="onCentered($event)"
163
+ >
164
+ <ng-content />
165
+ </ngts-center>
166
+ </ngts-bounds>
167
+
168
+ <ngt-group [position]="[0, -boundingState.get('height') / 2 - shadowsState().shadowOffset / 2, 0]">
169
+ <ngts-contact-shadows
170
+ *ngIf="shadowsState().contactShadow"
171
+ [scale]="boundingState.get('radius') * 4"
172
+ [far]="boundingState.get('radius')"
173
+ [blur]="2"
174
+ [opacity]="shadowsState().opacity!"
175
+ [width]="shadowsState().width!"
176
+ [height]="shadowsState().height!"
177
+ [smooth]="shadowsState().smooth!"
178
+ [resolution]="shadowsState().resolution!"
179
+ [frames]="shadowsState().frames!"
180
+ [scale]="shadowsState().scale!"
181
+ [color]="shadowsState().color!"
182
+ [depthWrite]="shadowsState().depthWrite!"
183
+ [renderOrder]="shadowsState().renderOrder!"
184
+ />
185
+ <ngts-accumulative-shadows
186
+ *ngIf="shadowsState().accumulativeShadow"
187
+ [temporal]="true"
188
+ [frames]="100"
189
+ [alphaTest]="0.9"
190
+ [toneMapped]="true"
191
+ [scale]="boundingState.get('radius') * 4"
192
+ [opacity]="shadowsState().opacity!"
193
+ [alphaTest]="shadowsState().alphaTest!"
194
+ [color]="shadowsState().color!"
195
+ [colorBlend]="shadowsState().colorBlend!"
196
+ [resolution]="shadowsState().resolution!"
197
+ >
198
+ <ngts-randomized-lights
199
+ [amount]="shadowsState().amount ?? 8"
200
+ [radius]="shadowsState().radius ?? boundingState.get('radius')"
201
+ [ambient]="shadowsState().ambient ?? 0.5"
202
+ [intensity]="shadowsState().intensity ?? 1"
203
+ [position]="[
204
+ config().main[0] * boundingState.get('radius'),
205
+ config().main[1] * boundingState.get('radius'),
206
+ config().main[2] * boundingState.get('radius')
207
+ ]"
208
+ [size]="boundingState.get('radius') * 4"
209
+ [bias]="-shadowsState().shadowBias"
210
+ [mapSize]="shadowsState().shadowSize"
211
+ />
212
+ </ngts-accumulative-shadows>
213
+ </ngt-group>
214
+
215
+ <ngts-environment
216
+ *ngIf="environmentState() as environment"
217
+ [frames]="environment.frames"
218
+ [near]="environment.near"
219
+ [far]="environment.far"
220
+ [resolution]="environment.resolution"
221
+ [background]="environment.background"
222
+ [blur]="environment.blur"
223
+ [map]="environment.map"
224
+ [files]="environment.files"
225
+ [path]="environment.path"
226
+ [preset]="environment.preset"
227
+ [scene]="environment.scene"
228
+ [extensions]="environment.extensions"
229
+ [ground]="environment.ground"
230
+ [encoding]="environment.encoding"
231
+ />
232
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsBounds, selector: "ngts-bounds", inputs: ["boundsRef", "damping", "fit", "clip", "observe", "margin", "eps"], outputs: ["fitted"] }, { kind: "directive", type: NgtsStageRefit, selector: "ngts-stage-refit", inputs: ["radius", "adjustCamera"] }, { kind: "component", type: NgtsCenter, selector: "ngts-center", inputs: ["centerRef", "top", "right", "bottom", "left", "front", "back", "disableX", "disableY", "disableZ", "disable", "precise", "cacheKey"], outputs: ["centered"] }, { kind: "component", type: NgtsContactShadows, selector: "ngts-contact-shadows", inputs: ["contactShadowsRef", "opacity", "width", "height", "blur", "far", "smooth", "resolution", "frames", "scale", "color", "depthWrite", "renderOrder"] }, { kind: "component", type: NgtsAccumulativeShadows, selector: "ngts-accumulative-shadows", inputs: ["accumulativeShadowsRef", "frames", "blend", "limit", "scale", "temporal", "opacity", "alphaTest", "color", "colorBlend", "resolution", "toneMapped"] }, { kind: "component", type: NgtsRandomizedLights, selector: "ngts-randomized-lights", inputs: ["lightsRef", "frames", "position", "radius", "amount", "intensity", "ambient", "castShadow", "bias", "mapSize", "size", "near", "far"] }, { kind: "component", type: NgtsEnvironment, selector: "ngts-environment" }] }); }
233
+ }
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStage, decorators: [{
235
+ type: Component,
236
+ args: [{
237
+ selector: 'ngts-stage',
238
+ standalone: true,
239
+ template: `
240
+ <ngt-ambient-light [intensity]="intensity() / 3" />
241
+ <ngt-spot-light
242
+ [penumbra]="1"
243
+ [position]="[
244
+ config().main[0] * boundingState.get('radius'),
245
+ config().main[1] * boundingState.get('radius'),
246
+ config().main[2] * boundingState.get('radius')
247
+ ]"
248
+ [intensity]="intensity() * 2"
249
+ [castShadow]="!!shadows()"
250
+ >
251
+ <ngt-value [rawValue]="shadowsState().shadowBias" attach="shadow.bias" />
252
+ <ngt-value [rawValue]="shadowsState().normalBias" attach="shadow.normalBias" />
253
+ <ngt-vector2 *args="[shadowsState().shadowSize, shadowsState().shadowSize]" attach="shadow.mapSize" />
254
+ </ngt-spot-light>
255
+ <ngt-point-light
256
+ [position]="[
257
+ config().fill[0] * boundingState.get('radius'),
258
+ config().fill[1] * boundingState.get('radius'),
259
+ config().fill[2] * boundingState.get('radius')
260
+ ]"
261
+ [intensity]="intensity()"
262
+ />
263
+
264
+ <ngts-bounds
265
+ [fit]="!!adjustCamera()"
266
+ [clip]="!!adjustCamera()"
267
+ [margin]="Number(adjustCamera())"
268
+ [observe]="true"
269
+ >
270
+ <ngts-stage-refit [radius]="boundingState.get('radius')" [adjustCamera]="adjustCamera()" />
271
+ <ngts-center
272
+ [position]="[0, shadowsState().shadowOffset / 2, 0]"
273
+ [top]="!!center()?.top"
274
+ [right]="!!center()?.right"
275
+ [bottom]="!!center()?.bottom"
276
+ [left]="!!center()?.left"
277
+ [front]="!!center()?.front"
278
+ [back]="!!center()?.back"
279
+ [disableX]="!!center()?.disableX"
280
+ [disableY]="!!center()?.disableY"
281
+ [disableZ]="!!center()?.disableZ"
282
+ [precise]="!!center()?.precise"
283
+ (centered)="onCentered($event)"
284
+ >
285
+ <ng-content />
286
+ </ngts-center>
287
+ </ngts-bounds>
288
+
289
+ <ngt-group [position]="[0, -boundingState.get('height') / 2 - shadowsState().shadowOffset / 2, 0]">
290
+ <ngts-contact-shadows
291
+ *ngIf="shadowsState().contactShadow"
292
+ [scale]="boundingState.get('radius') * 4"
293
+ [far]="boundingState.get('radius')"
294
+ [blur]="2"
295
+ [opacity]="shadowsState().opacity!"
296
+ [width]="shadowsState().width!"
297
+ [height]="shadowsState().height!"
298
+ [smooth]="shadowsState().smooth!"
299
+ [resolution]="shadowsState().resolution!"
300
+ [frames]="shadowsState().frames!"
301
+ [scale]="shadowsState().scale!"
302
+ [color]="shadowsState().color!"
303
+ [depthWrite]="shadowsState().depthWrite!"
304
+ [renderOrder]="shadowsState().renderOrder!"
305
+ />
306
+ <ngts-accumulative-shadows
307
+ *ngIf="shadowsState().accumulativeShadow"
308
+ [temporal]="true"
309
+ [frames]="100"
310
+ [alphaTest]="0.9"
311
+ [toneMapped]="true"
312
+ [scale]="boundingState.get('radius') * 4"
313
+ [opacity]="shadowsState().opacity!"
314
+ [alphaTest]="shadowsState().alphaTest!"
315
+ [color]="shadowsState().color!"
316
+ [colorBlend]="shadowsState().colorBlend!"
317
+ [resolution]="shadowsState().resolution!"
318
+ >
319
+ <ngts-randomized-lights
320
+ [amount]="shadowsState().amount ?? 8"
321
+ [radius]="shadowsState().radius ?? boundingState.get('radius')"
322
+ [ambient]="shadowsState().ambient ?? 0.5"
323
+ [intensity]="shadowsState().intensity ?? 1"
324
+ [position]="[
325
+ config().main[0] * boundingState.get('radius'),
326
+ config().main[1] * boundingState.get('radius'),
327
+ config().main[2] * boundingState.get('radius')
328
+ ]"
329
+ [size]="boundingState.get('radius') * 4"
330
+ [bias]="-shadowsState().shadowBias"
331
+ [mapSize]="shadowsState().shadowSize"
332
+ />
333
+ </ngts-accumulative-shadows>
334
+ </ngt-group>
335
+
336
+ <ngts-environment
337
+ *ngIf="environmentState() as environment"
338
+ [frames]="environment.frames"
339
+ [near]="environment.near"
340
+ [far]="environment.far"
341
+ [resolution]="environment.resolution"
342
+ [background]="environment.background"
343
+ [blur]="environment.blur"
344
+ [map]="environment.map"
345
+ [files]="environment.files"
346
+ [path]="environment.path"
347
+ [preset]="environment.preset"
348
+ [scene]="environment.scene"
349
+ [extensions]="environment.extensions"
350
+ [ground]="environment.ground"
351
+ [encoding]="environment.encoding"
352
+ />
353
+ `,
354
+ imports: [
355
+ NgtArgs,
356
+ NgIf,
357
+ NgtsBounds,
358
+ NgtsStageRefit,
359
+ NgtsCenter,
360
+ NgtsContactShadows,
361
+ NgtsAccumulativeShadows,
362
+ NgtsRandomizedLights,
363
+ NgtsEnvironment,
364
+ ],
365
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
366
+ }]
367
+ }], propDecorators: { _preset: [{
368
+ type: Input,
369
+ args: [{ alias: 'preset' }]
370
+ }], _shadows: [{
371
+ type: Input,
372
+ args: [{ alias: 'shadows' }]
373
+ }], _adjustCamera: [{
374
+ type: Input,
375
+ args: [{ alias: 'adjustCamera' }]
376
+ }], _environment: [{
377
+ type: Input,
378
+ args: [{ alias: 'environment' }]
379
+ }], _intensity: [{
380
+ type: Input,
381
+ args: [{ alias: 'intensity' }]
382
+ }], _center: [{
383
+ type: Input,
384
+ args: [{ alias: 'center' }]
385
+ }], centered: [{
386
+ type: Output
387
+ }] } });
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3RhZ2Uvc3RhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEdBRVIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVFLE9BQU8sRUFDTix1QkFBdUIsR0FFdkIsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQWtDLE1BQU0sMkNBQTJDLENBQUM7QUFDakgsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQWdELE1BQU0sa0JBQWtCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFnQyxNQUFNLG9DQUFvQyxDQUFDO0FBRXRHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLEdBQUc7SUFDZixTQUFTLEVBQUU7UUFDVixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3BCO0lBQ0QsUUFBUSxFQUFFO1FBQ1QsSUFBSSxFQUFFLENBQUMs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b20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDb21wb25lbnQsXG5cdERpcmVjdGl2ZSxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRjb21wdXRlZCxcblx0dHlwZSBPbkNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kLCBzaWduYWxTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgQW1iaWVudExpZ2h0LCBHcm91cCwgUG9pbnRMaWdodCwgU3BvdExpZ2h0LCBWZWN0b3IyIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHtcblx0Tmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3MsXG5cdHR5cGUgTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NTdGF0ZSxcbn0gZnJvbSAnLi4vYWNjdW11bGF0aXZlLXNoYWRvd3MvYWNjdW11bGF0aXZlLXNoYWRvd3MnO1xuaW1wb3J0IHsgTmd0c1JhbmRvbWl6ZWRMaWdodHMsIHR5cGUgTmd0c1JhbmRvbWl6ZWRMaWdodHNTdGF0ZSB9IGZyb20gJy4uL2FjY3VtdWxhdGl2ZS1zaGFkb3dzL3JhbmRvbWl6ZWQtbGlnaHRzJztcbmltcG9ydCB7IE5ndHNCb3VuZHMsIGluamVjdE5ndHNCb3VuZHNBcGkgfSBmcm9tICcuLi9ib3VuZHMvYm91bmRzJztcbmltcG9ydCB7IE5ndHNDZW50ZXIsIHR5cGUgTmd0c0NlbnRlclN0YXRlLCB0eXBlIE5ndHNDZW50ZXJlZEV2ZW50IH0gZnJvbSAnLi4vY2VudGVyL2NlbnRlcic7XG5pbXBvcnQgeyBOZ3RzQ29udGFjdFNoYWRvd3MsIHR5cGUgTmd0c0NvbnRhY3RTaGFkb3dzU3RhdGUgfSBmcm9tICcuLi9jb250YWN0LXNoYWRvd3MvY29udGFjdC1zaGFkb3dzJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudFByZXNldHNUeXBlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvYXNzZXRzJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50L2Vudmlyb25tZW50JztcbmltcG9ydCB7IHR5cGUgTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZSB9IGZyb20gJy4uL2Vudmlyb25tZW50L2Vudmlyb25tZW50LWlucHV0JztcblxuY29uc3QgcHJlc2V0cyA9IHtcblx0cmVtYnJhbmR0OiB7XG5cdFx0bWFpbjogWzEsIDIsIDFdLFxuXHRcdGZpbGw6IFstMiwgLTAuNSwgLTJdLFxuXHR9LFxuXHRwb3J0cmFpdDoge1xuXHRcdG1haW46IFstMSwgMiwgMC41XSxcblx0XHRmaWxsOiBbLTEsIDAuNSwgLTEuNV0sXG5cdH0sXG5cdHVwZnJvbnQ6IHtcblx0XHRtYWluOiBbMCwgMiwgMV0sXG5cdFx0ZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuXHR9LFxuXHRzb2Z0OiB7XG5cdFx0bWFpbjogWy0yLCA0LCA0XSxcblx0XHRmaWxsOiBbLTEsIDAuNSwgLTEuNV0sXG5cdH0sXG59O1xuXG50eXBlIE5ndHNTdGFnZVNoYWRvd3NTdGF0ZSA9IFBhcnRpYWw8Tmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NTdGF0ZT4gJlxuXHRQYXJ0aWFsPE5ndHNSYW5kb21pemVkTGlnaHRzU3RhdGU+ICZcblx0UGFydGlhbDxOZ3RzQ29udGFjdFNoYWRvd3NTdGF0ZT4gJiB7XG5cdFx0dHlwZTogJ2NvbnRhY3QnIHwgJ2FjY3VtdWxhdGl2ZSc7XG5cdFx0LyoqIFNoYWRvdyBwbGFuZSBvZmZzZXQsIGRlZmF1bHQ6IDAgKi9cblx0XHRvZmZzZXQ/OiBudW1iZXI7XG5cdFx0LyoqIFNoYWRvdyBiaWFzLCBkZWZhdWx0OiAtMC4wMDAxICovXG5cdFx0Ymlhcz86IG51bWJlcjtcblx0XHQvKiogU2hhZG93IG5vcm1hbCBiaWFzLCBkZWZhdWx0OiAwICovXG5cdFx0bm9ybWFsQmlhcz86IG51bWJlcjtcblx0XHQvKiogU2hhZG93IG1hcCBzaXplLCBkZWZhdWx0OiAxMDI0ICovXG5cdFx0c2l6ZT86IG51bWJlcjtcblx0fTtcblxuZXhwb3J0IHR5cGUgTmd0c1N0YWdlU3RhdGUgPSB7XG5cdC8qKiBMaWdodGluZyBzZXR1cCwgZGVmYXVsdDogXCJyZW1icmFuZHRcIiAqL1xuXHRwcmVzZXQ6XG5cdFx0fCAncmVtYnJhbmR0J1xuXHRcdHwgJ3BvcnRyYWl0J1xuXHRcdHwgJ3VwZnJvbnQnXG5cdFx0fCAnc29mdCdcblx0XHR8IHsgbWFpbjogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdOyBmaWxsOiBbeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcl0gfTtcblx0LyoqIENvbnRyb2xzIHRoZSBncm91bmQgc2hhZG93cywgZGVmYXVsdDogXCJjb250YWN0XCIgKi9cblx0c2hhZG93czogYm9vbGVhbiB8ICdjb250YWN0JyB8ICdhY2N1bXVsYXRpdmUnIHwgTmd0c1N0YWdlU2hhZG93c1N0YXRlO1xuXHQvKiogT3B0aW9uYWxseSB3cmFwcyBhbmQgdGhlcmVieSBjZW50ZXJzIHRoZSBtb2RlbHMgdXNpbmcgPEJvdW5kcz4sIGNhbiBhbHNvIGJlIGEgbWFyZ2luLCBkZWZhdWx0OiB0cnVlICovXG5cdGFkanVzdENhbWVyYTogYm9vbGVhbiB8IG51bWJlcjtcblx0LyoqIFRoZSBkZWZhdWx0IGVudmlyb25tZW50LCBkZWZhdWx0OiBcImNpdHlcIiAqL1xuXHRlbnZpcm9ubWVudDogTmd0c0Vudmlyb25tZW50UHJlc2V0c1R5cGUgfCBQYXJ0aWFsPE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGU+O1xuXHQvKiogVGhlIGxpZ2h0aW5nIGludGVuc2l0eSwgZGVmYXVsdDogMC41ICovXG5cdGludGVuc2l0eTogbnVtYmVyO1xuXHQvKiogVG8gYWRqdXN0IGNlbnRlcmluZywgZGVmYXVsdDogdW5kZWZpbmVkICovXG5cdGNlbnRlcj86IFBhcnRpYWw8Tmd0c0NlbnRlclN0YXRlPjtcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0J25ndHMtc3RhZ2UnOiBOZ3RzU3RhZ2VTdGF0ZTtcblx0fVxufVxuXG5leHRlbmQoeyBBbWJpZW50TGlnaHQsIFNwb3RMaWdodCwgVmVjdG9yMiwgUG9pbnRMaWdodCwgR3JvdXAgfSk7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25ndHMtc3RhZ2UtcmVmaXQnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0c1N0YWdlUmVmaXQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXHRib3VuZHNBcGkgPSBpbmplY3ROZ3RzQm91bmRzQXBpKCk7XG5cblx0QElucHV0KCkgcmFkaXVzID0gMDtcblx0QElucHV0KCkgYWRqdXN0Q2FtZXJhOiBib29sZWFuIHwgbnVtYmVyID0gdHJ1ZTtcblxuXHRuZ09uQ2hhbmdlcygpIHtcblx0XHRpZiAodGhpcy5hZGp1c3RDYW1lcmEpIHtcblx0XHRcdHRoaXMuYm91bmRzQXBpKCkucmVmcmVzaCgpLmNsaXAoKS5maXQoKTtcblx0XHR9XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1zdGFnZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1hbWJpZW50LWxpZ2h0IFtpbnRlbnNpdHldPVwiaW50ZW5zaXR5KCkgLyAzXCIgLz5cblx0XHQ8bmd0LXNwb3QtbGlnaHRcblx0XHRcdFtwZW51bWJyYV09XCIxXCJcblx0XHRcdFtwb3NpdGlvbl09XCJbXG5cdFx0XHRcdGNvbmZpZygpLm1haW5bMF0gKiBib3VuZGluZ1N0YXRlLmdldCgncmFkaXVzJyksXG5cdFx0XHRcdGNvbmZpZygpLm1haW5bMV0gKiBib3VuZGluZ1N0YXRlLmdldCgncmFkaXVzJyksXG5cdFx0XHRcdGNvbmZpZygpLm1haW5bMl0gKiBib3VuZGluZ1N0YXRlLmdldCgncmFkaXVzJylcblx0XHRcdF1cIlxuXHRcdFx0W2ludGVuc2l0eV09XCJpbnRlbnNpdHkoKSAqIDJcIlxuXHRcdFx0W2Nhc3RTaGFkb3ddPVwiISFzaGFkb3dzKClcIlxuXHRcdD5cblx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInNoYWRvd3NTdGF0ZSgpLnNoYWRvd0JpYXNcIiBhdHRhY2g9XCJzaGFkb3cuYmlhc1wiIC8+XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJzaGFkb3dzU3RhdGUoKS5ub3JtYWxCaWFzXCIgYXR0YWNoPVwic2hhZG93Lm5vcm1hbEJpYXNcIiAvPlxuXHRcdFx0PG5ndC12ZWN0b3IyICphcmdzPVwiW3NoYWRvd3NTdGF0ZSgpLnNoYWRvd1NpemUsIHNoYWRvd3NTdGF0ZSgpLnNoYWRvd1NpemVdXCIgYXR0YWNoPVwic2hhZG93Lm1hcFNpemVcIiAvPlxuXHRcdDwvbmd0LXNwb3QtbGlnaHQ+XG5cdFx0PG5ndC1wb2ludC1saWdodFxuXHRcdFx0W3Bvc2l0aW9uXT1cIltcblx0XHRcdFx0Y29uZmlnKCkuZmlsbFswXSAqIGJvdW5kaW5nU3RhdGUuZ2V0KCdyYWRpdXMnKSxcblx0XHRcdFx0Y29uZmlnKCkuZmlsbFsxXSAqIGJvdW5kaW5nU3RhdGUuZ2V0KCdyYWRpdXMnKSxcblx0XHRcdFx0Y29uZmlnKCkuZmlsbFsyXSAqIGJvdW5kaW5nU3RhdGUuZ2V0KCdyYWRpdXMnKVxuXHRcdFx0XVwiXG5cdFx0XHRbaW50ZW5zaXR5XT1cImludGVuc2l0eSgpXCJcblx0XHQvPlxuXG5cdFx0PG5ndHMtYm91bmRzXG5cdFx0XHRbZml0XT1cIiEhYWRqdXN0Q2FtZXJhKClcIlxuXHRcdFx0W2NsaXBdPVwiISFhZGp1c3RDYW1lcmEoKVwiXG5cdFx0XHRbbWFyZ2luXT1cIk51bWJlcihhZGp1c3RDYW1lcmEoKSlcIlxuXHRcdFx0W29ic2VydmVdPVwidHJ1ZVwiXG5cdFx0PlxuXHRcdFx0PG5ndHMtc3RhZ2UtcmVmaXQgW3JhZGl1c109XCJib3VuZGluZ1N0YXRlLmdldCgncmFkaXVzJylcIiBbYWRqdXN0Q2FtZXJhXT1cImFkanVzdENhbWVyYSgpXCIgLz5cblx0XHRcdDxuZ3RzLWNlbnRlclxuXHRcdFx0XHRbcG9zaXRpb25dPVwiWzAsIHNoYWRvd3NTdGF0ZSgpLnNoYWRvd09mZnNldCAvIDIsIDBdXCJcblx0XHRcdFx0W3RvcF09XCIhIWNlbnRlcigpPy50b3BcIlxuXHRcdFx0XHRbcmlnaHRdPVwiISFjZW50ZXIoKT8ucmlnaHRcIlxuXHRcdFx0XHRbYm90dG9tXT1cIiEhY2VudGVyKCk/LmJvdHRvbVwiXG5cdFx0XHRcdFtsZWZ0XT1cIiEhY2VudGVyKCk/LmxlZnRcIlxuXHRcdFx0XHRbZnJvbnRdPVwiISFjZW50ZXIoKT8uZnJvbnRcIlxuXHRcdFx0XHRbYmFja109XCIhIWNlbnRlcigpPy5iYWNrXCJcblx0XHRcdFx0W2Rpc2FibGVYXT1cIiEhY2VudGVyKCk/LmRpc2FibGVYXCJcblx0XHRcdFx0W2Rpc2FibGVZXT1cIiEhY2VudGVyKCk/LmRpc2FibGVZXCJcblx0XHRcdFx0W2Rpc2FibGVaXT1cIiEhY2VudGVyKCk/LmRpc2FibGVaXCJcblx0XHRcdFx0W3ByZWNpc2VdPVwiISFjZW50ZXIoKT8ucHJlY2lzZVwiXG5cdFx0XHRcdChjZW50ZXJlZCk9XCJvbkNlbnRlcmVkKCRldmVudClcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0PC9uZ3RzLWNlbnRlcj5cblx0XHQ8L25ndHMtYm91bmRzPlxuXG5cdFx0PG5ndC1ncm91cCBbcG9zaXRpb25dPVwiWzAsIC1ib3VuZGluZ1N0YXRlLmdldCgnaGVpZ2h0JykgLyAyIC0gc2hhZG93c1N0YXRlKCkuc2hhZG93T2Zmc2V0IC8gMiwgMF1cIj5cblx0XHRcdDxuZ3RzLWNvbnRhY3Qtc2hhZG93c1xuXHRcdFx0XHQqbmdJZj1cInNoYWRvd3NTdGF0ZSgpLmNvbnRhY3RTaGFkb3dcIlxuXHRcdFx0XHRbc2NhbGVdPVwiYm91bmRpbmdTdGF0ZS5nZXQoJ3JhZGl1cycpICogNFwiXG5cdFx0XHRcdFtmYXJdPVwiYm91bmRpbmdTdGF0ZS5nZXQoJ3JhZGl1cycpXCJcblx0XHRcdFx0W2JsdXJdPVwiMlwiXG5cdFx0XHRcdFtvcGFjaXR5XT1cInNoYWRvd3NTdGF0ZSgpLm9wYWNpdHkhXCJcblx0XHRcdFx0W3dpZHRoXT1cInNoYWRvd3NTdGF0ZSgpLndpZHRoIVwiXG5cdFx0XHRcdFtoZWlnaHRdPVwic2hhZG93c1N0YXRlKCkuaGVpZ2h0IVwiXG5cdFx0XHRcdFtzbW9vdGhdPVwic2hhZG93c1N0YXRlKCkuc21vb3RoIVwiXG5cdFx0XHRcdFtyZXNvbHV0aW9uXT1cInNoYWRvd3NTdGF0ZSgpLnJlc29sdXRpb24hXCJcblx0XHRcdFx0W2ZyYW1lc109XCJzaGFkb3dzU3RhdGUoKS5mcmFtZXMhXCJcblx0XHRcdFx0W3NjYWxlXT1cInNoYWRvd3NTdGF0ZSgpLnNjYWxlIVwiXG5cdFx0XHRcdFtjb2xvcl09XCJzaGFkb3dzU3RhdGUoKS5jb2xvciFcIlxuXHRcdFx0XHRbZGVwdGhXcml0ZV09XCJzaGFkb3dzU3RhdGUoKS5kZXB0aFdyaXRlIVwiXG5cdFx0XHRcdFtyZW5kZXJPcmRlcl09XCJzaGFkb3dzU3RhdGUoKS5yZW5kZXJPcmRlciFcIlxuXHRcdFx0Lz5cblx0XHRcdDxuZ3RzLWFjY3VtdWxhdGl2ZS1zaGFkb3dzXG5cdFx0XHRcdCpuZ0lmPVwic2hhZG93c1N0YXRlKCkuYWNjdW11bGF0aXZlU2hhZG93XCJcblx0XHRcdFx0W3RlbXBvcmFsXT1cInRydWVcIlxuXHRcdFx0XHRbZnJhbWVzXT1cIjEwMFwiXG5cdFx0XHRcdFthbHBoYVRlc3RdPVwiMC45XCJcblx0XHRcdFx0W3RvbmVNYXBwZWRdPVwidHJ1ZVwiXG5cdFx0XHRcdFtzY2FsZV09XCJib3VuZGluZ1N0YXRlLmdldCgncmFkaXVzJykgKiA0XCJcblx0XHRcdFx0W29wYWNpdHldPVwic2hhZG93c1N0YXRlKCkub3BhY2l0eSFcIlxuXHRcdFx0XHRbYWxwaGFUZXN0XT1cInNoYWRvd3NTdGF0ZSgpLmFscGhhVGVzdCFcIlxuXHRcdFx0XHRbY29sb3JdPVwic2hhZG93c1N0YXRlKCkuY29sb3IhXCJcblx0XHRcdFx0W2NvbG9yQmxlbmRdPVwic2hhZG93c1N0YXRlKCkuY29sb3JCbGVuZCFcIlxuXHRcdFx0XHRbcmVzb2x1dGlvbl09XCJzaGFkb3dzU3RhdGUoKS5yZXNvbHV0aW9uIVwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuZ3RzLXJhbmRvbWl6ZWQtbGlnaHRzXG5cdFx0XHRcdFx0W2Ftb3VudF09XCJzaGFkb3dzU3RhdGUoKS5hbW91bnQgPz8gOFwiXG5cdFx0XHRcdFx0W3JhZGl1c109XCJzaGFkb3dzU3RhdGUoKS5yYWRpdXMgPz8gYm91bmRpbmdTdGF0ZS5nZXQoJ3JhZGl1cycpXCJcblx0XHRcdFx0XHRbYW1iaWVudF09XCJzaGFkb3dzU3RhdGUoKS5hbWJpZW50ID8/IDAuNVwiXG5cdFx0XHRcdFx0W2ludGVuc2l0eV09XCJzaGFkb3dzU3RhdGUoKS5pbnRlbnNpdHkgPz8gMVwiXG5cdFx0XHRcdFx0W3Bvc2l0aW9uXT1cIltcblx0XHRcdFx0XHRcdGNvbmZpZygpLm1haW5bMF0gKiBib3VuZGluZ1N0YXRlLmdldCgncmFkaXVzJyksXG5cdFx0XHRcdFx0XHRjb25maWcoKS5tYWluWzFdICogYm91bmRpbmdTdGF0ZS5nZXQoJ3JhZGl1cycpLFxuXHRcdFx0XHRcdFx0Y29uZmlnKCkubWFpblsyXSAqIGJvdW5kaW5nU3RhdGUuZ2V0KCdyYWRpdXMnKVxuXHRcdFx0XHRcdF1cIlxuXHRcdFx0XHRcdFtzaXplXT1cImJvdW5kaW5nU3RhdGUuZ2V0KCdyYWRpdXMnKSAqIDRcIlxuXHRcdFx0XHRcdFtiaWFzXT1cIi1zaGFkb3dzU3RhdGUoKS5zaGFkb3dCaWFzXCJcblx0XHRcdFx0XHRbbWFwU2l6ZV09XCJzaGFkb3dzU3RhdGUoKS5zaGFkb3dTaXplXCJcblx0XHRcdFx0Lz5cblx0XHRcdDwvbmd0cy1hY2N1bXVsYXRpdmUtc2hhZG93cz5cblx0XHQ8L25ndC1ncm91cD5cblxuXHRcdDxuZ3RzLWVudmlyb25tZW50XG5cdFx0XHQqbmdJZj1cImVudmlyb25tZW50U3RhdGUoKSBhcyBlbnZpcm9ubWVudFwiXG5cdFx0XHRbZnJhbWVzXT1cImVudmlyb25tZW50LmZyYW1lc1wiXG5cdFx0XHRbbmVhcl09XCJlbnZpcm9ubWVudC5uZWFyXCJcblx0XHRcdFtmYXJdPVwiZW52aXJvbm1lbnQuZmFyXCJcblx0XHRcdFtyZXNvbHV0aW9uXT1cImVudmlyb25tZW50LnJlc29sdXRpb25cIlxuXHRcdFx0W2JhY2tncm91bmRdPVwiZW52aXJvbm1lbnQuYmFja2dyb3VuZFwiXG5cdFx0XHRbYmx1cl09XCJlbnZpcm9ubWVudC5ibHVyXCJcblx0XHRcdFttYXBdPVwiZW52aXJvbm1lbnQubWFwXCJcblx0XHRcdFtmaWxlc109XCJlbnZpcm9ubWVudC5maWxlc1wiXG5cdFx0XHRbcGF0aF09XCJlbnZpcm9ubWVudC5wYXRoXCJcblx0XHRcdFtwcmVzZXRdPVwiZW52aXJvbm1lbnQucHJlc2V0XCJcblx0XHRcdFtzY2VuZV09XCJlbnZpcm9ubWVudC5zY2VuZVwiXG5cdFx0XHRbZXh0ZW5zaW9uc109XCJlbnZpcm9ubWVudC5leHRlbnNpb25zXCJcblx0XHRcdFtncm91bmRdPVwiZW52aXJvbm1lbnQuZ3JvdW5kXCJcblx0XHRcdFtlbmNvZGluZ109XCJlbnZpcm9ubWVudC5lbmNvZGluZ1wiXG5cdFx0Lz5cblx0YCxcblx0aW1wb3J0czogW1xuXHRcdE5ndEFyZ3MsXG5cdFx0TmdJZixcblx0XHROZ3RzQm91bmRzLFxuXHRcdE5ndHNTdGFnZVJlZml0LFxuXHRcdE5ndHNDZW50ZXIsXG5cdFx0Tmd0c0NvbnRhY3RTaGFkb3dzLFxuXHRcdE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzLFxuXHRcdE5ndHNSYW5kb21pemVkTGlnaHRzLFxuXHRcdE5ndHNFbnZpcm9ubWVudCxcblx0XSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhZ2Uge1xuXHROdW1iZXIgPSBOdW1iZXI7XG5cblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzU3RhZ2VTdGF0ZT4oe1xuXHRcdGFkanVzdENhbWVyYTogdHJ1ZSxcblx0XHRpbnRlbnNpdHk6IDAuNSxcblx0XHRzaGFkb3dzOiAnY29udGFjdCcsXG5cdFx0ZW52aXJvbm1lbnQ6ICdjaXR5Jyxcblx0XHRwcmVzZXQ6ICdyZW1icmFuZHQnLFxuXHR9KTtcblxuXHRASW5wdXQoeyBhbGlhczogJ3ByZXNldCcgfSkgc2V0IF9wcmVzZXQocHJlc2V0OiBOZ3RzU3RhZ2VTdGF0ZVsncHJlc2V0J10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBwcmVzZXQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NoYWRvd3MnIH0pIHNldCBfc2hhZG93cyhzaGFkb3dzOiBOZ3RzU3RhZ2VTdGF0ZVsnc2hhZG93cyddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgc2hhZG93cyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYWRqdXN0Q2FtZXJhJyB9KSBzZXQgX2FkanVzdENhbWVyYShhZGp1c3RDYW1lcmE6IE5ndHNTdGFnZVN0YXRlWydhZGp1c3RDYW1lcmEnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGFkanVzdENhbWVyYSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZW52aXJvbm1lbnQnIH0pIHNldCBfZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IE5ndHNTdGFnZVN0YXRlWydlbnZpcm9ubWVudCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZW52aXJvbm1lbnQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ludGVuc2l0eScgfSkgc2V0IF9pbnRlbnNpdHkoaW50ZW5zaXR5OiBOZ3RzU3RhZ2VTdGF0ZVsnaW50ZW5zaXR5J10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBpbnRlbnNpdHkgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2NlbnRlcicgfSkgc2V0IF9jZW50ZXIoY2VudGVyOiBOZ3RzU3RhZ2VTdGF0ZVsnY2VudGVyJ10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjZW50ZXIgfSk7XG5cdH1cblxuXHRAT3V0cHV0KCkgY2VudGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndHNDZW50ZXJlZEV2ZW50PigpO1xuXG5cdHByaXZhdGUgcHJlc2V0ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdwcmVzZXQnKTtcblx0cHJpdmF0ZSBlbnZpcm9ubWVudCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZW52aXJvbm1lbnQnKTtcblxuXHRib3VuZGluZ1N0YXRlID0gc2lnbmFsU3RvcmUoeyByYWRpdXM6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAsIGRlcHRoOiAwIH0pO1xuXHRjb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgcHJlc2V0ID0gdGhpcy5wcmVzZXQoKTtcblx0XHRyZXR1cm4gdHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycgPyBwcmVzZXRzW3ByZXNldF0gOiBwcmVzZXQ7XG5cdH0pO1xuXHRzaGFkb3dzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzaGFkb3dzJyk7XG5cdGludGVuc2l0eSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnaW50ZW5zaXR5Jyk7XG5cdGFkanVzdENhbWVyYSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYWRqdXN0Q2FtZXJhJyk7XG5cdGNlbnRlciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY2VudGVyJyk7XG5cblx0c2hhZG93c1N0YXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHNoYWRvd3MgPSB0aGlzLnNoYWRvd3MoKTtcblx0XHRjb25zdCB7XG5cdFx0XHRiaWFzOiBzaGFkb3dCaWFzID0gLTAuMDAwMSxcblx0XHRcdG5vcm1hbEJpYXMgPSAwLFxuXHRcdFx0c2l6ZTogc2hhZG93U2l6ZSA9IDEwMjQsXG5cdFx0XHRvZmZzZXQ6IHNoYWRvd09mZnNldCA9IDAsXG5cdFx0XHQuLi5yZXN0UHJvcHNcblx0XHR9ID0gKHR5cGVvZiBzaGFkb3dzID09PSAnc3RyaW5nJyA/IHt9IDogc2hhZG93cyB8fCB7fSkgYXMgTmd0c1N0YWdlU2hhZG93c1N0YXRlO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb250YWN0U2hhZG93OiBzaGFkb3dzID09PSAnY29udGFjdCcgfHwgcmVzdFByb3BzLnR5cGUgPT09ICdjb250YWN0Jyxcblx0XHRcdGFjY3VtdWxhdGl2ZVNoYWRvdzogc2hhZG93cyA9PT0gJ2FjY3VtdWxhdGl2ZScgfHwgcmVzdFByb3BzLnR5cGUgPT09ICdhY2N1bXVsYXRpdmUnLFxuXHRcdFx0c2hhZG93Qmlhcyxcblx0XHRcdG5vcm1hbEJpYXMsXG5cdFx0XHRzaGFkb3dTaXplLFxuXHRcdFx0c2hhZG93T2Zmc2V0LFxuXHRcdFx0Li4ucmVzdFByb3BzLFxuXHRcdH07XG5cdH0pO1xuXHRlbnZpcm9ubWVudFN0YXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5lbnZpcm9ubWVudCgpO1xuXHRcdHJldHVybiAhZW52aXJvbm1lbnQgPyBudWxsIDogdHlwZW9mIGVudmlyb25tZW50ID09PSAnc3RyaW5nJyA/IHsgcHJlc2V0OiBlbnZpcm9ubWVudCB9IDogZW52aXJvbm1lbnQ7XG5cdH0pO1xuXG5cdG9uQ2VudGVyZWQoJGV2ZW50OiBOZ3RzQ2VudGVyZWRFdmVudCkge1xuXHRcdGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvdW5kaW5nU3BoZXJlIH0gPSAkZXZlbnQ7XG5cdFx0dGhpcy5ib3VuZGluZ1N0YXRlLnNldCh7IHJhZGl1czogYm91bmRpbmdTcGhlcmUucmFkaXVzLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCB9KTtcblx0XHRpZiAodGhpcy5jZW50ZXJlZC5vYnNlcnZlZCkgdGhpcy5jZW50ZXJlZC5lbWl0KCRldmVudCk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,147 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';
2
+ import { NgtArgs, extend, injectNgtRef, signalStore } from 'angular-three';
3
+ import { StarFieldMaterial } from 'angular-three-soba/shaders';
4
+ import * as THREE from 'three';
5
+ import { BufferAttribute, BufferGeometry, Points } from 'three';
6
+ import * as i0 from "@angular/core";
7
+ extend({ Points, BufferGeometry, BufferAttribute });
8
+ const genStar = (r) => new THREE.Vector3().setFromSpherical(new THREE.Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI));
9
+ export class NgtsStars {
10
+ constructor() {
11
+ this.inputs = signalStore({
12
+ radius: 100,
13
+ depth: 50,
14
+ count: 5000,
15
+ saturation: 0,
16
+ factor: 4,
17
+ fade: false,
18
+ speed: 1,
19
+ });
20
+ this.AdditiveBlending = THREE.AdditiveBlending;
21
+ this.material = new StarFieldMaterial();
22
+ this.starsRef = injectNgtRef();
23
+ this.count = this.inputs.select('count');
24
+ this.depth = this.inputs.select('depth');
25
+ this.factor = this.inputs.select('factor');
26
+ this.radius = this.inputs.select('radius');
27
+ this.saturation = this.inputs.select('saturation');
28
+ this.fade = this.inputs.select('fade');
29
+ this.attributes = computed(() => {
30
+ const positions = [];
31
+ const colors = [];
32
+ const sizes = Array.from({ length: this.count() }, () => (0.5 + 0.5 * Math.random()) * this.factor());
33
+ const color = new THREE.Color();
34
+ let r = this.radius() + this.depth();
35
+ const increment = this.depth() / this.count();
36
+ for (let i = 0; i < this.count(); i++) {
37
+ r -= increment * Math.random();
38
+ positions.push(...genStar(r).toArray());
39
+ color.setHSL(i / this.count(), this.saturation(), 0.9);
40
+ colors.push(color.r, color.g, color.b);
41
+ }
42
+ return {
43
+ positions: new Float32Array(positions),
44
+ colors: new Float32Array(colors),
45
+ sizes: new Float32Array(sizes),
46
+ };
47
+ });
48
+ }
49
+ set _radius(radius) {
50
+ this.inputs.set({ radius });
51
+ }
52
+ set _depth(depth) {
53
+ this.inputs.set({ depth });
54
+ }
55
+ set _count(count) {
56
+ this.inputs.set({ count });
57
+ }
58
+ set _factor(factor) {
59
+ this.inputs.set({ factor });
60
+ }
61
+ set _saturation(saturation) {
62
+ this.inputs.set({ saturation });
63
+ }
64
+ set starsFade(fade) {
65
+ this.inputs.set({ fade });
66
+ }
67
+ set _speed(speed) {
68
+ this.inputs.set({ speed });
69
+ }
70
+ onBeforeRender({ object, state }) {
71
+ object.uniforms['time'].value = state.clock.getElapsedTime() * this.inputs.get('speed');
72
+ }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStars, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsStars, isStandalone: true, selector: "ngts-stars", inputs: { starsRef: "starsRef", _radius: ["radius", "_radius"], _depth: ["depth", "_depth"], _count: ["count", "_count"], _factor: ["factor", "_factor"], _saturation: ["saturation", "_saturation"], starsFade: ["fade", "starsFade"], _speed: ["speed", "_speed"] }, ngImport: i0, template: `
75
+ <ngt-points [ref]="starsRef">
76
+ <ngt-buffer-geometry>
77
+ <ngt-buffer-attribute attach="attributes.position" *args="[attributes().positions, 3]" />
78
+ <ngt-buffer-attribute attach="attributes.color" *args="[attributes().colors, 3]" />
79
+ <ngt-buffer-attribute attach="attributes.size" *args="[attributes().sizes, 1]" />
80
+ </ngt-buffer-geometry>
81
+ <ngt-primitive
82
+ *args="[material]"
83
+ attach="material"
84
+ [blending]="AdditiveBlending"
85
+ [depthWrite]="false"
86
+ [transparent]="true"
87
+ [vertexColors]="true"
88
+ (beforeRender)="onBeforeRender($event)"
89
+ >
90
+ <ngt-value attach="uniforms.fade.value" [rawValue]="fade()" />
91
+ </ngt-primitive>
92
+ </ngt-points>
93
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
94
+ }
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStars, decorators: [{
96
+ type: Component,
97
+ args: [{
98
+ selector: 'ngts-stars',
99
+ standalone: true,
100
+ template: `
101
+ <ngt-points [ref]="starsRef">
102
+ <ngt-buffer-geometry>
103
+ <ngt-buffer-attribute attach="attributes.position" *args="[attributes().positions, 3]" />
104
+ <ngt-buffer-attribute attach="attributes.color" *args="[attributes().colors, 3]" />
105
+ <ngt-buffer-attribute attach="attributes.size" *args="[attributes().sizes, 1]" />
106
+ </ngt-buffer-geometry>
107
+ <ngt-primitive
108
+ *args="[material]"
109
+ attach="material"
110
+ [blending]="AdditiveBlending"
111
+ [depthWrite]="false"
112
+ [transparent]="true"
113
+ [vertexColors]="true"
114
+ (beforeRender)="onBeforeRender($event)"
115
+ >
116
+ <ngt-value attach="uniforms.fade.value" [rawValue]="fade()" />
117
+ </ngt-primitive>
118
+ </ngt-points>
119
+ `,
120
+ imports: [NgtArgs],
121
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
122
+ }]
123
+ }], propDecorators: { starsRef: [{
124
+ type: Input
125
+ }], _radius: [{
126
+ type: Input,
127
+ args: [{ alias: 'radius' }]
128
+ }], _depth: [{
129
+ type: Input,
130
+ args: [{ alias: 'depth' }]
131
+ }], _count: [{
132
+ type: Input,
133
+ args: [{ alias: 'count' }]
134
+ }], _factor: [{
135
+ type: Input,
136
+ args: [{ alias: 'factor' }]
137
+ }], _saturation: [{
138
+ type: Input,
139
+ args: [{ alias: 'saturation' }]
140
+ }], starsFade: [{
141
+ type: Input,
142
+ args: ['fade']
143
+ }], _speed: [{
144
+ type: Input,
145
+ args: [{ alias: 'speed' }]
146
+ }] } });
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3RhcnMvc3RhcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQXdCLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0FBa0JwRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQzdCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUNuQyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDckYsQ0FBQztBQTRCSCxNQUFNLE9BQU8sU0FBUztJQTFCdEI7UUEyQlMsV0FBTSxHQUFHLFdBQVcsQ0FBaUI7WUFDNUMsTUFBTSxFQUFFLEdBQUc7WUFDWCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxJQUFJO1lBQ1gsVUFBVSxFQUFFLENBQUM7WUFDYixNQUFNLEVBQUUs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QUMsc0JBQXNCLENBQUM7aUJBQ2pDOzhCQWNTLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRTBCLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlLLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlNLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlPLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlVLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUlYLFNBQVM7c0JBQTNCLEtBQUs7dUJBQUMsTUFBTTtnQkFJa0IsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIElucHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0QmVmb3JlUmVuZGVyRXZlbnQsIGV4dGVuZCwgaW5qZWN0Tmd0UmVmLCBzaWduYWxTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgU3RhckZpZWxkTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5LCBQb2ludHMgfSBmcm9tICd0aHJlZSc7XG5cbmV4dGVuZCh7IFBvaW50cywgQnVmZmVyR2VvbWV0cnksIEJ1ZmZlckF0dHJpYnV0ZSB9KTtcblxuZXhwb3J0IHR5cGUgTmd0c1N0YXJzU3RhdGUgPSB7XG5cdHJhZGl1czogbnVtYmVyO1xuXHRkZXB0aDogbnVtYmVyO1xuXHRjb3VudDogbnVtYmVyO1xuXHRmYWN0b3I6IG51bWJlcjtcblx0c2F0dXJhdGlvbjogbnVtYmVyO1xuXHRmYWRlOiBib29sZWFuO1xuXHRzcGVlZDogbnVtYmVyO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQnbmd0cy1zdGFycyc6IE5ndHNTdGFyc1N0YXRlO1xuXHR9XG59XG5cbmNvbnN0IGdlblN0YXIgPSAocjogbnVtYmVyKSA9PlxuXHRuZXcgVEhSRUUuVmVjdG9yMygpLnNldEZyb21TcGhlcmljYWwoXG5cdFx0bmV3IFRIUkVFLlNwaGVyaWNhbChyLCBNYXRoLmFjb3MoMSAtIE1hdGgucmFuZG9tKCkgKiAyKSwgTWF0aC5yYW5kb20oKSAqIDIgKiBNYXRoLlBJKSxcblx0KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1zdGFycycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb2ludHMgW3JlZl09XCJzdGFyc1JlZlwiPlxuXHRcdFx0PG5ndC1idWZmZXItZ2VvbWV0cnk+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSBhdHRhY2g9XCJhdHRyaWJ1dGVzLnBvc2l0aW9uXCIgKmFyZ3M9XCJbYXR0cmlidXRlcygpLnBvc2l0aW9ucywgM11cIiAvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5jb2xvclwiICphcmdzPVwiW2F0dHJpYnV0ZXMoKS5jb2xvcnMsIDNdXCIgLz5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlIGF0dGFjaD1cImF0dHJpYnV0ZXMuc2l6ZVwiICphcmdzPVwiW2F0dHJpYnV0ZXMoKS5zaXplcywgMV1cIiAvPlxuXHRcdFx0PC9uZ3QtYnVmZmVyLWdlb21ldHJ5PlxuXHRcdFx0PG5ndC1wcmltaXRpdmVcblx0XHRcdFx0KmFyZ3M9XCJbbWF0ZXJpYWxdXCJcblx0XHRcdFx0YXR0YWNoPVwibWF0ZXJpYWxcIlxuXHRcdFx0XHRbYmxlbmRpbmddPVwiQWRkaXRpdmVCbGVuZGluZ1wiXG5cdFx0XHRcdFtkZXB0aFdyaXRlXT1cImZhbHNlXCJcblx0XHRcdFx0W3RyYW5zcGFyZW50XT1cInRydWVcIlxuXHRcdFx0XHRbdmVydGV4Q29sb3JzXT1cInRydWVcIlxuXHRcdFx0XHQoYmVmb3JlUmVuZGVyKT1cIm9uQmVmb3JlUmVuZGVyKCRldmVudClcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmd0LXZhbHVlIGF0dGFjaD1cInVuaWZvcm1zLmZhZGUudmFsdWVcIiBbcmF3VmFsdWVdPVwiZmFkZSgpXCIgLz5cblx0XHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0XHQ8L25ndC1wb2ludHM+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhcnMge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNTdGFyc1N0YXRlPih7XG5cdFx0cmFkaXVzOiAxMDAsXG5cdFx0ZGVwdGg6IDUwLFxuXHRcdGNvdW50OiA1MDAwLFxuXHRcdHNhdHVyYXRpb246IDAsXG5cdFx0ZmFjdG9yOiA0LFxuXHRcdGZhZGU6IGZhbHNlLFxuXHRcdHNwZWVkOiAxLFxuXHR9KTtcblx0QWRkaXRpdmVCbGVuZGluZyA9IFRIUkVFLkFkZGl0aXZlQmxlbmRpbmc7XG5cdG1hdGVyaWFsID0gbmV3IFN0YXJGaWVsZE1hdGVyaWFsKCk7XG5cblx0QElucHV0KCkgc3RhcnNSZWYgPSBpbmplY3ROZ3RSZWY8UG9pbnRzPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmFkaXVzJyB9KSBzZXQgX3JhZGl1cyhyYWRpdXM6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJhZGl1cyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZGVwdGgnIH0pIHNldCBfZGVwdGgoZGVwdGg6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGRlcHRoIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdjb3VudCcgfSkgc2V0IF9jb3VudChjb3VudDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY291bnQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZhY3RvcicgfSkgc2V0IF9mYWN0b3IoZmFjdG9yOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmYWN0b3IgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NhdHVyYXRpb24nIH0pIHNldCBfc2F0dXJhdGlvbihzYXR1cmF0aW9uOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzYXR1cmF0aW9uIH0pO1xuXHR9XG5cblx0QElucHV0KCdmYWRlJykgc2V0IHN0YXJzRmFkZShmYWRlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZmFkZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc3BlZWQnIH0pIHNldCBfc3BlZWQoc3BlZWQ6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNwZWVkIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBjb3VudCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY291bnQnKTtcblx0cHJpdmF0ZSBkZXB0aCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGVwdGgnKTtcblx0cHJpdmF0ZSBmYWN0b3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZhY3RvcicpO1xuXHRwcml2YXRlIHJhZGl1cyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgncmFkaXVzJyk7XG5cdHByaXZhdGUgc2F0dXJhdGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc2F0dXJhdGlvbicpO1xuXG5cdGZhZGUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZhZGUnKTtcblx0YXR0cmlidXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBwb3NpdGlvbnM6IG51bWJlcltdID0gW107XG5cdFx0Y29uc3QgY29sb3JzOiBudW1iZXJbXSA9IFtdO1xuXHRcdGNvbnN0IHNpemVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5jb3VudCgpIH0sICgpID0+ICgwLjUgKyAwLjUgKiBNYXRoLnJhbmRvbSgpKSAqIHRoaXMuZmFjdG9yKCkpO1xuXHRcdGNvbnN0IGNvbG9yID0gbmV3IFRIUkVFLkNvbG9yKCk7XG5cdFx0bGV0IHIgPSB0aGlzLnJhZGl1cygpICsgdGhpcy5kZXB0aCgpO1xuXHRcdGNvbnN0IGluY3JlbWVudCA9IHRoaXMuZGVwdGgoKSAvIHRoaXMuY291bnQoKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnQoKTsgaSsrKSB7XG5cdFx0XHRyIC09IGluY3JlbWVudCAqIE1hdGgucmFuZG9tKCk7XG5cdFx0XHRwb3NpdGlvbnMucHVzaCguLi5nZW5TdGFyKHIpLnRvQXJyYXkoKSk7XG5cdFx0XHRjb2xvci5zZXRIU0woaSAvIHRoaXMuY291bnQoKSwgdGhpcy5zYXR1cmF0aW9uKCksIDAuOSk7XG5cdFx0XHRjb2xvcnMucHVzaChjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBvc2l0aW9uczogbmV3IEZsb2F0MzJBcnJheShwb3NpdGlvbnMpLFxuXHRcdFx0Y29sb3JzOiBuZXcgRmxvYXQzMkFycmF5KGNvbG9ycyksXG5cdFx0XHRzaXplczogbmV3IEZsb2F0MzJBcnJheShzaXplcyksXG5cdFx0fTtcblx0fSk7XG5cblx0b25CZWZvcmVSZW5kZXIoeyBvYmplY3QsIHN0YXRlIH06IE5ndEJlZm9yZVJlbmRlckV2ZW50PEluc3RhbmNlVHlwZTx0eXBlb2YgU3RhckZpZWxkTWF0ZXJpYWw+Pikge1xuXHRcdG9iamVjdC51bmlmb3Jtc1sndGltZSddLnZhbHVlID0gc3RhdGUuY2xvY2suZ2V0RWxhcHNlZFRpbWUoKSAqIHRoaXMuaW5wdXRzLmdldCgnc3BlZWQnKTtcblx0fVxufVxuIl19