angular-three-soba 1.14.1 → 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 +43 -32
  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
@@ -1,70 +0,0 @@
1
- import { injectNgtDestroy, injectNgtLoader, injectNgtRef, is } from 'angular-three';
2
- import { debounceTime, isObservable, map, of, takeUntil } from 'rxjs';
3
- import { CubeReflectionMapping, CubeTextureLoader, EquirectangularReflectionMapping, LinearEncoding, sRGBEncoding, } from 'three';
4
- import { RGBELoader } from 'three-stdlib';
5
- import { ngtsEnvironmentPresetsObj } from './assets';
6
- function resolveScene(scene) {
7
- return is.ref(scene) ? scene.nativeElement : scene;
8
- }
9
- export function setEnvProps(background, scene, defaultScene, texture, blur = 0) {
10
- const target = resolveScene(scene || defaultScene);
11
- const oldbg = target.background;
12
- const oldenv = target.environment;
13
- const oldBlur = target.backgroundBlurriness || 0;
14
- if (background !== 'only')
15
- target.environment = texture;
16
- if (background)
17
- target.background = texture;
18
- if (background && target.backgroundBlurriness !== undefined)
19
- target.backgroundBlurriness = blur;
20
- return () => {
21
- if (background !== 'only')
22
- target.environment = oldenv;
23
- if (background)
24
- target.background = oldbg;
25
- if (background && target.backgroundBlurriness !== undefined)
26
- target.backgroundBlurriness = oldBlur;
27
- };
28
- }
29
- const CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';
30
- export function injectNgtsEnvironment(paramsFactory) {
31
- let p = {
32
- files: ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'],
33
- path: '',
34
- preset: undefined,
35
- encoding: undefined,
36
- };
37
- const params = paramsFactory(p);
38
- const params$ = isObservable(params) ? params : of(params);
39
- const textureRef = injectNgtRef();
40
- const { destroy$ } = injectNgtDestroy(() => {
41
- textureRef.nativeElement?.dispose();
42
- });
43
- const loaderResult = injectNgtLoader((inputs) => (Array.isArray(inputs) ? CubeTextureLoader : RGBELoader), params$.pipe(debounceTime(0), map((data) => {
44
- p = data;
45
- return p;
46
- }), map((data) => {
47
- if (data.preset) {
48
- if (!(data.preset in ngtsEnvironmentPresetsObj))
49
- throw new Error('Preset must be one of: ' + Object.keys(ngtsEnvironmentPresetsObj).join(', '));
50
- data.files = ngtsEnvironmentPresetsObj[data.preset];
51
- data.path = CUBEMAP_ROOT;
52
- }
53
- return Array.isArray(data.files) ? [data.files] : data.files;
54
- })), (loader) => {
55
- if (p.path) {
56
- loader.setPath(p.path);
57
- }
58
- if (p.extensions) {
59
- p.extensions(loader);
60
- }
61
- });
62
- loaderResult.pipe(takeUntil(destroy$)).subscribe((results) => {
63
- const texture = Array.isArray(p.files) ? results[0] : results;
64
- texture.mapping = Array.isArray(p.files) ? CubeReflectionMapping : EquirectangularReflectionMapping;
65
- texture.encoding = (p.encoding ?? Array.isArray(p.files)) ? sRGBEncoding : LinearEncoding;
66
- textureRef.nativeElement = texture;
67
- });
68
- return textureRef;
69
- }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvZW52aXJvbm1lbnQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFDSCxxQkFBcUIsRUFFckIsaUJBQWlCLEVBQ2pCLGdDQUFnQyxFQUNoQyxjQUFjLEVBQ2QsWUFBWSxHQUVmLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHckQsU0FBUyxZQUFZLENBQUMsS0FBNEM7SUFDOUQsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQ3ZCLFVBQTRCLEVBQzVCLEtBQXdELEVBQ3hELFlBQXlCLEVBQ3pCLE9BQXNCLEVBQ3RCLElBQUksR0FBRyxDQUFDO0lBRVIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsQ0FBQztJQUNuRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQztJQUVqRCxJQUFJLFVBQVUsS0FBSyxNQUFNO1FBQUUsTUFBTSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDeEQsSUFBSSxVQUFVO1FBQUUsTUFBTSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7SUFDNUMsSUFBSSxVQUFVLElBQUksTUFBTSxDQUFDLG9CQUFvQixLQUFLLFNBQVM7UUFBRSxNQUFNLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBRWhHLE9BQU8sR0FBRyxFQUFFO1FBQ1IsSUFBSSxVQUFVLEtBQUssTUFBTTtZQUFFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1FBQ3ZELElBQUksVUFBVTtZQUFFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFDLElBQUksVUFBVSxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsS0FBSyxTQUFTO1lBQUUsTUFBTSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztJQUN2RyxDQUFDLENBQUM7QUFDTixDQUFDO0FBTUQsTUFBTSxZQUFZLEdBQUcsNEVBQTRFLENBQUM7QUFDbEcsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxhQUUwRTtJQUUxRSxJQUFJLENBQUMsR0FBRztRQUNKLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO1FBQ3pFLElBQUksRUFBRSxFQUFFO1FBQ1IsTUFBTSxFQUFFLFNBQVM7UUFDakIsUUFBUSxFQUFFLFNBQVM7S0FDUyxDQUFDO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTNELE1BQU0sVUFBVSxHQUFHLFlBQVksRUFBeUIsQ0FBQztJQUN6RCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxFQUFFO1FBQ3ZDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQ2hDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQWdDLEVBQ25HLE9BQU8sQ0FBQyxJQUFJLENBQ1IsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1QsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNULE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLHlCQUF5QixDQUFDO2dCQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRyxJQUFJLENBQUMsS0FBSyxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztTQUM1QjtRQUNELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBYyxDQUFDO0lBQzNFLENBQUMsQ0FBQyxDQUNMLEVBQ0QsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNQLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNSLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFO1lBQ2QsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjtJQUNMLENBQUMsQ0FDSixDQUFDO0lBRUYsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN6RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFNLENBQUMsQ0FBQyxDQUFDLENBQUUsT0FBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQztRQUNyRyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUEsQ0FBQyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFNLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFFekYsVUFBVSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgaW5qZWN0Tmd0TG9hZGVyLCBpbmplY3ROZ3RSZWYsIGlzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGlzT2JzZXJ2YWJsZSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIEN1YmVSZWZsZWN0aW9uTWFwcGluZyxcbiAgICBDdWJlVGV4dHVyZSxcbiAgICBDdWJlVGV4dHVyZUxvYWRlcixcbiAgICBFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZyxcbiAgICBMaW5lYXJFbmNvZGluZyxcbiAgICBzUkdCRW5jb2RpbmcsXG4gICAgVGV4dHVyZSxcbn0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUkdCRUxvYWRlciB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBuZ3RzRW52aXJvbm1lbnRQcmVzZXRzT2JqIH0gZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50SW5wdXRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC1pbnB1dHMnO1xuXG5mdW5jdGlvbiByZXNvbHZlU2NlbmUoc2NlbmU6IFRIUkVFLlNjZW5lIHwgRWxlbWVudFJlZjxUSFJFRS5TY2VuZT4pIHtcbiAgICByZXR1cm4gaXMucmVmKHNjZW5lKSA/IHNjZW5lLm5hdGl2ZUVsZW1lbnQgOiBzY2VuZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVudlByb3BzKFxuICAgIGJhY2tncm91bmQ6IGJvb2xlYW4gfCAnb25seScsXG4gICAgc2NlbmU6IFRIUkVFLlNjZW5lIHwgRWxlbWVudFJlZjxUSFJFRS5TY2VuZT4gfCB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFNjZW5lOiBUSFJFRS5TY2VuZSxcbiAgICB0ZXh0dXJlOiBUSFJFRS5UZXh0dXJlLFxuICAgIGJsdXIgPSAwXG4pIHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXNvbHZlU2NlbmUoc2NlbmUgfHwgZGVmYXVsdFNjZW5lKTtcbiAgICBjb25zdCBvbGRiZyA9IHRhcmdldC5iYWNrZ3JvdW5kO1xuICAgIGNvbnN0IG9sZGVudiA9IHRhcmdldC5lbnZpcm9ubWVudDtcbiAgICBjb25zdCBvbGRCbHVyID0gdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzIHx8IDA7XG5cbiAgICBpZiAoYmFja2dyb3VuZCAhPT0gJ29ubHknKSB0YXJnZXQuZW52aXJvbm1lbnQgPSB0ZXh0dXJlO1xuICAgIGlmIChiYWNrZ3JvdW5kKSB0YXJnZXQuYmFja2dyb3VuZCA9IHRleHR1cmU7XG4gICAgaWYgKGJhY2tncm91bmQgJiYgdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzICE9PSB1bmRlZmluZWQpIHRhcmdldC5iYWNrZ3JvdW5kQmx1cnJpbmVzcyA9IGJsdXI7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoYmFja2dyb3VuZCAhPT0gJ29ubHknKSB0YXJnZXQuZW52aXJvbm1lbnQgPSBvbGRlbnY7XG4gICAgICAgIGlmIChiYWNrZ3JvdW5kKSB0YXJnZXQuYmFja2dyb3VuZCA9IG9sZGJnO1xuICAgICAgICBpZiAoYmFja2dyb3VuZCAmJiB0YXJnZXQuYmFja2dyb3VuZEJsdXJyaW5lc3MgIT09IHVuZGVmaW5lZCkgdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzID0gb2xkQmx1cjtcbiAgICB9O1xufVxuXG50eXBlIE5ndHNJbmplY3RFbnZpcm9ubWVudFBhcmFtcyA9IFBhcnRpYWw8XG4gICAgUGljazxOZ3RzRW52aXJvbm1lbnRJbnB1dHMsICdmaWxlcycgfCAncGF0aCcgfCAncHJlc2V0JyB8ICdleHRlbnNpb25zJyB8ICdlbmNvZGluZyc+XG4+O1xuXG5jb25zdCBDVUJFTUFQX1JPT1QgPSAnaHR0cHM6Ly9tYXJrZXQtYXNzZXRzLmZyYTEuY2RuLmRpZ2l0YWxvY2VhbnNwYWNlcy5jb20vbWFya2V0LWFzc2V0cy9oZHJpcy8nO1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNFbnZpcm9ubWVudChcbiAgICBwYXJhbXNGYWN0b3J5OiAoXG4gICAgICAgIGRlZmF1bHRQYXJhbXM6IE5ndHNJbmplY3RFbnZpcm9ubWVudFBhcmFtc1xuICAgICkgPT4gTmd0c0luamVjdEVudmlyb25tZW50UGFyYW1zIHwgT2JzZXJ2YWJsZTxOZ3RzSW5qZWN0RW52aXJvbm1lbnRQYXJhbXM+XG4pIHtcbiAgICBsZXQgcCA9IHtcbiAgICAgICAgZmlsZXM6IFsnL3B4LnBuZycsICcvbngucG5nJywgJy9weS5wbmcnLCAnL255LnBuZycsICcvcHoucG5nJywgJy9uei5wbmcnXSxcbiAgICAgICAgcGF0aDogJycsXG4gICAgICAgIHByZXNldDogdW5kZWZpbmVkLFxuICAgICAgICBlbmNvZGluZzogdW5kZWZpbmVkLFxuICAgIH0gYXMgTmd0c0luamVjdEVudmlyb25tZW50UGFyYW1zO1xuICAgIGNvbnN0IHBhcmFtcyA9IHBhcmFtc0ZhY3RvcnkocCk7XG4gICAgY29uc3QgcGFyYW1zJCA9IGlzT2JzZXJ2YWJsZShwYXJhbXMpID8gcGFyYW1zIDogb2YocGFyYW1zKTtcblxuICAgIGNvbnN0IHRleHR1cmVSZWYgPSBpbmplY3ROZ3RSZWY8VGV4dHVyZSB8IEN1YmVUZXh0dXJlPigpO1xuICAgIGNvbnN0IHsgZGVzdHJveSQgfSA9IGluamVjdE5ndERlc3Ryb3koKCkgPT4ge1xuICAgICAgICB0ZXh0dXJlUmVmLm5hdGl2ZUVsZW1lbnQ/LmRpc3Bvc2UoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvYWRlclJlc3VsdCA9IGluamVjdE5ndExvYWRlcihcbiAgICAgICAgKGlucHV0cykgPT4gKEFycmF5LmlzQXJyYXkoaW5wdXRzKSA/IEN1YmVUZXh0dXJlTG9hZGVyIDogUkdCRUxvYWRlcikgYXMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55LFxuICAgICAgICBwYXJhbXMkLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBwID0gZGF0YTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEucHJlc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGRhdGEucHJlc2V0IGluIG5ndHNFbnZpcm9ubWVudFByZXNldHNPYmopKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcmVzZXQgbXVzdCBiZSBvbmUgb2Y6ICcgKyBPYmplY3Qua2V5cyhuZ3RzRW52aXJvbm1lbnRQcmVzZXRzT2JqKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9IG5ndHNFbnZpcm9ubWVudFByZXNldHNPYmpbZGF0YS5wcmVzZXRdO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnBhdGggPSBDVUJFTUFQX1JPT1Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEuZmlsZXMpID8gW2RhdGEuZmlsZXNdIDogKGRhdGEuZmlsZXMhIGFzIGFueSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICAobG9hZGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAocC5wYXRoKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnNldFBhdGgocC5wYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwLmV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBwLmV4dGVuc2lvbnMobG9hZGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBsb2FkZXJSZXN1bHQucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlc3VsdHMpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dHVyZSA9IEFycmF5LmlzQXJyYXkocC5maWxlcyEpID8gKHJlc3VsdHMgYXMgYW55W10pWzBdIDogcmVzdWx0cztcbiAgICAgICAgdGV4dHVyZS5tYXBwaW5nID0gQXJyYXkuaXNBcnJheShwLmZpbGVzISkgPyBDdWJlUmVmbGVjdGlvbk1hcHBpbmcgOiBFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZztcbiAgICAgICAgdGV4dHVyZS5lbmNvZGluZyA9IHAuZW5jb2RpbmcgPz8gQXJyYXkuaXNBcnJheShwLmZpbGVzISkgPyBzUkdCRW5jb2RpbmcgOiBMaW5lYXJFbmNvZGluZztcblxuICAgICAgICB0ZXh0dXJlUmVmLm5hdGl2ZUVsZW1lbnQgPSB0ZXh0dXJlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRleHR1cmVSZWY7XG59XG4iXX0=
@@ -1,77 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
- import { extend, injectBeforeRender, injectNgtRef, NgtRxStore } from 'angular-three';
3
- import * as THREE from 'three';
4
- import { Group } from 'three';
5
- import * as i0 from "@angular/core";
6
- extend({ Group });
7
- class NgtsFloat extends NgtRxStore {
8
- set speed(speed) {
9
- this.set({ speed });
10
- }
11
- set rotationIntensity(rotationIntensity) {
12
- this.set({ rotationIntensity });
13
- }
14
- set floatIntensity(floatIntensity) {
15
- this.set({ floatIntensity });
16
- }
17
- set floatingRange(floatingRange) {
18
- this.set({ floatingRange });
19
- }
20
- initialize() {
21
- super.initialize();
22
- this.set({ speed: 1, rotationIntensity: 1, floatIntensity: 1, floatingRange: [-0.1, 0.1] });
23
- }
24
- constructor() {
25
- super();
26
- this.offset = Math.random() * 10000;
27
- this.floatRef = injectNgtRef();
28
- injectBeforeRender(this.onBeforeRender.bind(this));
29
- }
30
- onBeforeRender({ clock }) {
31
- if (!this.floatRef.nativeElement)
32
- return;
33
- const { speed, floatingRange, floatIntensity, rotationIntensity } = this.get();
34
- const t = this.offset + clock.getElapsedTime();
35
- this.floatRef.nativeElement.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;
36
- this.floatRef.nativeElement.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;
37
- this.floatRef.nativeElement.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;
38
- let yPosition = Math.sin((t / 4) * speed) / 10;
39
- yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);
40
- this.floatRef.nativeElement.position.y = yPosition * floatIntensity;
41
- }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsFloat, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsFloat, isStandalone: true, selector: "ngts-float", inputs: { floatRef: "floatRef", speed: "speed", rotationIntensity: "rotationIntensity", floatIntensity: "floatIntensity", floatingRange: "floatingRange" }, usesInheritance: true, ngImport: i0, template: `
44
- <ngt-group ngtCompound>
45
- <ngt-group [ref]="floatRef">
46
- <ng-content />
47
- </ngt-group>
48
- </ngt-group>
49
- `, isInline: true }); }
50
- }
51
- export { NgtsFloat };
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsFloat, decorators: [{
53
- type: Component,
54
- args: [{
55
- selector: 'ngts-float',
56
- standalone: true,
57
- template: `
58
- <ngt-group ngtCompound>
59
- <ngt-group [ref]="floatRef">
60
- <ng-content />
61
- </ngt-group>
62
- </ngt-group>
63
- `,
64
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
65
- }]
66
- }], ctorParameters: function () { return []; }, propDecorators: { floatRef: [{
67
- type: Input
68
- }], speed: [{
69
- type: Input
70
- }], rotationIntensity: [{
71
- type: Input
72
- }], floatIntensity: [{
73
- type: Input
74
- }], floatingRange: [{
75
- type: Input
76
- }] } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvZmxvYXQvZmxvYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQWtCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUU5QixNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBRWxCLE1BWWEsU0FBVSxTQUFRLFVBQVU7SUFLckMsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxpQkFBaUIsQ0FBQyxpQkFBeUI7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBYSxjQUFjLENBQUMsY0FBc0I7UUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQWEsYUFBYSxDQUFDLGFBQWlDO1FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFUSxVQUFVO1FBQ2YsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQTFCSyxXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV2QyxhQUFRLEdBQUcsWUFBWSxFQUFlLENBQUM7UUF5QjVDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBa0I7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDekMsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9FLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQzdGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQzdGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQzlGLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9DLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsY0FBYyxDQUFDO0lBQ3hFLENBQUM7OEdBekNRLFNBQVM7a0dBQVQsU0FBUyx5UEFUUjs7Ozs7O0tBTVQ7O1NBR1EsU0FBUzsyRkFBVCxTQUFTO2tCQVpyQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7S0FNVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBSVksUUFBUTtzQkFBaEIsS0FBSztnQkFFTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFJTyxjQUFjO3NCQUExQixLQUFLO2dCQUlPLGFBQWE7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0UmVmLCBOZ3RSZW5kZXJTdGF0ZSwgTmd0UnhTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICd0aHJlZSc7XG5cbmV4dGVuZCh7IEdyb3VwIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtZmxvYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1ncm91cCBuZ3RDb21wb3VuZD5cbiAgICAgICAgICAgIDxuZ3QtZ3JvdXAgW3JlZl09XCJmbG9hdFJlZlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICA8L25ndC1ncm91cD5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNGbG9hdCBleHRlbmRzIE5ndFJ4U3RvcmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb2Zmc2V0ID0gTWF0aC5yYW5kb20oKSAqIDEwMDAwO1xuXG4gICAgQElucHV0KCkgZmxvYXRSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuR3JvdXA+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgc3BlZWQoc3BlZWQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNwZWVkIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByb3RhdGlvbkludGVuc2l0eShyb3RhdGlvbkludGVuc2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcm90YXRpb25JbnRlbnNpdHkgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZsb2F0SW50ZW5zaXR5KGZsb2F0SW50ZW5zaXR5OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmbG9hdEludGVuc2l0eSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmxvYXRpbmdSYW5nZShmbG9hdGluZ1JhbmdlOiBbbnVtYmVyPywgbnVtYmVyP10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmbG9hdGluZ1JhbmdlIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoeyBzcGVlZDogMSwgcm90YXRpb25JbnRlbnNpdHk6IDEsIGZsb2F0SW50ZW5zaXR5OiAxLCBmbG9hdGluZ1JhbmdlOiBbLTAuMSwgMC4xXSB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMub25CZWZvcmVSZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJlZm9yZVJlbmRlcih7IGNsb2NrIH06IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIGlmICghdGhpcy5mbG9hdFJlZi5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgc3BlZWQsIGZsb2F0aW5nUmFuZ2UsIGZsb2F0SW50ZW5zaXR5LCByb3RhdGlvbkludGVuc2l0eSB9ID0gdGhpcy5nZXQoKTtcbiAgICAgICAgY29uc3QgdCA9IHRoaXMub2Zmc2V0ICsgY2xvY2suZ2V0RWxhcHNlZFRpbWUoKTtcbiAgICAgICAgdGhpcy5mbG9hdFJlZi5uYXRpdmVFbGVtZW50LnJvdGF0aW9uLnggPSAoTWF0aC5jb3MoKHQgLyA0KSAqIHNwZWVkKSAvIDgpICogcm90YXRpb25JbnRlbnNpdHk7XG4gICAgICAgIHRoaXMuZmxvYXRSZWYubmF0aXZlRWxlbWVudC5yb3RhdGlvbi55ID0gKE1hdGguc2luKCh0IC8gNCkgKiBzcGVlZCkgLyA4KSAqIHJvdGF0aW9uSW50ZW5zaXR5O1xuICAgICAgICB0aGlzLmZsb2F0UmVmLm5hdGl2ZUVsZW1lbnQucm90YXRpb24ueiA9IChNYXRoLnNpbigodCAvIDQpICogc3BlZWQpIC8gMjApICogcm90YXRpb25JbnRlbnNpdHk7XG4gICAgICAgIGxldCB5UG9zaXRpb24gPSBNYXRoLnNpbigodCAvIDQpICogc3BlZWQpIC8gMTA7XG4gICAgICAgIHlQb3NpdGlvbiA9IFRIUkVFLk1hdGhVdGlscy5tYXBMaW5lYXIoeVBvc2l0aW9uLCAtMC4xLCAwLjEsIGZsb2F0aW5nUmFuZ2VbMF0gPz8gLTAuMSwgZmxvYXRpbmdSYW5nZVsxXSA/PyAwLjEpO1xuICAgICAgICB0aGlzLmZsb2F0UmVmLm5hdGl2ZUVsZW1lbnQucG9zaXRpb24ueSA9IHlQb3NpdGlvbiAqIGZsb2F0SW50ZW5zaXR5O1xuICAgIH1cbn1cbiJdfQ==
@@ -1,109 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
- import { injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';
3
- import { Vector3 } from 'three';
4
- import { Sky } from 'three-stdlib';
5
- import * as i0 from "@angular/core";
6
- export function calcPosFromAngles(inclination, azimuth, vector = new Vector3()) {
7
- const theta = Math.PI * (inclination - 0.5);
8
- const phi = 2 * Math.PI * (azimuth - 0.5);
9
- vector.x = Math.cos(phi);
10
- vector.y = Math.sin(theta);
11
- vector.z = Math.sin(phi);
12
- return vector;
13
- }
14
- class NgtsSky extends NgtRxStore {
15
- constructor() {
16
- super(...arguments);
17
- this.skyRef = injectNgtRef();
18
- this.sky = new Sky();
19
- }
20
- set distance(distance) {
21
- this.set({ distance });
22
- }
23
- set sunPosition(sunPosition) {
24
- this.set({ sunPosition });
25
- }
26
- set inclination(inclination) {
27
- this.set({ inclination });
28
- }
29
- set azimuth(azimuth) {
30
- this.set({ azimuth });
31
- }
32
- set mieCoefficient(mieCoefficient) {
33
- this.set({ mieCoefficient });
34
- }
35
- set mieDirectionalG(mieDirectionalG) {
36
- this.set({ mieDirectionalG });
37
- }
38
- set rayleigh(rayleigh) {
39
- this.set({ rayleigh });
40
- }
41
- set turbidity(turbidity) {
42
- this.set({ turbidity });
43
- }
44
- initialize() {
45
- super.initialize();
46
- const inclination = 0.6;
47
- const azimuth = 0.1;
48
- this.set({
49
- inclination,
50
- azimuth,
51
- distance: 1000,
52
- mieCoefficient: 0.005,
53
- mieDirectionalG: 0.8,
54
- rayleigh: 0.5,
55
- turbidity: 10,
56
- sunPosition: calcPosFromAngles(inclination, azimuth),
57
- });
58
- this.connect('sunPosition', this.select(['inclination', 'azimuth'], ({ inclination, azimuth }) => calcPosFromAngles(inclination, azimuth)));
59
- this.connect('scale', this.select(['distance'], ({ distance }) => new Vector3().setScalar(distance)));
60
- }
61
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSky, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSky, isStandalone: true, selector: "ngts-sky", inputs: { skyRef: "skyRef", distance: "distance", sunPosition: "sunPosition", inclination: "inclination", azimuth: "azimuth", mieCoefficient: "mieCoefficient", mieDirectionalG: "mieDirectionalG", rayleigh: "rayleigh", turbidity: "turbidity" }, usesInheritance: true, ngImport: i0, template: `
63
- <ngt-primitive ngtCompound *args="[sky]" [ref]="skyRef" [scale]="get('scale')">
64
- <ngt-value [rawValue]="get('mieCoefficient')" attach="material.uniforms.mieCoefficient.value" />
65
- <ngt-value [rawValue]="get('mieDirectionalG')" attach="material.uniforms.mieDirectionalG.value" />
66
- <ngt-value [rawValue]="get('rayleigh')" attach="material.uniforms.rayleigh.value" />
67
- <ngt-value [rawValue]="get('sunPosition')" attach="material.uniforms.sunPosition.value" />
68
- <ngt-value [rawValue]="get('turbidity')" attach="material.uniforms.turbidity.value" />
69
- </ngt-primitive>
70
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
71
- }
72
- export { NgtsSky };
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSky, decorators: [{
74
- type: Component,
75
- args: [{
76
- selector: 'ngts-sky',
77
- standalone: true,
78
- template: `
79
- <ngt-primitive ngtCompound *args="[sky]" [ref]="skyRef" [scale]="get('scale')">
80
- <ngt-value [rawValue]="get('mieCoefficient')" attach="material.uniforms.mieCoefficient.value" />
81
- <ngt-value [rawValue]="get('mieDirectionalG')" attach="material.uniforms.mieDirectionalG.value" />
82
- <ngt-value [rawValue]="get('rayleigh')" attach="material.uniforms.rayleigh.value" />
83
- <ngt-value [rawValue]="get('sunPosition')" attach="material.uniforms.sunPosition.value" />
84
- <ngt-value [rawValue]="get('turbidity')" attach="material.uniforms.turbidity.value" />
85
- </ngt-primitive>
86
- `,
87
- imports: [NgtArgs],
88
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
89
- }]
90
- }], propDecorators: { skyRef: [{
91
- type: Input
92
- }], distance: [{
93
- type: Input
94
- }], sunPosition: [{
95
- type: Input
96
- }], inclination: [{
97
- type: Input
98
- }], azimuth: [{
99
- type: Input
100
- }], mieCoefficient: [{
101
- type: Input
102
- }], mieDirectionalG: [{
103
- type: Input
104
- }], rayleigh: [{
105
- type: Input
106
- }], turbidity: [{
107
- type: Input
108
- }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL3NreS9za3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFbkMsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsT0FBZSxFQUFFLFNBQWtCLElBQUksT0FBTyxFQUFFO0lBQ25HLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDNUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFMUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekIsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BZWEsT0FBUSxTQUFRLFVBQVU7SUFmdkM7O1FBZ0JhLFdBQU0sR0FBRyxZQUFZLEVBQU8sQ0FBQztRQWtDN0IsUUFBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7S0Ey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LFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RSZWYsIE5ndEFyZ3MsIE5ndFJ4U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBTa3kgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY1Bvc0Zyb21BbmdsZXMoaW5jbGluYXRpb246IG51bWJlciwgYXppbXV0aDogbnVtYmVyLCB2ZWN0b3I6IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpKSB7XG4gICAgY29uc3QgdGhldGEgPSBNYXRoLlBJICogKGluY2xpbmF0aW9uIC0gMC41KTtcbiAgICBjb25zdCBwaGkgPSAyICogTWF0aC5QSSAqIChhemltdXRoIC0gMC41KTtcblxuICAgIHZlY3Rvci54ID0gTWF0aC5jb3MocGhpKTtcbiAgICB2ZWN0b3IueSA9IE1hdGguc2luKHRoZXRhKTtcbiAgICB2ZWN0b3IueiA9IE1hdGguc2luKHBoaSk7XG5cbiAgICByZXR1cm4gdmVjdG9yO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc2t5JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtcHJpbWl0aXZlIG5ndENvbXBvdW5kICphcmdzPVwiW3NreV1cIiBbcmVmXT1cInNreVJlZlwiIFtzY2FsZV09XCJnZXQoJ3NjYWxlJylcIj5cbiAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnbWllQ29lZmZpY2llbnQnKVwiIGF0dGFjaD1cIm1hdGVyaWFsLnVuaWZvcm1zLm1pZUNvZWZmaWNpZW50LnZhbHVlXCIgLz5cbiAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdldCgnbWllRGlyZWN0aW9uYWxHJylcIiBhdHRhY2g9XCJtYXRlcmlhbC51bmlmb3Jtcy5taWVEaXJlY3Rpb25hbEcudmFsdWVcIiAvPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdyYXlsZWlnaCcpXCIgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMucmF5bGVpZ2gudmFsdWVcIiAvPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCdzdW5Qb3NpdGlvbicpXCIgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMuc3VuUG9zaXRpb24udmFsdWVcIiAvPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZ2V0KCd0dXJiaWRpdHknKVwiIGF0dGFjaD1cIm1hdGVyaWFsLnVuaWZvcm1zLnR1cmJpZGl0eS52YWx1ZVwiIC8+XG4gICAgICAgIDwvbmd0LXByaW1pdGl2ZT5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTa3kgZXh0ZW5kcyBOZ3RSeFN0b3JlIHtcbiAgICBASW5wdXQoKSBza3lSZWYgPSBpbmplY3ROZ3RSZWY8U2t5PigpO1xuXG4gICAgQElucHV0KCkgc2V0IGRpc3RhbmNlKGRpc3RhbmNlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXN0YW5jZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc3VuUG9zaXRpb24oc3VuUG9zaXRpb246IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPikge1xuICAgICAgICB0aGlzLnNldCh7IHN1blBvc2l0aW9uIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBpbmNsaW5hdGlvbihpbmNsaW5hdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW5jbGluYXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGF6aW11dGgoYXppbXV0aDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYXppbXV0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWllQ29lZmZpY2llbnQobWllQ29lZmZpY2llbnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1pZUNvZWZmaWNpZW50IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtaWVEaXJlY3Rpb25hbEcobWllRGlyZWN0aW9uYWxHOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtaWVEaXJlY3Rpb25hbEcgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHJheWxlaWdoKHJheWxlaWdoOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYXlsZWlnaCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdHVyYmlkaXR5KHR1cmJpZGl0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgdHVyYmlkaXR5IH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IHNreSA9IG5ldyBTa3koKTtcblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgY29uc3QgaW5jbGluYXRpb24gPSAwLjY7XG4gICAgICAgIGNvbnN0IGF6aW11dGggPSAwLjE7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIGluY2xpbmF0aW9uLFxuICAgICAgICAgICAgYXppbXV0aCxcbiAgICAgICAgICAgIGRpc3RhbmNlOiAxMDAwLFxuICAgICAgICAgICAgbWllQ29lZmZpY2llbnQ6IDAuMDA1LFxuICAgICAgICAgICAgbWllRGlyZWN0aW9uYWxHOiAwLjgsXG4gICAgICAgICAgICByYXlsZWlnaDogMC41LFxuICAgICAgICAgICAgdHVyYmlkaXR5OiAxMCxcbiAgICAgICAgICAgIHN1blBvc2l0aW9uOiBjYWxjUG9zRnJvbUFuZ2xlcyhpbmNsaW5hdGlvbiwgYXppbXV0aCksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc3VuUG9zaXRpb24nLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoWydpbmNsaW5hdGlvbicsICdhemltdXRoJ10sICh7IGluY2xpbmF0aW9uLCBhemltdXRoIH0pID0+XG4gICAgICAgICAgICAgICAgY2FsY1Bvc0Zyb21BbmdsZXMoaW5jbGluYXRpb24sIGF6aW11dGgpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgICAgICdzY2FsZScsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbJ2Rpc3RhbmNlJ10sICh7IGRpc3RhbmNlIH0pID0+IG5ldyBWZWN0b3IzKCkuc2V0U2NhbGFyKGRpc3RhbmNlKSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -1,210 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';
2
- import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRxStore, NgtStore } from 'angular-three';
3
- import { shaderMaterial } from 'angular-three-soba/shaders';
4
- import { map, startWith, withLatestFrom } from 'rxjs';
5
- import { BufferAttribute, BufferGeometry, Color, MathUtils, Points, Vector2, Vector3, Vector4 } from 'three';
6
- import * as i0 from "@angular/core";
7
- const SparklesMaterial = shaderMaterial({ time: 0, pixelRatio: 1 },
8
- // language=GLSL
9
- `
10
- uniform float pixelRatio;
11
- uniform float time;
12
-
13
- attribute float size;
14
- attribute float speed;
15
- attribute float opacity;
16
- attribute vec3 noise;
17
- attribute vec3 color;
18
-
19
- varying vec3 vColor;
20
- varying float vOpacity;
21
-
22
- void main() {
23
- vec4 modelPosition = modelMatrix * vec4(position, 1.0);
24
-
25
- modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
26
- modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
27
- modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
28
-
29
- vec4 viewPosition = viewMatrix * modelPosition;
30
- vec4 projectionPostion = projectionMatrix * viewPosition;
31
-
32
- gl_Position = projectionPostion;
33
- gl_PointSize = size * 25. * pixelRatio;
34
- gl_PointSize *= (1.0 / - viewPosition.z);
35
-
36
- vColor = color;
37
- vOpacity = opacity;
38
- }
39
- `,
40
- // language=GLSL
41
- `
42
- varying vec3 vColor;
43
- varying float vOpacity;
44
-
45
- void main() {
46
- float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
47
- float strength = 0.05 / distanceToCenter - 0.1;
48
-
49
- gl_FragColor = vec4(vColor, strength * vOpacity);
50
- }
51
- `);
52
- extend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });
53
- const isFloat32Array = (def) => def && def.constructor === Float32Array;
54
- const expandColor = (v) => [v.r, v.g, v.b];
55
- const isVector = (v) => v instanceof Vector2 || v instanceof Vector3 || v instanceof Vector4;
56
- const normalizeVector = (v) => {
57
- if (Array.isArray(v))
58
- return v;
59
- else if (isVector(v))
60
- return v.toArray();
61
- return [v, v, v];
62
- };
63
- function usePropAsIsOrAsAttribute(count, prop, setDefault) {
64
- if (prop !== undefined) {
65
- if (isFloat32Array(prop)) {
66
- return prop;
67
- }
68
- else {
69
- if (prop instanceof Color) {
70
- const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();
71
- return Float32Array.from(a);
72
- }
73
- else if (isVector(prop) || Array.isArray(prop)) {
74
- const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();
75
- return Float32Array.from(a);
76
- }
77
- return Float32Array.from({ length: count }, () => prop);
78
- }
79
- }
80
- return Float32Array.from({ length: count }, setDefault);
81
- }
82
- class NgtsSparkles extends NgtRxStore {
83
- /** Number of particles (default: 100) */
84
- set count(count) {
85
- this.set({ count });
86
- }
87
- /** Speed of particles (default: 1) */
88
- set speed(speed) {
89
- this.set({ speed });
90
- }
91
- /** Opacity of particles (default: 1) */
92
- set opacity(opacity) {
93
- this.set({ opacity });
94
- }
95
- /** Color of particles (default: 100) */
96
- set color(color) {
97
- this.set({ color });
98
- }
99
- /** Size of particles (default: randomized between 0 and 1) */
100
- set size(size) {
101
- this.set({ size });
102
- }
103
- /** The space the particles occupy (default: 1) */
104
- set scale(scale) {
105
- this.set({ scale });
106
- }
107
- /** Movement factor (default: 1) */
108
- set noise(noise) {
109
- this.set({ noise });
110
- }
111
- initialize() {
112
- super.initialize();
113
- this.set({
114
- noise: 1,
115
- count: 100,
116
- speed: 1,
117
- opacity: 1,
118
- scale: 1,
119
- });
120
- this.connect('positions', this.select(['count', 'scale'], ({ count, scale }) => Float32Array.from(Array.from({ length: count }, () => normalizeVector(scale).map(MathUtils.randFloatSpread)).flat())));
121
- this.connect('sizes', this.getAttribute$('size', { setDefault: Math.random }));
122
- this.connect('opacities', this.getAttribute$('opacity'));
123
- this.connect('speeds', this.getAttribute$('speed'));
124
- this.connect('noises', this.getAttribute$('noise', {
125
- countValue: (_, count) => count * 3,
126
- }));
127
- this.connect('colors', this.getAttribute$('color', {
128
- keyValue: (color) => (!isFloat32Array(color) ? new Color(color) : color),
129
- countValue: (color, count) => (color === undefined ? count * 3 : count),
130
- setDefault: () => 1,
131
- }));
132
- }
133
- constructor() {
134
- super();
135
- this.store = inject(NgtStore);
136
- this.dpr = this.store.get('viewport', 'dpr');
137
- this.materialRef = injectNgtRef();
138
- this.pointsRef = injectNgtRef();
139
- injectBeforeRender(this.onBeforeRender.bind(this));
140
- }
141
- onBeforeRender({ clock }) {
142
- if (!this.materialRef.nativeElement)
143
- return;
144
- this.materialRef.nativeElement.uniforms['time'].value = clock.elapsedTime;
145
- }
146
- getAttribute$(key, options) {
147
- options ??= {};
148
- if (!options.keyValue) {
149
- options.keyValue = (value) => value;
150
- }
151
- if (!options.countValue) {
152
- options.countValue = (_, count) => count;
153
- }
154
- return this.select(key).pipe(startWith(this.get(key) || undefined), withLatestFrom(this.select('count')), map(([value, count]) => usePropAsIsOrAsAttribute(options.countValue(value, count), options.keyValue(value, count), options?.setDefault)));
155
- }
156
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSparkles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
157
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSparkles, isStandalone: true, selector: "ngts-sparkles", inputs: { pointsRef: "pointsRef", count: "count", speed: "speed", opacity: "opacity", color: "color", size: "size", scale: "scale", noise: "noise" }, usesInheritance: true, ngImport: i0, template: `
158
- <ngt-points ngtCompount [ref]="pointsRef">
159
- <ngt-buffer-geometry>
160
- <ngt-buffer-attribute *args="[get('positions'), 3]" attach="attributes.position" />
161
- <ngt-buffer-attribute *args="[get('sizes'), 1]" attach="attributes.size" />
162
- <ngt-buffer-attribute *args="[get('opacities'), 1]" attach="attributes.opacity" />
163
- <ngt-buffer-attribute *args="[get('speeds'), 1]" attach="attributes.speed" />
164
- <ngt-buffer-attribute *args="[get('colors'), 3]" attach="attributes.color" />
165
- <ngt-buffer-attribute *args="[get('noises'), 3]" attach="attributes.noise" />
166
- </ngt-buffer-geometry>
167
- <ngt-sparkles-material [ref]="materialRef" [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr" />
168
- </ngt-points>
169
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
170
- }
171
- export { NgtsSparkles };
172
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSparkles, decorators: [{
173
- type: Component,
174
- args: [{
175
- selector: 'ngts-sparkles',
176
- standalone: true,
177
- template: `
178
- <ngt-points ngtCompount [ref]="pointsRef">
179
- <ngt-buffer-geometry>
180
- <ngt-buffer-attribute *args="[get('positions'), 3]" attach="attributes.position" />
181
- <ngt-buffer-attribute *args="[get('sizes'), 1]" attach="attributes.size" />
182
- <ngt-buffer-attribute *args="[get('opacities'), 1]" attach="attributes.opacity" />
183
- <ngt-buffer-attribute *args="[get('speeds'), 1]" attach="attributes.speed" />
184
- <ngt-buffer-attribute *args="[get('colors'), 3]" attach="attributes.color" />
185
- <ngt-buffer-attribute *args="[get('noises'), 3]" attach="attributes.noise" />
186
- </ngt-buffer-geometry>
187
- <ngt-sparkles-material [ref]="materialRef" [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr" />
188
- </ngt-points>
189
- `,
190
- imports: [NgtArgs],
191
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
192
- }]
193
- }], ctorParameters: function () { return []; }, propDecorators: { pointsRef: [{
194
- type: Input
195
- }], count: [{
196
- type: Input
197
- }], speed: [{
198
- type: Input
199
- }], opacity: [{
200
- type: Input
201
- }], color: [{
202
- type: Input
203
- }], size: [{
204
- type: Input
205
- }], scale: [{
206
- type: Input
207
- }], noise: [{
208
- type: Input
209
- }] } });
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmtsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3BhcmtsZXMvc3BhcmtsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBa0IsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUU3RyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FDbkMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7QUFDMUIsZ0JBQWdCO0FBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QkQ7QUFDQyxnQkFBZ0I7QUFDaEI7Ozs7Ozs7Ozs7R0FVRCxDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFdEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFRLEVBQXVCLEVBQUUsQ0FBQyxHQUFHLElBQUssR0FBb0IsQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDO0FBRXBILE1BQU0sV0FB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QUFZO2tCQW5CeEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7O0tBWVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBTVksU0FBUztzQkFBakIsS0FBSztnQkFHTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS08sT0FBTztzQkFBbkIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLElBQUk7c0JBQWhCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0UmVmLCBOZ3RBcmdzLCBOZ3RSZW5kZXJTdGF0ZSwgTmd0UnhTdG9yZSwgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IHNoYWRlck1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGgsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5LCBDb2xvciwgTWF0aFV0aWxzLCBQb2ludHMsIFZlY3RvcjIsIFZlY3RvcjMsIFZlY3RvcjQgfSBmcm9tICd0aHJlZSc7XG5cbmNvbnN0IFNwYXJrbGVzTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcbiAgICB7IHRpbWU6IDAsIHBpeGVsUmF0aW86IDEgfSxcbiAgICAvLyBsYW5ndWFnZT1HTFNMXG4gICAgYFxudW5pZm9ybSBmbG9hdCBwaXhlbFJhdGlvO1xudW5pZm9ybSBmbG9hdCB0aW1lO1xuXG5hdHRyaWJ1dGUgZmxvYXQgc2l6ZTtcbmF0dHJpYnV0ZSBmbG9hdCBzcGVlZDtcbmF0dHJpYnV0ZSBmbG9hdCBvcGFjaXR5O1xuYXR0cmlidXRlIHZlYzMgbm9pc2U7XG5hdHRyaWJ1dGUgdmVjMyBjb2xvcjtcblxudmFyeWluZyB2ZWMzIHZDb2xvcjtcbnZhcnlpbmcgZmxvYXQgdk9wYWNpdHk7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjNCBtb2RlbFBvc2l0aW9uID0gbW9kZWxNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuXG4gIG1vZGVsUG9zaXRpb24ueSArPSBzaW4odGltZSAqIHNwZWVkICsgbW9kZWxQb3NpdGlvbi54ICogbm9pc2UueCAqIDEwMC4wKSAqIDAuMjtcbiAgbW9kZWxQb3NpdGlvbi56ICs9IGNvcyh0aW1lICogc3BlZWQgKyBtb2RlbFBvc2l0aW9uLnggKiBub2lzZS55ICogMTAwLjApICogMC4yO1xuICBtb2RlbFBvc2l0aW9uLnggKz0gY29zKHRpbWUgKiBzcGVlZCArIG1vZGVsUG9zaXRpb24ueCAqIG5vaXNlLnogKiAxMDAuMCkgKiAwLjI7XG5cbiAgdmVjNCB2aWV3UG9zaXRpb24gPSB2aWV3TWF0cml4ICogbW9kZWxQb3NpdGlvbjtcbiAgdmVjNCBwcm9qZWN0aW9uUG9zdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2aWV3UG9zaXRpb247XG5cbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uUG9zdGlvbjtcbiAgZ2xfUG9pbnRTaXplID0gc2l6ZSAqIDI1LiAqIHBpeGVsUmF0aW87XG4gIGdsX1BvaW50U2l6ZSAqPSAoMS4wIC8gLSB2aWV3UG9zaXRpb24ueik7XG5cbiAgdkNvbG9yID0gY29sb3I7XG4gIHZPcGFjaXR5ID0gb3BhY2l0eTtcbn1cbiAgYCxcbiAgICAvLyBsYW5ndWFnZT1HTFNMXG4gICAgYFxudmFyeWluZyB2ZWMzIHZDb2xvcjtcbnZhcnlpbmcgZmxvYXQgdk9wYWNpdHk7XG5cbnZvaWQgbWFpbigpIHtcbiAgZmxvYXQgZGlzdGFuY2VUb0NlbnRlciA9IGRpc3RhbmNlKGdsX1BvaW50Q29vcmQsIHZlYzIoMC41KSk7XG4gIGZsb2F0IHN0cmVuZ3RoID0gMC4wNSAvIGRpc3RhbmNlVG9DZW50ZXIgLSAwLjE7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2Q29sb3IsIHN0cmVuZ3RoICogdk9wYWNpdHkpO1xufVxuICBgXG4pO1xuXG5leHRlbmQoeyBTcGFya2xlc01hdGVyaWFsLCBQb2ludHMsIEJ1ZmZlckdlb21ldHJ5LCBCdWZmZXJBdHRyaWJ1dGUgfSk7XG5cbmNvbnN0IGlzRmxvYXQzMkFycmF5ID0gKGRlZjogYW55KTogZGVmIGlzIEZsb2F0MzJBcnJheSA9PiBkZWYgJiYgKGRlZiBhcyBGbG9hdDMyQXJyYXkpLmNvbnN0cnVjdG9yID09PSBGbG9hdDMyQXJyYXk7XG5cbmNvbnN0IGV4cGFuZENvbG9yID0gKHY6IFRIUkVFLkNvbG9yKSA9PiBbdi5yLCB2LmcsIHYuYl07XG5jb25zdCBpc1ZlY3RvciA9ICh2OiBhbnkpOiB2IGlzIFRIUkVFLlZlY3RvcjIgfCBUSFJFRS5WZWN0b3IzIHwgVEhSRUUuVmVjdG9yNCA9PlxuICAgIHYgaW5zdGFuY2VvZiBWZWN0b3IyIHx8IHYgaW5zdGFuY2VvZiBWZWN0b3IzIHx8IHYgaW5zdGFuY2VvZiBWZWN0b3I0O1xuXG5jb25zdCBub3JtYWxpemVWZWN0b3IgPSAodjogYW55KTogbnVtYmVyW10gPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSByZXR1cm4gdjtcbiAgICBlbHNlIGlmIChpc1ZlY3Rvcih2KSkgcmV0dXJuIHYudG9BcnJheSgpO1xuICAgIHJldHVybiBbdiwgdiwgdl0gYXMgbnVtYmVyW107XG59O1xuXG5mdW5jdGlvbiB1c2VQcm9wQXNJc09yQXNBdHRyaWJ1dGU8VCA9IGFueT4oY291bnQ6IG51bWJlciwgcHJvcD86IFQgfCBGbG9hdDMyQXJyYXksIHNldERlZmF1bHQ/OiAodjogVCkgPT4gbnVtYmVyKSB7XG4gICAgaWYgKHByb3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoaXNGbG9hdDMyQXJyYXkocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wIGFzIEZsb2F0MzJBcnJheTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwcm9wIGluc3RhbmNlb2YgQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgKiAzIH0sICgpID0+IGV4cGFuZENvbG9yKHByb3ApKS5mbGF0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKGEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ZlY3Rvcihwcm9wKSB8fCBBcnJheS5pc0FycmF5KHByb3ApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50ICogMyB9LCAoKSA9PiBub3JtYWxpemVWZWN0b3IocHJvcCkpLmZsYXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sICgpID0+IHByb3AgYXMgdW5rbm93biBhcyBudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgfSwgc2V0RGVmYXVsdCEpO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc3BhcmtsZXMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1wb2ludHMgbmd0Q29tcG91bnQgW3JlZl09XCJwb2ludHNSZWZcIj5cbiAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWdlb21ldHJ5PlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ3Bvc2l0aW9ucycpLCAzXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMucG9zaXRpb25cIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ3NpemVzJyksIDFdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5zaXplXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgKmFyZ3M9XCJbZ2V0KCdvcGFjaXRpZXMnKSwgMV1cIiBhdHRhY2g9XCJhdHRyaWJ1dGVzLm9wYWNpdHlcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ3NwZWVkcycpLCAxXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMuc3BlZWRcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ2NvbG9ycycpLCAzXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMuY29sb3JcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltnZXQoJ25vaXNlcycpLCAzXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMubm9pc2VcIiAvPlxuICAgICAgICAgICAgPC9uZ3QtYnVmZmVyLWdlb21ldHJ5PlxuICAgICAgICAgICAgPG5ndC1zcGFya2xlcy1tYXRlcmlhbCBbcmVmXT1cIm1hdGVyaWFsUmVmXCIgW3RyYW5zcGFyZW50XT1cInRydWVcIiBbZGVwdGhXcml0ZV09XCJmYWxzZVwiIFtwaXhlbFJhdGlvXT1cImRwclwiIC8+XG4gICAgICAgIDwvbmd0LXBvaW50cz5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcGFya2xlcyBleHRlbmRzIE5ndFJ4U3RvcmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICAgIHJlYWRvbmx5IGRwciA9IHRoaXMuc3RvcmUuZ2V0KCd2aWV3cG9ydCcsICdkcHInKTtcbiAgICByZWFkb25seSBtYXRlcmlhbFJlZiA9IGluamVjdE5ndFJlZjx0eXBlb2YgU3BhcmtsZXNNYXRlcmlhbC5wcm90b3R5cGU+KCk7XG5cbiAgICBASW5wdXQoKSBwb2ludHNSZWYgPSBpbmplY3ROZ3RSZWY8UG9pbnRzPigpO1xuXG4gICAgLyoqIE51bWJlciBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEwMCkgKi9cbiAgICBASW5wdXQoKSBzZXQgY291bnQoY291bnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGNvdW50IH0pO1xuICAgIH1cblxuICAgIC8qKiBTcGVlZCBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG4gICAgQElucHV0KCkgc2V0IHNwZWVkKHNwZWVkOiBudW1iZXIgfCBGbG9hdDMyQXJyYXkpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzcGVlZCB9KTtcbiAgICB9XG5cbiAgICAvKiogT3BhY2l0eSBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG4gICAgQElucHV0KCkgc2V0IG9wYWNpdHkob3BhY2l0eTogbnVtYmVyIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgb3BhY2l0eSB9KTtcbiAgICB9XG5cbiAgICAvKiogQ29sb3Igb2YgcGFydGljbGVzIChkZWZhdWx0OiAxMDApICovXG4gICAgQElucHV0KCkgc2V0IGNvbG9yKGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY29sb3IgfSk7XG4gICAgfVxuXG4gICAgLyoqIFNpemUgb2YgcGFydGljbGVzIChkZWZhdWx0OiByYW5kb21pemVkIGJldHdlZW4gMCBhbmQgMSkgKi9cbiAgICBASW5wdXQoKSBzZXQgc2l6ZShzaXplOiBudW1iZXIgfCBGbG9hdDMyQXJyYXkpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzaXplIH0pO1xuICAgIH1cblxuICAgIC8qKiBUaGUgc3BhY2UgdGhlIHBhcnRpY2xlcyBvY2N1cHkgKGRlZmF1bHQ6IDEpICovXG4gICAgQElucHV0KCkgc2V0IHNjYWxlKHNjYWxlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBUSFJFRS5WZWN0b3IzKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2NhbGUgfSk7XG4gICAgfVxuXG4gICAgLyoqIE1vdmVtZW50IGZhY3RvciAoZGVmYXVsdDogMSkgKi9cbiAgICBASW5wdXQoKSBzZXQgbm9pc2Uobm9pc2U6IG51bWJlciB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFRIUkVFLlZlY3RvcjMgfCBGbG9hdDMyQXJyYXkpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBub2lzZSB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCkge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIG5vaXNlOiAxLFxuICAgICAgICAgICAgY291bnQ6IDEwMCxcbiAgICAgICAgICAgIHNwZWVkOiAxLFxuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIHNjYWxlOiAxLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ3Bvc2l0aW9ucycsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbJ2NvdW50JywgJ3NjYWxlJ10sICh7IGNvdW50LCBzY2FsZSB9KSA9PlxuICAgICAgICAgICAgICAgIEZsb2F0MzJBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoKSA9PiBub3JtYWxpemVWZWN0b3Ioc2NhbGUpLm1hcChNYXRoVXRpbHMucmFuZEZsb2F0U3ByZWFkKSkuZmxhdCgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdCgnc2l6ZXMnLCB0aGlzLmdldEF0dHJpYnV0ZSQ8bnVtYmVyPignc2l6ZScsIHsgc2V0RGVmYXVsdDogTWF0aC5yYW5kb20gfSkpO1xuICAgICAgICB0aGlzLmNvbm5lY3QoJ29wYWNpdGllcycsIHRoaXMuZ2V0QXR0cmlidXRlJDxudW1iZXI+KCdvcGFjaXR5JykpO1xuICAgICAgICB0aGlzLmNvbm5lY3QoJ3NwZWVkcycsIHRoaXMuZ2V0QXR0cmlidXRlJDxudW1iZXI+KCdzcGVlZCcpKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ25vaXNlcycsXG4gICAgICAgICAgICB0aGlzLmdldEF0dHJpYnV0ZSQ8bnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgVEhSRUUuVmVjdG9yMyB8IEZsb2F0MzJBcnJheT4oJ25vaXNlJywge1xuICAgICAgICAgICAgICAgIGNvdW50VmFsdWU6IChfLCBjb3VudCkgPT4gY291bnQgKiAzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ2NvbG9ycycsXG4gICAgICAgICAgICB0aGlzLmdldEF0dHJpYnV0ZSQ8VEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbj4oJ2NvbG9yJywge1xuICAgICAgICAgICAgICAgIGtleVZhbHVlOiAoY29sb3IpID0+ICghaXNGbG9hdDMyQXJyYXkoY29sb3IpID8gbmV3IENvbG9yKGNvbG9yKSA6IGNvbG9yKSxcbiAgICAgICAgICAgICAgICBjb3VudFZhbHVlOiAoY29sb3IsIGNvdW50KSA9PiAoY29sb3IgPT09IHVuZGVmaW5lZCA/IGNvdW50ICogMyA6IGNvdW50KSxcbiAgICAgICAgICAgICAgICBzZXREZWZhdWx0OiAoKSA9PiAxLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMub25CZWZvcmVSZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJlZm9yZVJlbmRlcih7IGNsb2NrIH06IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIGlmICghdGhpcy5tYXRlcmlhbFJlZi5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgICAgIHRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudC51bmlmb3Jtc1sndGltZSddLnZhbHVlID0gY2xvY2suZWxhcHNlZFRpbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBdHRyaWJ1dGUkPFRWYWx1ZT4oXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICBvcHRpb25zPzoge1xuICAgICAgICAgICAga2V5VmFsdWU/OiAodmFsdWU6IFRWYWx1ZSwgY291bnQ6IG51bWJlcikgPT4gVFZhbHVlO1xuICAgICAgICAgICAgY291bnRWYWx1ZT86ICh2YWx1ZTogVFZhbHVlLCBjb3VudDogbnVtYmVyKSA9PiBudW1iZXI7XG4gICAgICAgICAgICBzZXREZWZhdWx0PzogKHZhbHVlOiBUVmFsdWUpID0+IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IE9ic2VydmFibGU8RmxvYXQzMkFycmF5PiB7XG4gICAgICAgIG9wdGlvbnMgPz89IHt9O1xuICAgICAgICBpZiAoIW9wdGlvbnMua2V5VmFsdWUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMua2V5VmFsdWUgPSAodmFsdWUpID0+IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmNvdW50VmFsdWUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuY291bnRWYWx1ZSA9IChfLCBjb3VudCkgPT4gY291bnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0KGtleSkucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldChrZXkpIHx8IHVuZGVmaW5lZCksXG4gICAgICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnNlbGVjdCgnY291bnQnKSksXG4gICAgICAgICAgICBtYXAoKFt2YWx1ZSwgY291bnRdKSA9PlxuICAgICAgICAgICAgICAgIHVzZVByb3BBc0lzT3JBc0F0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyEuY291bnRWYWx1ZSEodmFsdWUsIGNvdW50KSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyEua2V5VmFsdWUhKHZhbHVlLCBjb3VudCksXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/LnNldERlZmF1bHRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -1,42 +0,0 @@
1
- import { injectBeforeRender } from 'angular-three';
2
- import { combineLatest, startWith } from 'rxjs';
3
- import * as THREE from 'three';
4
- const isSpotLight = (child) => {
5
- return child?.isSpotLight;
6
- };
7
- export function injectShadowMeshCommon(spotLight, mesh, width, height, distance) {
8
- const pos = new THREE.Vector3();
9
- const dir = new THREE.Vector3();
10
- const commonEffect = (instance) => {
11
- instance.hold(combineLatest([
12
- spotLight.$,
13
- instance.select('width').pipe(startWith(width)),
14
- instance.select('height').pipe(startWith(height)),
15
- ]), ([light, width, height]) => {
16
- if (isSpotLight(light)) {
17
- console.log('[NGTS] SpotLight instance -->', light);
18
- light.shadow.mapSize.set(width, height);
19
- light.shadow.needsUpdate = true;
20
- }
21
- else {
22
- throw new Error('<ngts-spot-light-shadow> must be a child of a <ngts-spot-light>');
23
- }
24
- });
25
- };
26
- injectBeforeRender(() => {
27
- if (!spotLight.nativeElement)
28
- return;
29
- const A = spotLight.nativeElement.position;
30
- const B = spotLight.nativeElement.target.position;
31
- dir.copy(B).sub(A);
32
- const len = dir.length();
33
- dir.normalize().multiplyScalar(len * distance);
34
- pos.copy(A).add(dir);
35
- if (mesh.nativeElement) {
36
- mesh.nativeElement.position.copy(pos);
37
- mesh.nativeElement.lookAt(spotLight.nativeElement.target.position);
38
- }
39
- });
40
- return commonEffect;
41
- }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL3Nwb3QtbGlnaHQvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBOEIsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUE0QixFQUE0QixFQUFFO0lBQzNFLE9BQVEsS0FBeUIsRUFBRSxXQUFXLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxTQUEwQyxFQUMxQyxJQUFnQyxFQUNoQyxLQUFhLEVBQ2IsTUFBYyxFQUNkLFFBQWdCO0lBRWhCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRWhDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBb0IsRUFBRSxFQUFFO1FBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQ1QsYUFBYSxDQUFDO1lBQ1YsU0FBUyxDQUFDLENBQUM7WUFDWCxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BELENBQUMsRUFDRixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO2FBQ3RGO1FBQ0wsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDLENBQUM7SUFFRixrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUVyQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUMzQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFFbEQsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEU7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEluamVjdGVkUmVmLCBOZ3RSeFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuY29uc3QgaXNTcG90TGlnaHQgPSAoY2hpbGQ6IFRIUkVFLk9iamVjdDNEIHwgbnVsbCk6IGNoaWxkIGlzIFRIUkVFLlNwb3RMaWdodCA9PiB7XG4gICAgcmV0dXJuIChjaGlsZCBhcyBUSFJFRS5TcG90TGlnaHQpPy5pc1Nwb3RMaWdodDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTaGFkb3dNZXNoQ29tbW9uKFxuICAgIHNwb3RMaWdodDogTmd0SW5qZWN0ZWRSZWY8VEhSRUUuU3BvdExpZ2h0PixcbiAgICBtZXNoOiBOZ3RJbmplY3RlZFJlZjxUSFJFRS5NZXNoPixcbiAgICB3aWR0aDogbnVtYmVyLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIGRpc3RhbmNlOiBudW1iZXJcbikge1xuICAgIGNvbnN0IHBvcyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgY29uc3QgZGlyID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuICAgIGNvbnN0IGNvbW1vbkVmZmVjdCA9IChpbnN0YW5jZTogTmd0UnhTdG9yZSkgPT4ge1xuICAgICAgICBpbnN0YW5jZS5ob2xkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgc3BvdExpZ2h0LiQsXG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0KCd3aWR0aCcpLnBpcGUoc3RhcnRXaXRoKHdpZHRoKSksXG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0KCdoZWlnaHQnKS5waXBlKHN0YXJ0V2l0aChoZWlnaHQpKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKFtsaWdodCwgd2lkdGgsIGhlaWdodF0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNTcG90TGlnaHQobGlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbTkdUU10gU3BvdExpZ2h0IGluc3RhbmNlIC0tPicsIGxpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgbGlnaHQuc2hhZG93Lm1hcFNpemUuc2V0KHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBsaWdodC5zaGFkb3cubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignPG5ndHMtc3BvdC1saWdodC1zaGFkb3c+IG11c3QgYmUgYSBjaGlsZCBvZiBhIDxuZ3RzLXNwb3QtbGlnaHQ+Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuICAgICAgICBpZiAoIXNwb3RMaWdodC5uYXRpdmVFbGVtZW50KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgQSA9IHNwb3RMaWdodC5uYXRpdmVFbGVtZW50LnBvc2l0aW9uO1xuICAgICAgICBjb25zdCBCID0gc3BvdExpZ2h0Lm5hdGl2ZUVsZW1lbnQudGFyZ2V0LnBvc2l0aW9uO1xuXG4gICAgICAgIGRpci5jb3B5KEIpLnN1YihBKTtcbiAgICAgICAgY29uc3QgbGVuID0gZGlyLmxlbmd0aCgpO1xuICAgICAgICBkaXIubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIobGVuICogZGlzdGFuY2UpO1xuICAgICAgICBwb3MuY29weShBKS5hZGQoZGlyKTtcblxuICAgICAgICBpZiAobWVzaC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBtZXNoLm5hdGl2ZUVsZW1lbnQucG9zaXRpb24uY29weShwb3MpO1xuICAgICAgICAgICAgbWVzaC5uYXRpdmVFbGVtZW50Lmxvb2tBdChzcG90TGlnaHQubmF0aXZlRWxlbWVudC50YXJnZXQucG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tbW9uRWZmZWN0O1xufVxuIl19