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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/README.md +62 -4
  2. package/abstractions/README.md +278 -2
  3. package/abstractions/index.d.ts +11 -6
  4. package/abstractions/lib/catmull-rom-line.d.ts +648 -0
  5. package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
  6. package/abstractions/lib/edges.d.ts +850 -0
  7. package/abstractions/lib/gradient-texture.d.ts +24 -0
  8. package/abstractions/lib/grid.d.ts +339 -0
  9. package/abstractions/lib/helper.d.ts +25 -0
  10. package/abstractions/lib/line.d.ts +41 -0
  11. package/abstractions/lib/prism-geometry.d.ts +30 -0
  12. package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
  13. package/abstractions/lib/text-3d.d.ts +338 -0
  14. package/abstractions/lib/text.d.ts +55 -0
  15. package/cameras/README.md +91 -2
  16. package/cameras/index.d.ts +4 -4
  17. package/cameras/lib/camera-content.d.ts +10 -0
  18. package/cameras/lib/cube-camera.d.ts +38 -0
  19. package/cameras/lib/orthographic-camera.d.ts +40 -0
  20. package/cameras/lib/perspective-camera.d.ts +36 -0
  21. package/controls/README.md +95 -2
  22. package/controls/index.d.ts +2 -1
  23. package/controls/lib/camera-controls.d.ts +31 -0
  24. package/controls/lib/orbit-controls.d.ts +38 -0
  25. package/esm2022/abstractions/index.mjs +12 -7
  26. package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
  27. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
  28. package/esm2022/abstractions/lib/edges.mjs +70 -0
  29. package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
  30. package/esm2022/abstractions/lib/grid.mjs +103 -0
  31. package/esm2022/abstractions/lib/helper.mjs +80 -0
  32. package/esm2022/abstractions/lib/line.mjs +123 -0
  33. package/esm2022/abstractions/lib/prism-geometry.mjs +55 -0
  34. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
  35. package/esm2022/abstractions/lib/text-3d.mjs +98 -0
  36. package/esm2022/abstractions/lib/text.mjs +92 -0
  37. package/esm2022/cameras/index.mjs +5 -5
  38. package/esm2022/cameras/lib/camera-content.mjs +14 -0
  39. package/esm2022/cameras/lib/cube-camera.mjs +111 -0
  40. package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
  41. package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
  42. package/esm2022/controls/index.mjs +3 -2
  43. package/esm2022/controls/lib/camera-controls.mjs +127 -0
  44. package/esm2022/controls/lib/orbit-controls.mjs +126 -0
  45. package/esm2022/loaders/index.mjs +6 -5
  46. package/esm2022/loaders/lib/font-loader.mjs +49 -0
  47. package/esm2022/loaders/lib/gltf-loader.mjs +33 -0
  48. package/esm2022/loaders/lib/loader.mjs +109 -0
  49. package/esm2022/loaders/lib/progress.mjs +51 -0
  50. package/esm2022/loaders/lib/texture-loader.mjs +32 -0
  51. package/esm2022/materials/index.mjs +7 -7
  52. package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
  53. package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
  54. package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
  55. package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
  56. package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
  57. package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
  58. package/esm2022/misc/index.mjs +10 -14
  59. package/esm2022/misc/lib/animations.mjs +74 -0
  60. package/esm2022/misc/lib/bake-shadows.mjs +26 -0
  61. package/esm2022/misc/lib/computed-attribute.mjs +56 -0
  62. package/esm2022/misc/lib/constants.mjs +5 -0
  63. package/esm2022/misc/lib/decal.mjs +135 -0
  64. package/esm2022/misc/lib/deprecated.mjs +15 -0
  65. package/esm2022/misc/lib/depth-buffer.mjs +39 -0
  66. package/esm2022/misc/lib/fbo.mjs +89 -0
  67. package/esm2022/misc/lib/sampler.mjs +121 -0
  68. package/esm2022/shaders/index.mjs +3 -18
  69. package/esm2022/shaders/lib/grid-material.mjs +81 -0
  70. package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
  71. package/esm2022/staging/index.mjs +19 -22
  72. package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
  73. package/esm2022/staging/lib/backdrop.mjs +73 -0
  74. package/esm2022/staging/lib/bb-anchor.mjs +58 -0
  75. package/esm2022/staging/lib/bounds.mjs +286 -0
  76. package/esm2022/staging/lib/camera-shake.mjs +69 -0
  77. package/esm2022/staging/lib/caustics.mjs +188 -0
  78. package/esm2022/staging/lib/center.mjs +113 -0
  79. package/esm2022/staging/lib/contact-shadows.mjs +201 -0
  80. package/esm2022/staging/lib/environment.mjs +465 -0
  81. package/esm2022/staging/lib/float.mjs +60 -0
  82. package/esm2022/staging/lib/lightformer.mjs +107 -0
  83. package/esm2022/staging/lib/matcap-texture.mjs +81 -0
  84. package/esm2022/staging/lib/normal-texture.mjs +85 -0
  85. package/esm2022/staging/lib/randomized-lights.mjs +104 -0
  86. package/esm2022/staging/lib/render-texture.mjs +213 -0
  87. package/esm2022/staging/lib/sky.mjs +86 -0
  88. package/esm2022/staging/lib/spot-light.mjs +450 -0
  89. package/esm2022/staging/lib/stage.mjs +236 -0
  90. package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
  91. package/esm2022/vanilla-exports/index.mjs +3 -0
  92. package/fesm2022/angular-three-soba-abstractions.mjs +739 -718
  93. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-cameras.mjs +260 -307
  95. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-controls.mjs +174 -110
  97. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  98. package/fesm2022/angular-three-soba-loaders.mjs +151 -129
  99. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  100. package/fesm2022/angular-three-soba-materials.mjs +511 -764
  101. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  102. package/fesm2022/angular-three-soba-misc.mjs +405 -2149
  103. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  104. package/fesm2022/angular-three-soba-shaders.mjs +33 -1373
  105. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  106. package/fesm2022/angular-three-soba-staging.mjs +2329 -3538
  107. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  108. package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
  109. package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
  110. package/loaders/README.md +130 -2
  111. package/loaders/index.d.ts +5 -4
  112. package/loaders/lib/font-loader.d.ts +27 -0
  113. package/loaders/lib/gltf-loader.d.ts +21 -0
  114. package/loaders/lib/loader.d.ts +29 -0
  115. package/loaders/lib/progress.d.ts +9 -0
  116. package/loaders/lib/texture-loader.d.ts +13 -0
  117. package/materials/README.md +160 -2
  118. package/materials/index.d.ts +6 -6
  119. package/materials/lib/custom-shader-material.d.ts +19 -0
  120. package/materials/lib/mesh-distort-material.d.ts +18 -0
  121. package/materials/lib/mesh-reflector-material.d.ts +50 -0
  122. package/materials/lib/mesh-refraction-material.d.ts +42 -0
  123. package/materials/lib/mesh-transmission-material.d.ts +77 -0
  124. package/materials/lib/mesh-wobble-material.d.ts +15 -0
  125. package/metadata.json +1 -1
  126. package/misc/README.md +217 -2
  127. package/misc/index.d.ts +9 -13
  128. package/misc/lib/animations.d.ts +14 -0
  129. package/misc/lib/computed-attribute.d.ts +69 -0
  130. package/misc/lib/constants.d.ts +1 -0
  131. package/misc/lib/decal.d.ts +27 -0
  132. package/misc/lib/deprecated.d.ts +14 -0
  133. package/misc/lib/depth-buffer.d.ts +8 -0
  134. package/misc/lib/fbo.d.ts +47 -0
  135. package/misc/lib/sampler.d.ts +73 -0
  136. package/package.json +60 -38
  137. package/shaders/index.d.ts +2 -17
  138. package/shaders/lib/grid-material.d.ts +69 -0
  139. package/shaders/lib/mesh-refraction-material.d.ts +11 -0
  140. package/staging/README.md +472 -2
  141. package/staging/index.d.ts +18 -21
  142. package/staging/lib/accumulative-shadows.d.ts +75 -0
  143. package/staging/lib/backdrop.d.ts +22 -0
  144. package/staging/lib/bb-anchor.d.ts +17 -0
  145. package/staging/lib/bounds.d.ts +47 -0
  146. package/staging/lib/camera-shake.d.ts +29 -0
  147. package/staging/lib/caustics.d.ts +53 -0
  148. package/staging/lib/center.d.ts +422 -0
  149. package/staging/lib/contact-shadows.d.ts +45 -0
  150. package/staging/lib/environment.d.ts +159 -0
  151. package/staging/lib/float.d.ts +19 -0
  152. package/staging/lib/lightformer.d.ts +334 -0
  153. package/staging/lib/matcap-texture.d.ts +32 -0
  154. package/staging/lib/normal-texture.d.ts +37 -0
  155. package/staging/lib/randomized-lights.d.ts +54 -0
  156. package/staging/lib/render-texture.d.ts +64 -0
  157. package/staging/lib/sky.d.ts +32 -0
  158. package/staging/lib/spot-light.d.ts +120 -0
  159. package/staging/lib/stage.d.ts +376 -0
  160. package/vanilla-exports/README.md +3 -0
  161. package/vanilla-exports/index.d.ts +27 -0
  162. package/web-types.json +1 -1
  163. package/abstractions/billboard/billboard.d.ts +0 -28
  164. package/abstractions/detailed/detailed.d.ts +0 -26
  165. package/abstractions/edges/edges.d.ts +0 -34
  166. package/abstractions/grid/grid.d.ts +0 -50
  167. package/abstractions/text/text.d.ts +0 -82
  168. package/abstractions/text-3d/text-3d.d.ts +0 -84
  169. package/assets/distort.vert.glsl +0 -1
  170. package/cameras/camera/camera-content.d.ts +0 -13
  171. package/cameras/camera/camera.d.ts +0 -26
  172. package/cameras/cube-camera/cube-camera.d.ts +0 -69
  173. package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
  174. package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
  175. package/controls/orbit-controls/orbit-controls.d.ts +0 -54
  176. package/esm2022/abstractions/billboard/billboard.mjs +0 -74
  177. package/esm2022/abstractions/detailed/detailed.mjs +0 -64
  178. package/esm2022/abstractions/edges/edges.mjs +0 -88
  179. package/esm2022/abstractions/grid/grid.mjs +0 -180
  180. package/esm2022/abstractions/text/text.mjs +0 -274
  181. package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
  182. package/esm2022/cameras/camera/camera-content.mjs +0 -21
  183. package/esm2022/cameras/camera/camera.mjs +0 -77
  184. package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
  185. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
  186. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
  187. package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -185
  188. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
  189. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +0 -197
  190. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  191. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -93
  192. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -150
  193. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +0 -66
  194. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -71
  195. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
  196. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -272
  197. package/esm2022/gizmos/index.mjs +0 -4
  198. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
  199. package/esm2022/loaders/loader/loader.mjs +0 -138
  200. package/esm2022/loaders/progress/progress.mjs +0 -52
  201. package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
  202. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
  203. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
  204. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
  205. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
  206. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
  207. package/esm2022/materials/point-material/point-material.mjs +0 -50
  208. package/esm2022/misc/animations/animations.mjs +0 -59
  209. package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
  210. package/esm2022/misc/caustics/caustics.mjs +0 -387
  211. package/esm2022/misc/decal/decal.mjs +0 -187
  212. package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
  213. package/esm2022/misc/example/example.mjs +0 -160
  214. package/esm2022/misc/fbo/fbo.mjs +0 -47
  215. package/esm2022/misc/html/html-wrapper.mjs +0 -478
  216. package/esm2022/misc/html/html.mjs +0 -304
  217. package/esm2022/misc/sampler/sampler.mjs +0 -142
  218. package/esm2022/misc/shadow/shadow.mjs +0 -111
  219. package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
  220. package/esm2022/misc/trail/trail.mjs +0 -209
  221. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
  222. package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
  223. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
  224. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
  225. package/esm2022/modifiers/index.mjs +0 -2
  226. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
  227. package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
  228. package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
  229. package/esm2022/performances/index.mjs +0 -8
  230. package/esm2022/performances/instances/instances.mjs +0 -220
  231. package/esm2022/performances/instances/position-mesh.mjs +0 -52
  232. package/esm2022/performances/points/points-input.mjs +0 -64
  233. package/esm2022/performances/points/points.mjs +0 -326
  234. package/esm2022/performances/points/position-point.mjs +0 -54
  235. package/esm2022/performances/segments/segment-object.mjs +0 -9
  236. package/esm2022/performances/segments/segments.mjs +0 -182
  237. package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
  238. package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
  239. package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
  240. package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
  241. package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
  242. package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
  243. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
  244. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  245. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
  246. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  247. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  248. package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
  249. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
  250. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
  251. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
  252. package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
  253. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
  254. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
  255. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
  256. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
  257. package/esm2022/staging/backdrop/backdrop.mjs +0 -77
  258. package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -69
  259. package/esm2022/staging/bounds/bounds.mjs +0 -308
  260. package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
  261. package/esm2022/staging/center/center.mjs +0 -165
  262. package/esm2022/staging/cloud/cloud.mjs +0 -158
  263. package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
  264. package/esm2022/staging/environment/assets.mjs +0 -13
  265. package/esm2022/staging/environment/environment-cube.mjs +0 -47
  266. package/esm2022/staging/environment/environment-ground.mjs +0 -41
  267. package/esm2022/staging/environment/environment-input.mjs +0 -119
  268. package/esm2022/staging/environment/environment-map.mjs +0 -53
  269. package/esm2022/staging/environment/environment-portal.mjs +0 -113
  270. package/esm2022/staging/environment/environment.mjs +0 -61
  271. package/esm2022/staging/environment/utils.mjs +0 -106
  272. package/esm2022/staging/float/float.mjs +0 -94
  273. package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
  274. package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
  275. package/esm2022/staging/sky/sky.mjs +0 -119
  276. package/esm2022/staging/sparkles/sparkles.mjs +0 -164
  277. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
  278. package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
  279. package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
  280. package/esm2022/staging/spot-light/spot-light.mjs +0 -81
  281. package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
  282. package/esm2022/staging/stage/stage.mjs +0 -389
  283. package/esm2022/staging/stars/stars.mjs +0 -147
  284. package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
  285. package/esm2022/staging/wireframe/wireframe.mjs +0 -228
  286. package/esm2022/utils/angular-three-soba-utils.mjs +0 -5
  287. package/esm2022/utils/content/content.mjs +0 -15
  288. package/esm2022/utils/index.mjs +0 -2
  289. package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
  290. package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
  291. package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
  292. package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
  293. package/fesm2022/angular-three-soba-performances.mjs +0 -956
  294. package/fesm2022/angular-three-soba-performances.mjs.map +0 -1
  295. package/fesm2022/angular-three-soba-utils.mjs +0 -22
  296. package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
  297. package/gizmos/README.md +0 -3
  298. package/gizmos/gizmo-helper/gizmo-helper.d.ts +0 -69
  299. package/gizmos/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  300. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  301. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -29
  302. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +0 -33
  303. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -10
  304. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -40
  305. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -30
  306. package/gizmos/index.d.ts +0 -3
  307. package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
  308. package/loaders/loader/loader.d.ts +0 -33
  309. package/loaders/progress/progress.d.ts +0 -9
  310. package/loaders/texture-loader/texture-loader.d.ts +0 -7
  311. package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
  312. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
  313. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
  314. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
  315. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
  316. package/materials/point-material/point-material.d.ts +0 -24
  317. package/misc/animations/animations.d.ts +0 -15
  318. package/misc/caustics/caustics.d.ts +0 -87
  319. package/misc/decal/decal.d.ts +0 -49
  320. package/misc/depth-buffer/depth-buffer.d.ts +0 -9
  321. package/misc/example/example.d.ts +0 -81
  322. package/misc/fbo/fbo.d.ts +0 -17
  323. package/misc/html/html-wrapper.d.ts +0 -559
  324. package/misc/html/html.d.ts +0 -214
  325. package/misc/sampler/sampler.d.ts +0 -67
  326. package/misc/shadow/shadow.d.ts +0 -37
  327. package/misc/stats-gl/stats-gl.d.ts +0 -24
  328. package/misc/trail/trail.d.ts +0 -57
  329. package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
  330. package/misc/trail-texture/trail-texture.d.ts +0 -50
  331. package/modifiers/README.md +0 -3
  332. package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
  333. package/modifiers/index.d.ts +0 -1
  334. package/performances/README.md +0 -3
  335. package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
  336. package/performances/adaptive-events/adaptive-events.d.ts +0 -9
  337. package/performances/index.d.ts +0 -7
  338. package/performances/instances/instances.d.ts +0 -79
  339. package/performances/instances/position-mesh.d.ts +0 -10
  340. package/performances/points/points-input.d.ts +0 -32
  341. package/performances/points/points.d.ts +0 -92
  342. package/performances/points/position-point.d.ts +0 -11
  343. package/performances/segments/segment-object.d.ts +0 -7
  344. package/performances/segments/segments.d.ts +0 -124
  345. package/shaders/blur-pass/blur-pass.d.ts +0 -23
  346. package/shaders/caustics/caustics-material.d.ts +0 -4
  347. package/shaders/caustics/caustics-projection-material.d.ts +0 -4
  348. package/shaders/convolution-material/convolution-material.d.ts +0 -7
  349. package/shaders/discard-material/discard-material.d.ts +0 -3
  350. package/shaders/grid-material/grid-material.d.ts +0 -37
  351. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
  352. package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
  353. package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
  354. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
  355. package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
  356. package/shaders/shader-material/shader-material.d.ts +0 -6
  357. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
  358. package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
  359. package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
  360. package/shaders/star-field-material/star-field-material.d.ts +0 -13
  361. package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
  362. package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
  363. package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
  364. package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
  365. package/staging/backdrop/backdrop.d.ts +0 -30
  366. package/staging/bb-anchor/bb-anchor.d.ts +0 -27
  367. package/staging/bounds/bounds.d.ts +0 -134
  368. package/staging/camera-shake/camera-shake.d.ts +0 -43
  369. package/staging/center/center.d.ts +0 -70
  370. package/staging/cloud/cloud.d.ts +0 -51
  371. package/staging/contact-shadows/contact-shadows.d.ts +0 -70
  372. package/staging/environment/assets.d.ts +0 -13
  373. package/staging/environment/environment-cube.d.ts +0 -15
  374. package/staging/environment/environment-ground.d.ts +0 -13
  375. package/staging/environment/environment-input.d.ts +0 -68
  376. package/staging/environment/environment-map.d.ts +0 -16
  377. package/staging/environment/environment-portal.d.ts +0 -18
  378. package/staging/environment/environment.d.ts +0 -8
  379. package/staging/environment/utils.d.ts +0 -7
  380. package/staging/float/float.d.ts +0 -31
  381. package/staging/matcap-texture/matcap-texture.d.ts +0 -13
  382. package/staging/normal-texture/normal-texture.d.ts +0 -16
  383. package/staging/sky/sky.d.ts +0 -48
  384. package/staging/sparkles/sparkles.d.ts +0 -63
  385. package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
  386. package/staging/spot-light/shadow-mesh.d.ts +0 -37
  387. package/staging/spot-light/spot-light-input.d.ts +0 -38
  388. package/staging/spot-light/spot-light.d.ts +0 -39
  389. package/staging/spot-light/volumetric-mesh.d.ts +0 -24
  390. package/staging/stage/stage.d.ts +0 -130
  391. package/staging/stars/stars.d.ts +0 -45
  392. package/staging/wireframe/wireframe-input.d.ts +0 -65
  393. package/staging/wireframe/wireframe.d.ts +0 -28
  394. package/utils/README.md +0 -3
  395. package/utils/content/content.d.ts +0 -8
  396. package/utils/index.d.ts +0 -1
  397. /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
@@ -1,266 +0,0 @@
1
- import { NgIf } from '@angular/common';
2
- import { CUSTOM_ELEMENTS_SCHEMA, Component, computed, effect, inject, runInInjectionContext, } from '@angular/core';
3
- import { assertInjectionContext, checkUpdate, extend, injectBeforeRender, injectNgtRef, } from 'angular-three';
4
- import * as THREE from 'three';
5
- import { Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';
6
- import { FullScreenQuad } from 'three-stdlib';
7
- import { NgtsSpotLightShadowMeshInput } from './shadow-mesh-input';
8
- import { injectNgtsSpotLightApi } from './spot-light';
9
- import * as i0 from "@angular/core";
10
- const isSpotLight = (child) => {
11
- return child?.isSpotLight;
12
- };
13
- function injectShadowMeshCommon(spotLightRef, meshRef, width, height, distance, injector) {
14
- injector = assertInjectionContext(injectShadowMeshCommon, injector);
15
- runInInjectionContext(injector, () => {
16
- const pos = new THREE.Vector3();
17
- const dir = new THREE.Vector3();
18
- effect(() => {
19
- const spotLight = spotLightRef.nativeElement;
20
- if (!spotLight)
21
- return;
22
- if (isSpotLight(spotLight)) {
23
- spotLight.shadow.mapSize.set(width(), height());
24
- if (spotLight.shadow.map) {
25
- spotLight.shadow.map.setSize(width(), height());
26
- }
27
- spotLight.shadow.needsUpdate = true;
28
- }
29
- else {
30
- throw new Error('<ngts-spot-light-shadow> must be a child of a <ngts-spot-light>');
31
- }
32
- });
33
- injectBeforeRender(() => {
34
- const spotLight = spotLightRef.nativeElement;
35
- const mesh = meshRef.nativeElement;
36
- if (!spotLight)
37
- return;
38
- const A = spotLight.position;
39
- const B = spotLight.target.position;
40
- dir.copy(B).sub(A);
41
- const len = dir.length();
42
- dir.normalize().multiplyScalar(len * distance());
43
- pos.copy(A).add(dir);
44
- if (mesh) {
45
- mesh.position.copy(pos);
46
- mesh.lookAt(spotLight.target.position);
47
- }
48
- });
49
- });
50
- }
51
- extend({ Mesh, PlaneGeometry, MeshBasicMaterial });
52
- export class NgtsSpotLightShadowMeshNoShader {
53
- constructor() {
54
- this.shadowMeshInput = inject(NgtsSpotLightShadowMeshInput);
55
- this.meshRef = injectNgtRef();
56
- this.DoubleSide = THREE.DoubleSide;
57
- this.spotLightApi = injectNgtsSpotLightApi();
58
- this.debug = this.spotLightApi.debug;
59
- effect(() => {
60
- this.shadowMeshInput.inputs.patch({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512, scale: 1 });
61
- });
62
- effect(() => {
63
- const map = this.shadowMeshInput.map();
64
- if (map) {
65
- map.wrapS = map.wrapT = THREE.RepeatWrapping;
66
- checkUpdate(map);
67
- }
68
- });
69
- injectShadowMeshCommon(this.spotLightApi.spotLight, this.meshRef, this.shadowMeshInput.width, this.shadowMeshInput.height, this.shadowMeshInput.distance);
70
- }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightShadowMeshNoShader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSpotLightShadowMeshNoShader, isStandalone: true, selector: "ngts-spot-light-shadow-mesh-no-shader", ngImport: i0, template: `
73
- <ngt-mesh [ref]="meshRef" [scale]="shadowMeshInput.scale()" [castShadow]="true">
74
- <ngt-plane-geometry />
75
- <ngt-mesh-basic-material
76
- [transparent]="true"
77
- [side]="DoubleSide"
78
- [alphaTest]="shadowMeshInput.alphaTest()"
79
- [alphaMap]="shadowMeshInput.map()"
80
- [opacity]="debug() ? 1 : 0"
81
- >
82
- <ng-content />
83
- </ngt-mesh-basic-material>
84
- </ngt-mesh>
85
- `, isInline: true }); }
86
- }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightShadowMeshNoShader, decorators: [{
88
- type: Component,
89
- args: [{
90
- selector: 'ngts-spot-light-shadow-mesh-no-shader',
91
- standalone: true,
92
- template: `
93
- <ngt-mesh [ref]="meshRef" [scale]="shadowMeshInput.scale()" [castShadow]="true">
94
- <ngt-plane-geometry />
95
- <ngt-mesh-basic-material
96
- [transparent]="true"
97
- [side]="DoubleSide"
98
- [alphaTest]="shadowMeshInput.alphaTest()"
99
- [alphaMap]="shadowMeshInput.map()"
100
- [opacity]="debug() ? 1 : 0"
101
- >
102
- <ng-content />
103
- </ngt-mesh-basic-material>
104
- </ngt-mesh>
105
- `,
106
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
107
- }]
108
- }], ctorParameters: function () { return []; } });
109
- export class NgtsSpotLightShadowMeshShader {
110
- constructor() {
111
- this.shadowMeshInput = inject(NgtsSpotLightShadowMeshInput);
112
- this.meshRef = injectNgtRef();
113
- this.DoubleSide = THREE.DoubleSide;
114
- this.RepeatWrapping = THREE.RepeatWrapping;
115
- this.spotLightApi = injectNgtsSpotLightApi();
116
- this.debug = this.spotLightApi.debug;
117
- this.renderTarget = computed(() => {
118
- const [width, height] = [this.shadowMeshInput.width(), this.shadowMeshInput.height()];
119
- return new THREE.WebGLRenderTarget(width, height, {
120
- format: THREE.RGBAFormat,
121
- encoding: THREE.LinearEncoding,
122
- stencilBuffer: false,
123
- // depthTexture: null!
124
- });
125
- });
126
- this.uniforms = {
127
- uShadowMap: { value: this.shadowMeshInput.map() },
128
- uTime: { value: 0 },
129
- };
130
- this.fsQuad = computed(() => {
131
- const shader = this.shadowMeshInput.shader();
132
- if (!shader)
133
- return null;
134
- return new FullScreenQuad(new THREE.ShaderMaterial({
135
- uniforms: this.uniforms,
136
- vertexShader: /* glsl */ `
137
- varying vec2 vUv;
138
-
139
- void main() {
140
- vUv = uv;
141
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
142
- }
143
- `,
144
- fragmentShader: shader,
145
- }));
146
- });
147
- effect(() => {
148
- this.shadowMeshInput.inputs.patch({
149
- distance: 0.4,
150
- alphaTest: 0.5,
151
- width: 512,
152
- height: 512,
153
- scale: 4,
154
- shader: /* glsl */ `
155
- varying vec2 vUv;
156
-
157
- uniform sampler2D uShadowMap;
158
- uniform float uTime;
159
-
160
- void main() {
161
- vec3 color = texture2D(uShadowMap, vUv).xyz;
162
- gl_FragColor = vec4(color, 1.);
163
- }
164
- `,
165
- });
166
- });
167
- injectShadowMeshCommon(this.spotLightApi.spotLight, this.meshRef, this.shadowMeshInput.width, this.shadowMeshInput.height, this.shadowMeshInput.distance);
168
- injectBeforeRender(({ delta, gl }) => {
169
- this.uniforms.uTime.value += delta;
170
- const fsQuad = this.fsQuad();
171
- const renderTarget = this.renderTarget();
172
- if (fsQuad && renderTarget) {
173
- gl.setRenderTarget(renderTarget);
174
- fsQuad.render(gl);
175
- gl.setRenderTarget(null);
176
- }
177
- });
178
- effect(() => {
179
- const map = this.shadowMeshInput.map();
180
- if (map) {
181
- this.uniforms.uShadowMap.value = map;
182
- }
183
- });
184
- effect((onCleanup) => {
185
- const fsQuad = this.fsQuad();
186
- onCleanup(() => {
187
- if (fsQuad) {
188
- fsQuad.dispose();
189
- fsQuad.material.dispose();
190
- }
191
- });
192
- });
193
- effect((onCleanup) => {
194
- const renderTarget = this.renderTarget();
195
- onCleanup(() => {
196
- renderTarget.dispose();
197
- });
198
- });
199
- }
200
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightShadowMeshShader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSpotLightShadowMeshShader, isStandalone: true, selector: "ngts-spot-light-shadow-mesh-shader", ngImport: i0, template: `
202
- <ngt-mesh [ref]="meshRef" [scale]="shadowMeshInput.scale()" [castShadow]="true">
203
- <ngt-plane-geometry />
204
- <ngt-mesh-basic-material
205
- [transparent]="true"
206
- [side]="DoubleSide"
207
- [alphaTest]="shadowMeshInput.alphaTest()"
208
- [alphaMap]="renderTarget().texture"
209
- [opacity]="debug() ? 1 : 0"
210
- >
211
- <ngt-value [rawValue]="RepeatWrapping" attach="alphaMap.wrapS" />
212
- <ngt-value [rawValue]="RepeatWrapping" attach="alphaMap.wrapT" />
213
- <ng-content />
214
- </ngt-mesh-basic-material>
215
- </ngt-mesh>
216
- `, isInline: true }); }
217
- }
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightShadowMeshShader, decorators: [{
219
- type: Component,
220
- args: [{
221
- selector: 'ngts-spot-light-shadow-mesh-shader',
222
- standalone: true,
223
- template: `
224
- <ngt-mesh [ref]="meshRef" [scale]="shadowMeshInput.scale()" [castShadow]="true">
225
- <ngt-plane-geometry />
226
- <ngt-mesh-basic-material
227
- [transparent]="true"
228
- [side]="DoubleSide"
229
- [alphaTest]="shadowMeshInput.alphaTest()"
230
- [alphaMap]="renderTarget().texture"
231
- [opacity]="debug() ? 1 : 0"
232
- >
233
- <ngt-value [rawValue]="RepeatWrapping" attach="alphaMap.wrapS" />
234
- <ngt-value [rawValue]="RepeatWrapping" attach="alphaMap.wrapT" />
235
- <ng-content />
236
- </ngt-mesh-basic-material>
237
- </ngt-mesh>
238
- `,
239
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
240
- }]
241
- }], ctorParameters: function () { return []; } });
242
- export class NgtsSpotLightShadow extends NgtsSpotLightShadowMeshInput {
243
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightShadow, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
244
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSpotLightShadow, isStandalone: true, selector: "ngts-spot-light-shadow", providers: [{ provide: NgtsSpotLightShadowMeshInput, useExisting: NgtsSpotLightShadow }], usesInheritance: true, ngImport: i0, template: `
245
- <ngts-spot-light-shadow-mesh-shader *ngIf="shader(); else noShader" />
246
- <ng-template #noShader>
247
- <ngts-spot-light-shadow-mesh-no-shader />
248
- </ng-template>
249
- `, isInline: true, dependencies: [{ kind: "component", type: NgtsSpotLightShadowMeshShader, selector: "ngts-spot-light-shadow-mesh-shader" }, { kind: "component", type: NgtsSpotLightShadowMeshNoShader, selector: "ngts-spot-light-shadow-mesh-no-shader" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
250
- }
251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightShadow, decorators: [{
252
- type: Component,
253
- args: [{
254
- selector: 'ngts-spot-light-shadow',
255
- standalone: true,
256
- template: `
257
- <ngts-spot-light-shadow-mesh-shader *ngIf="shader(); else noShader" />
258
- <ng-template #noShader>
259
- <ngts-spot-light-shadow-mesh-no-shader />
260
- </ng-template>
261
- `,
262
- imports: [NgtsSpotLightShadowMeshShader, NgtsSpotLightShadowMeshNoShader, NgIf],
263
- providers: [{ provide: NgtsSpotLightShadowMeshInput, useExisting: NgtsSpotLightShadow }],
264
- }]
265
- }] });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93LW1lc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3BvdC1saWdodC9zaGFkb3ctbWVzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04scUJBQXFCLEdBRXJCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLDRCQUE0QixFQUEwQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFdEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUE0QixFQUE0QixFQUFFO0lBQzlFLE9BQVEsS0FBeUIsRUFBRSxXQUFXLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRUYsU0FBUyxzQkFBc0IsQ0FDOUIsWUFBNkMsRUFDN0MsT0FBbUMsRUFDbkMsS0FBbUIsRUFDbkIsTUFBb0IsRUFDcEIsUUFBc0IsRUFDdEIsUUFBbUI7SUFFbkIsUUFBUSxHQUFHLHNCQUFzQixDQUFDLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BFLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDcEMsTUFBTSxHQUFH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T0FBTyxFQUFFLDRCQUE0QixFQUFFLFdBQVcscUJBQXFCLEVBQUUsQ0FBQztpQkFDeEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdGVmZmVjdCxcblx0aW5qZWN0LFxuXHRydW5JbkluamVjdGlvbkNvbnRleHQsXG5cdHR5cGUgSW5qZWN0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0YXNzZXJ0SW5qZWN0aW9uQ29udGV4dCxcblx0Y2hlY2tVcGRhdGUsXG5cdGV4dGVuZCxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHRpbmplY3ROZ3RSZWYsXG5cdHR5cGUgTmd0SW5qZWN0ZWRSZWYsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTWVzaCwgTWVzaEJhc2ljTWF0ZXJpYWwsIFBsYW5lR2VvbWV0cnkgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBGdWxsU2NyZWVuUXVhZCB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBOZ3RzU3BvdExpZ2h0U2hhZG93TWVzaElucHV0LCB0eXBlIE5ndHNTcG90TGlnaHRTaGFkb3dNZXNoSW5wdXRTdGF0ZSB9IGZyb20gJy4vc2hhZG93LW1lc2gtaW5wdXQnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c1Nwb3RMaWdodEFwaSB9IGZyb20gJy4vc3BvdC1saWdodCc7XG5cbmNvbnN0IGlzU3BvdExpZ2h0ID0gKGNoaWxkOiBUSFJFRS5PYmplY3QzRCB8IG51bGwpOiBjaGlsZCBpcyBUSFJFRS5TcG90TGlnaHQgPT4ge1xuXHRyZXR1cm4gKGNoaWxkIGFzIFRIUkVFLlNwb3RMaWdodCk/LmlzU3BvdExpZ2h0O1xufTtcblxuZnVuY3Rpb24gaW5qZWN0U2hhZG93TWVzaENvbW1vbihcblx0c3BvdExpZ2h0UmVmOiBOZ3RJbmplY3RlZFJlZjxUSFJFRS5TcG90TGlnaHQ+LFxuXHRtZXNoUmVmOiBOZ3RJbmplY3RlZFJlZjxUSFJFRS5NZXNoPixcblx0d2lkdGg6ICgpID0+IG51bWJlcixcblx0aGVpZ2h0OiAoKSA9PiBudW1iZXIsXG5cdGRpc3RhbmNlOiAoKSA9PiBudW1iZXIsXG5cdGluamVjdG9yPzogSW5qZWN0b3IsXG4pIHtcblx0aW5qZWN0b3IgPSBhc3NlcnRJbmplY3Rpb25Db250ZXh0KGluamVjdFNoYWRvd01lc2hDb21tb24sIGluamVjdG9yKTtcblx0cnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgcG9zID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblx0XHRjb25zdCBkaXIgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHNwb3RMaWdodCA9IHNwb3RMaWdodFJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFzcG90TGlnaHQpIHJldHVybjtcblx0XHRcdGlmIChpc1Nwb3RMaWdodChzcG90TGlnaHQpKSB7XG5cdFx0XHRcdHNwb3RMaWdodC5zaGFkb3cubWFwU2l6ZS5zZXQod2lkdGgoKSwgaGVpZ2h0KCkpO1xuXHRcdFx0XHRpZiAoc3BvdExpZ2h0LnNoYWRvdy5tYXApIHtcblx0XHRcdFx0XHRzcG90TGlnaHQuc2hhZG93Lm1hcC5zZXRTaXplKHdpZHRoKCksIGhlaWdodCgpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzcG90TGlnaHQuc2hhZG93Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignPG5ndHMtc3BvdC1saWdodC1zaGFkb3c+IG11c3QgYmUgYSBjaGlsZCBvZiBhIDxuZ3RzLXNwb3QtbGlnaHQ+Jyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BvdExpZ2h0ID0gc3BvdExpZ2h0UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRjb25zdCBtZXNoID0gbWVzaFJlZi5uYXRpdmVFbGVtZW50O1xuXG5cdFx0XHRpZiAoIXNwb3RMaWdodCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBBID0gc3BvdExpZ2h0LnBvc2l0aW9uO1xuXHRcdFx0Y29uc3QgQiA9IHNwb3RMaWdodC50YXJnZXQucG9zaXRpb247XG5cblx0XHRcdGRpci5jb3B5KEIpLnN1YihBKTtcblx0XHRcdGNvbnN0IGxlbiA9IGRpci5sZW5ndGgoKTtcblx0XHRcdGRpci5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcihsZW4gKiBkaXN0YW5jZSgpKTtcblx0XHRcdHBvcy5jb3B5KEEpLmFkZChkaXIpO1xuXG5cdFx0XHRpZiAobWVzaCkge1xuXHRcdFx0XHRtZXNoLnBvc2l0aW9uLmNvcHkocG9zKTtcblx0XHRcdFx0bWVzaC5sb29rQXQoc3BvdExpZ2h0LnRhcmdldC5wb3NpdGlvbik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xufVxuXG5leHRlbmQoeyBNZXNoLCBQbGFuZUdlb21ldHJ5LCBNZXNoQmFzaWNNYXRlcmlhbCB9KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1zcG90LWxpZ2h0LXNoYWRvdy1tZXNoLW5vLXNoYWRlcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoIFtyZWZdPVwibWVzaFJlZlwiIFtzY2FsZV09XCJzaGFkb3dNZXNoSW5wdXQuc2NhbGUoKVwiIFtjYXN0U2hhZG93XT1cInRydWVcIj5cblx0XHRcdDxuZ3QtcGxhbmUtZ2VvbWV0cnkgLz5cblx0XHRcdDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbFxuXHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdFtzaWRlXT1cIkRvdWJsZVNpZGVcIlxuXHRcdFx0XHRbYWxwaGFUZXN0XT1cInNoYWRvd01lc2hJbnB1dC5hbHBoYVRlc3QoKVwiXG5cdFx0XHRcdFthbHBoYU1hcF09XCJzaGFkb3dNZXNoSW5wdXQubWFwKClcIlxuXHRcdFx0XHRbb3BhY2l0eV09XCJkZWJ1ZygpID8gMSA6IDBcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0PC9uZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbD5cblx0XHQ8L25ndC1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcG90TGlnaHRTaGFkb3dNZXNoTm9TaGFkZXIge1xuXHRzaGFkb3dNZXNoSW5wdXQgPSBpbmplY3QoTmd0c1Nwb3RMaWdodFNoYWRvd01lc2hJbnB1dCk7XG5cblx0bWVzaFJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5NZXNoPigpO1xuXHREb3VibGVTaWRlID0gVEhSRUUuRG91YmxlU2lkZTtcblxuXHRwcml2YXRlIHNwb3RMaWdodEFwaSA9IGluamVjdE5ndHNTcG90TGlnaHRBcGkoKTtcblx0ZGVidWcgPSB0aGlzLnNwb3RMaWdodEFwaS5kZWJ1ZztcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy5zaGFkb3dNZXNoSW5wdXQuaW5wdXRzLnBhdGNoKHsgZGlzdGFuY2U6IDAuNCwgYWxwaGFUZXN0OiAwLjUsIHdpZHRoOiA1MTIsIGhlaWdodDogNTEyLCBzY2FsZTogMSB9KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBtYXAgPSB0aGlzLnNoYWRvd01lc2hJbnB1dC5tYXAoKTtcblx0XHRcdGlmIChtYXApIHtcblx0XHRcdFx0bWFwLndyYXBTID0gbWFwLndyYXBUID0gVEhSRUUuUmVwZWF0V3JhcHBpbmc7XG5cdFx0XHRcdGNoZWNrVXBkYXRlKG1hcCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3RTaGFkb3dNZXNoQ29tbW9uKFxuXHRcdFx0dGhpcy5zcG90TGlnaHRBcGkuc3BvdExpZ2h0LFxuXHRcdFx0dGhpcy5tZXNoUmVmLFxuXHRcdFx0dGhpcy5zaGFkb3dNZXNoSW5wdXQud2lkdGgsXG5cdFx0XHR0aGlzLnNoYWRvd01lc2hJbnB1dC5oZWlnaHQsXG5cdFx0XHR0aGlzLnNoYWRvd01lc2hJbnB1dC5kaXN0YW5jZSxcblx0XHQpO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc3BvdC1saWdodC1zaGFkb3ctbWVzaC1zaGFkZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaCBbcmVmXT1cIm1lc2hSZWZcIiBbc2NhbGVdPVwic2hhZG93TWVzaElucHV0LnNjYWxlKClcIiBbY2FzdFNoYWRvd109XCJ0cnVlXCI+XG5cdFx0XHQ8bmd0LXBsYW5lLWdlb21ldHJ5IC8+XG5cdFx0XHQ8bmd0LW1lc2gtYmFzaWMtbWF0ZXJpYWxcblx0XHRcdFx0W3RyYW5zcGFyZW50XT1cInRydWVcIlxuXHRcdFx0XHRbc2lkZV09XCJEb3VibGVTaWRlXCJcblx0XHRcdFx0W2FscGhhVGVzdF09XCJzaGFkb3dNZXNoSW5wdXQuYWxwaGFUZXN0KClcIlxuXHRcdFx0XHRbYWxwaGFNYXBdPVwicmVuZGVyVGFyZ2V0KCkudGV4dHVyZVwiXG5cdFx0XHRcdFtvcGFjaXR5XT1cImRlYnVnKCkgPyAxIDogMFwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cIlJlcGVhdFdyYXBwaW5nXCIgYXR0YWNoPVwiYWxwaGFNYXAud3JhcFNcIiAvPlxuXHRcdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJSZXBlYXRXcmFwcGluZ1wiIGF0dGFjaD1cImFscGhhTWFwLndyYXBUXCIgLz5cblx0XHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRcdDwvbmd0LW1lc2gtYmFzaWMtbWF0ZXJpYWw+XG5cdFx0PC9uZ3QtbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3BvdExpZ2h0U2hhZG93TWVzaFNoYWRlciB7XG5cdHNoYWRvd01lc2hJbnB1dCA9IGluamVjdChOZ3RzU3BvdExpZ2h0U2hhZG93TWVzaElucHV0KTtcblx0bWVzaFJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5NZXNoPigpO1xuXG5cdERvdWJsZVNpZGUgPSBUSFJFRS5Eb3VibGVTaWRlO1xuXHRSZXBlYXRXcmFwcGluZyA9IFRIUkVFLlJlcGVhdFdyYXBwaW5nO1xuXG5cdHByaXZhdGUgc3BvdExpZ2h0QXBpID0gaW5qZWN0Tmd0c1Nwb3RMaWdodEFwaSgpO1xuXHRkZWJ1ZyA9IHRoaXMuc3BvdExpZ2h0QXBpLmRlYnVnO1xuXHRyZW5kZXJUYXJnZXQgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW3dpZHRoLCBoZWlnaHRdID0gW3RoaXMuc2hhZG93TWVzaElucHV0LndpZHRoKCksIHRoaXMuc2hhZG93TWVzaElucHV0LmhlaWdodCgpXTtcblxuXHRcdHJldHVybiBuZXcgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQod2lkdGgsIGhlaWdodCwge1xuXHRcdFx0Zm9ybWF0OiBUSFJFRS5SR0JBRm9ybWF0LFxuXHRcdFx0ZW5jb2Rpbmc6IFRIUkVFLkxpbmVhckVuY29kaW5nLFxuXHRcdFx0c3RlbmNpbEJ1ZmZlcjogZmFsc2UsXG5cdFx0XHQvLyBkZXB0aFRleHR1cmU6IG51bGwhXG5cdFx0fSk7XG5cdH0pO1xuXG5cdHByaXZhdGUgdW5pZm9ybXMgPSB7XG5cdFx0dVNoYWRvd01hcDogeyB2YWx1ZTogdGhpcy5zaGFkb3dNZXNoSW5wdXQubWFwKCkgfSxcblx0XHR1VGltZTogeyB2YWx1ZTogMCB9LFxuXHR9O1xuXG5cdHByaXZhdGUgZnNRdWFkID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHNoYWRlciA9IHRoaXMuc2hhZG93TWVzaElucHV0LnNoYWRlcigpO1xuXHRcdGlmICghc2hhZGVyKSByZXR1cm4gbnVsbDtcblx0XHRyZXR1cm4gbmV3IEZ1bGxTY3JlZW5RdWFkKFxuXHRcdFx0bmV3IFRIUkVFLlNoYWRlck1hdGVyaWFsKHtcblx0XHRcdFx0dW5pZm9ybXM6IHRoaXMudW5pZm9ybXMsXG5cdFx0XHRcdHZlcnRleFNoYWRlcjogLyogZ2xzbCAqLyBgXG4gICAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjtcblxuICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgIHZVdiA9IHV2O1xuICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgICAgICAgICB9XG4gICAgICAgIGAsXG5cdFx0XHRcdGZyYWdtZW50U2hhZGVyOiBzaGFkZXIsXG5cdFx0XHR9KSxcblx0XHQpO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy5zaGFkb3dNZXNoSW5wdXQuaW5wdXRzLnBhdGNoKHtcblx0XHRcdFx0ZGlzdGFuY2U6IDAuNCxcblx0XHRcdFx0YWxwaGFUZXN0OiAwLjUsXG5cdFx0XHRcdHdpZHRoOiA1MTIsXG5cdFx0XHRcdGhlaWdodDogNTEyLFxuXHRcdFx0XHRzY2FsZTogNCxcblx0XHRcdFx0c2hhZGVyOiAvKiBnbHNsICovIGBcbiAgICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2O1xuXG4gICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdVNoYWRvd01hcDtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IHVUaW1lO1xuXG4gICAgICAgICAgdm9pZCBtYWluKCkge1xuICAgICAgICAgICAgdmVjMyBjb2xvciA9IHRleHR1cmUyRCh1U2hhZG93TWFwLCB2VXYpLnh5ejtcbiAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IsIDEuKTtcbiAgICAgICAgICB9XG4gICAgICAgIGAsXG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdFNoYWRvd01lc2hDb21tb24oXG5cdFx0XHR0aGlzLnNwb3RMaWdodEFwaS5zcG90TGlnaHQsXG5cdFx0XHR0aGlzLm1lc2hSZWYsXG5cdFx0XHR0aGlzLnNoYWRvd01lc2hJbnB1dC53aWR0aCxcblx0XHRcdHRoaXMuc2hhZG93TWVzaElucHV0LmhlaWdodCxcblx0XHRcdHRoaXMuc2hhZG93TWVzaElucHV0LmRpc3RhbmNlLFxuXHRcdCk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgZGVsdGEsIGdsIH0pID0+IHtcblx0XHRcdHRoaXMudW5pZm9ybXMudVRpbWUudmFsdWUgKz0gZGVsdGE7XG5cdFx0XHRjb25zdCBmc1F1YWQgPSB0aGlzLmZzUXVhZCgpO1xuXHRcdFx0Y29uc3QgcmVuZGVyVGFyZ2V0ID0gdGhpcy5yZW5kZXJUYXJnZXQoKTtcblx0XHRcdGlmIChmc1F1YWQgJiYgcmVuZGVyVGFyZ2V0KSB7XG5cdFx0XHRcdGdsLnNldFJlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpO1xuXHRcdFx0XHRmc1F1YWQucmVuZGVyKGdsKTtcblx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KG51bGwpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IG1hcCA9IHRoaXMuc2hhZG93TWVzaElucHV0Lm1hcCgpO1xuXHRcdFx0aWYgKG1hcCkge1xuXHRcdFx0XHR0aGlzLnVuaWZvcm1zLnVTaGFkb3dNYXAudmFsdWUgPSBtYXA7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgZnNRdWFkID0gdGhpcy5mc1F1YWQoKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XG5cdFx0XHRcdGlmIChmc1F1YWQpIHtcblx0XHRcdFx0XHRmc1F1YWQuZGlzcG9zZSgpO1xuXHRcdFx0XHRcdGZzUXVhZC5tYXRlcmlhbC5kaXNwb3NlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IHJlbmRlclRhcmdldCA9IHRoaXMucmVuZGVyVGFyZ2V0KCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRyZW5kZXJUYXJnZXQuZGlzcG9zZSgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQnbmd0cy1zcG90LWxpZ2h0LXNoYWRvdyc6IE5ndHNTcG90TGlnaHRTaGFkb3dNZXNoSW5wdXRTdGF0ZTtcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNwb3QtbGlnaHQtc2hhZG93Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0cy1zcG90LWxpZ2h0LXNoYWRvdy1tZXNoLXNoYWRlciAqbmdJZj1cInNoYWRlcigpOyBlbHNlIG5vU2hhZGVyXCIgLz5cblx0XHQ8bmctdGVtcGxhdGUgI25vU2hhZGVyPlxuXHRcdFx0PG5ndHMtc3BvdC1saWdodC1zaGFkb3ctbWVzaC1uby1zaGFkZXIgLz5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0c1Nwb3RMaWdodFNoYWRvd01lc2hTaGFkZXIsIE5ndHNTcG90TGlnaHRTaGFkb3dNZXNoTm9TaGFkZXIsIE5nSWZdLFxuXHRwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ndHNTcG90TGlnaHRTaGFkb3dNZXNoSW5wdXQsIHVzZUV4aXN0aW5nOiBOZ3RzU3BvdExpZ2h0U2hhZG93IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3BvdExpZ2h0U2hhZG93IGV4dGVuZHMgTmd0c1Nwb3RMaWdodFNoYWRvd01lc2hJbnB1dCB7fVxuIl19
@@ -1,84 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { signalStore } from 'angular-three';
3
- import * as i0 from "@angular/core";
4
- export class NgtsSpotLightInput {
5
- constructor() {
6
- this.inputs = signalStore({});
7
- this.debug = this.inputs.select('debug');
8
- this.color = this.inputs.select('color');
9
- this.opacity = this.inputs.select('opacity');
10
- this.radiusBottom = this.inputs.select('radiusBottom');
11
- this.radiusTop = this.inputs.select('radiusTop');
12
- this.anglePower = this.inputs.select('anglePower');
13
- this.attenuation = this.inputs.select('attenuation');
14
- this.distance = this.inputs.select('distance');
15
- this.angle = this.inputs.select('angle');
16
- this.depthBuffer = this.inputs.select('depthBuffer');
17
- }
18
- set _depthBuffer(depthBuffer) {
19
- this.inputs.set({ depthBuffer });
20
- }
21
- set _angle(angle) {
22
- this.inputs.set({ angle });
23
- }
24
- set _distance(distance) {
25
- this.inputs.set({ distance });
26
- }
27
- set _attenuation(attenuation) {
28
- this.inputs.set({ attenuation });
29
- }
30
- set _anglePower(anglePower) {
31
- this.inputs.set({ anglePower });
32
- }
33
- set _radiusTop(radiusTop) {
34
- this.inputs.set({ radiusTop });
35
- }
36
- set _radiusBottom(radiusBottom) {
37
- this.inputs.set({ radiusBottom });
38
- }
39
- set _opacity(opacity) {
40
- this.inputs.set({ opacity });
41
- }
42
- set _color(color) {
43
- this.inputs.set({ color });
44
- }
45
- set _debug(debug) {
46
- this.inputs.set({ debug });
47
- }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
49
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSpotLightInput, inputs: { _depthBuffer: ["depthBuffer", "_depthBuffer"], _angle: ["angle", "_angle"], _distance: ["distance", "_distance"], _attenuation: ["attenuation", "_attenuation"], _anglePower: ["anglePower", "_anglePower"], _radiusTop: ["radiusTop", "_radiusTop"], _radiusBottom: ["radiusBottom", "_radiusBottom"], _opacity: ["opacity", "_opacity"], _color: ["color", "_color"], _debug: ["debug", "_debug"] }, ngImport: i0 }); }
50
- }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLightInput, decorators: [{
52
- type: Directive
53
- }], propDecorators: { _depthBuffer: [{
54
- type: Input,
55
- args: [{ alias: 'depthBuffer' }]
56
- }], _angle: [{
57
- type: Input,
58
- args: [{ alias: 'angle' }]
59
- }], _distance: [{
60
- type: Input,
61
- args: [{ alias: 'distance' }]
62
- }], _attenuation: [{
63
- type: Input,
64
- args: [{ alias: 'attenuation' }]
65
- }], _anglePower: [{
66
- type: Input,
67
- args: [{ alias: 'anglePower' }]
68
- }], _radiusTop: [{
69
- type: Input,
70
- args: [{ alias: 'radiusTop' }]
71
- }], _radiusBottom: [{
72
- type: Input,
73
- args: [{ alias: 'radiusBottom' }]
74
- }], _opacity: [{
75
- type: Input,
76
- args: [{ alias: 'opacity' }]
77
- }], _color: [{
78
- type: Input,
79
- args: [{ alias: 'color' }]
80
- }], _debug: [{
81
- type: Input,
82
- args: [{ alias: 'debug' }]
83
- }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9zcG90LWxpZ2h0L3Nwb3QtbGlnaHQtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFnQjVDLE1BQU0sT0FBZ0Isa0JBQWtCO0lBRHhDO1FBRUMsV0FBTSxHQUFHLFdBQVcsQ0FBMEIsRUFBRSxDQUFDLENBQUM7UUEwQ2xELFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsWUFBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsY0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLGVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxnQkFBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELGFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsZ0JBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNoRDtJQWxEQSxJQUFxQyxZQUFZLENBQUMsV0FBK0I7UUFDaEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUErQixNQUFNLENBQUMsS0FBYTtRQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQWtDLFNBQVMsQ0FBQyxRQUFnQjtRQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQXFDLFlBQVksQ0FBQyxXQUFtQjtRQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQW9DLFdBQVcsQ0FBQyxVQUFrQjtRQUNqRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQW1DLFVBQVUsQ0FBQyxTQUFpQjtRQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQXNDLGFBQWEsQ0FBQyxZQUFvQjtRQUN2RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQWlDLFFBQVEsQ0FBQyxPQUFlO1FBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBK0IsTUFBTSxDQUFDLEtBQXNCO1FBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBK0IsTUFBTSxDQUFDLEtBQWM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7OEdBekNvQixrQkFBa0I7a0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEdkMsU0FBUzs4QkFJNEIsWUFBWTtzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7Z0JBSUEsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSVMsU0FBUztzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBSVMsWUFBWTtzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7Z0JBSUssV0FBVztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBSUssVUFBVTtzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7Z0JBSVMsYUFBYTtzQkFBbEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7Z0JBSUMsUUFBUTtzQkFBeEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBSUksTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSU0sTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuXG5leHBvcnQgdHlwZSBOZ3RzU3BvdExpZ2h0SW5wdXRTdGF0ZSA9IHtcblx0ZGVwdGhCdWZmZXI/OiBUSFJFRS5EZXB0aFRleHR1cmU7XG5cdGFuZ2xlOiBudW1iZXI7XG5cdGRpc3RhbmNlOiBudW1iZXI7XG5cdGF0dGVudWF0aW9uOiBudW1iZXI7XG5cdGFuZ2xlUG93ZXI6IG51bWJlcjtcblx0cmFkaXVzVG9wOiBudW1iZXI7XG5cdHJhZGl1c0JvdHRvbTogbnVtYmVyO1xuXHRvcGFjaXR5OiBudW1iZXI7XG5cdGNvbG9yOiBzdHJpbmcgfCBudW1iZXI7XG5cdGRlYnVnOiBib29sZWFuO1xufTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmd0c1Nwb3RMaWdodElucHV0IHtcblx0aW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c1Nwb3RMaWdodElucHV0U3RhdGU+KHt9KTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2RlcHRoQnVmZmVyJyB9KSBzZXQgX2RlcHRoQnVmZmVyKGRlcHRoQnVmZmVyOiBUSFJFRS5EZXB0aFRleHR1cmUpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkZXB0aEJ1ZmZlciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYW5nbGUnIH0pIHNldCBfYW5nbGUoYW5nbGU6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGFuZ2xlIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdkaXN0YW5jZScgfSkgc2V0IF9kaXN0YW5jZShkaXN0YW5jZTogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGlzdGFuY2UgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2F0dGVudWF0aW9uJyB9KSBzZXQgX2F0dGVudWF0aW9uKGF0dGVudWF0aW9uOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBhdHRlbnVhdGlvbiB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYW5nbGVQb3dlcicgfSkgc2V0IF9hbmdsZVBvd2VyKGFuZ2xlUG93ZXI6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGFuZ2xlUG93ZXIgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3JhZGl1c1RvcCcgfSkgc2V0IF9yYWRpdXNUb3AocmFkaXVzVG9wOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyByYWRpdXNUb3AgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3JhZGl1c0JvdHRvbScgfSkgc2V0IF9yYWRpdXNCb3R0b20ocmFkaXVzQm90dG9tOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyByYWRpdXNCb3R0b20gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ29wYWNpdHknIH0pIHNldCBfb3BhY2l0eShvcGFjaXR5OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBvcGFjaXR5IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdjb2xvcicgfSkgc2V0IF9jb2xvcihjb2xvcjogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2RlYnVnJyB9KSBzZXQgX2RlYnVnKGRlYnVnOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGVidWcgfSk7XG5cdH1cblxuXHRkZWJ1ZyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGVidWcnKTtcblx0Y29sb3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbG9yJyk7XG5cdG9wYWNpdHkgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ29wYWNpdHknKTtcblx0cmFkaXVzQm90dG9tID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyYWRpdXNCb3R0b20nKTtcblx0cmFkaXVzVG9wID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyYWRpdXNUb3AnKTtcblx0YW5nbGVQb3dlciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYW5nbGVQb3dlcicpO1xuXHRhdHRlbnVhdGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYXR0ZW51YXRpb24nKTtcblx0ZGlzdGFuY2UgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2Rpc3RhbmNlJyk7XG5cdGFuZ2xlID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdhbmdsZScpO1xuXHRkZXB0aEJ1ZmZlciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGVwdGhCdWZmZXInKTtcbn1cbiJdfQ==
@@ -1,81 +0,0 @@
1
- import { NgIf } from '@angular/common';
2
- import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, forwardRef, signal } from '@angular/core';
3
- import { NgtArgs, createInjectionToken, extend, injectNgtRef } from 'angular-three';
4
- import { Group, SpotLight, SpotLightHelper } from 'three';
5
- import { NgtsSpotLightInput } from './spot-light-input';
6
- import { NgtsVolumetricMesh } from './volumetric-mesh';
7
- import * as i0 from "@angular/core";
8
- extend({ SpotLight, SpotLightHelper, Group });
9
- export const [injectNgtsSpotLightApi, provideNgtsSpotLightApi] = createInjectionToken((spotLight) => ({ spotLight: spotLight.spotLightRef, debug: spotLight.debug }), { isRoot: false, deps: [forwardRef(() => NgtsSpotLight)] });
10
- export class NgtsSpotLight extends NgtsSpotLightInput {
11
- set _volumetric(volumetric) {
12
- this.volumetric.set(volumetric);
13
- }
14
- constructor() {
15
- super();
16
- this.spotLightRef = injectNgtRef();
17
- this.volumetric = signal(true);
18
- this.inputs.set({
19
- opacity: 1,
20
- color: 'white',
21
- distance: 5,
22
- angle: 0.15,
23
- attenuation: 5,
24
- anglePower: 5,
25
- debug: false,
26
- });
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLight, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSpotLight, isStandalone: true, selector: "ngts-spot-light", inputs: { spotLightRef: "spotLightRef", _volumetric: ["volumetric", "_volumetric"] }, providers: [provideNgtsSpotLightApi(), { provide: NgtsSpotLightInput, useExisting: NgtsSpotLight }], usesInheritance: true, ngImport: i0, template: `
30
- <ngt-group>
31
- <ng-container *ngIf="debug() && spotLightRef.nativeElement">
32
- <ngt-spot-light-helper *args="[spotLightRef.nativeElement]" />
33
- </ng-container>
34
- <ngt-spot-light
35
- [ref]="spotLightRef"
36
- [color]="color()"
37
- [distance]="distance()"
38
- [angle]="angle()"
39
- [castShadow]="true"
40
- ngtCompound
41
- >
42
- <ngts-volumetric-mesh *ngIf="volumetric()" />
43
- </ngt-spot-light>
44
- <ng-content />
45
- </ngt-group>
46
- `, isInline: true, dependencies: [{ kind: "component", type: NgtsVolumetricMesh, selector: "ngts-volumetric-mesh" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLight, decorators: [{
49
- type: Component,
50
- args: [{
51
- selector: 'ngts-spot-light',
52
- standalone: true,
53
- template: `
54
- <ngt-group>
55
- <ng-container *ngIf="debug() && spotLightRef.nativeElement">
56
- <ngt-spot-light-helper *args="[spotLightRef.nativeElement]" />
57
- </ng-container>
58
- <ngt-spot-light
59
- [ref]="spotLightRef"
60
- [color]="color()"
61
- [distance]="distance()"
62
- [angle]="angle()"
63
- [castShadow]="true"
64
- ngtCompound
65
- >
66
- <ngts-volumetric-mesh *ngIf="volumetric()" />
67
- </ngt-spot-light>
68
- <ng-content />
69
- </ngt-group>
70
- `,
71
- imports: [NgtsVolumetricMesh, NgIf, NgtArgs],
72
- providers: [provideNgtsSpotLightApi(), { provide: NgtsSpotLightInput, useExisting: NgtsSpotLight }],
73
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
74
- }]
75
- }], ctorParameters: function () { return []; }, propDecorators: { spotLightRef: [{
76
- type: Input
77
- }], _volumetric: [{
78
- type: Input,
79
- args: [{ alias: 'volumetric' }]
80
- }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9zcG90LWxpZ2h0L3Nwb3QtbGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFnQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUV2RCxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFXOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQyxHQUFHLG9CQUFvQixDQUNwRixDQUFDLFNBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQzdGLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUMxRCxDQUFDO0FBMkJGLE1BQU0sT0FBTyxhQUFjLFNBQVEsa0JBQWtCO0lBSXBELElBQW9DLFdBQVcsQ0FBQyxVQUFtQjtRQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQVJBLGlCQUFZLEdBQUcsWUFBWSxFQUFhLENBQUM7UUFFbEQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQU96QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDO1lBQ1YsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsQ0FBQztZQUNYLEtBQUssRUFBRSxJQUFJO1lBQ1gsV0FBVyxFQUFFLENBQUM7WUFDZCxVQUFVLEVBQUUsQ0FBQztZQUNiLEtBQUssRUFBRSxLQUFLO1NBQ1osQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FuQlcsYUFBYTtrR0FBYixhQUFhLG9KQUhkLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLENBQUMsaURBbkJ6Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQlQsNERBQ1Msa0JBQWtCLGlFQUFFLElBQUksNkZBQUUsT0FBTzs7MkZBSS9CLGFBQWE7a0JBekJ6QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJUO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxlQUFlLEVBQUUsQ0FBQztvQkFDbkcsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDOzBFQUVTLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRzhCLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIElucHV0LCBmb3J3YXJkUmVmLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGNyZWF0ZUluamVjdGlvblRva2VuLCBleHRlbmQsIGluamVjdE5ndFJlZiwgdHlwZSBOZ3RTcG90TGlnaHQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEdyb3VwLCBTcG90TGlnaHQsIFNwb3RMaWdodEhlbHBlciB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNTcG90TGlnaHRJbnB1dCwgdHlwZSBOZ3RzU3BvdExpZ2h0SW5wdXRTdGF0ZSB9IGZyb20gJy4vc3BvdC1saWdodC1pbnB1dCc7XG5pbXBvcnQgeyBOZ3RzVm9sdW1ldHJpY01lc2ggfSBmcm9tICcuL3ZvbHVtZXRyaWMtbWVzaCc7XG5cbmV4dGVuZCh7IFNwb3RMaWdodCwgU3BvdExpZ2h0SGVscGVyLCBHcm91cCB9KTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3Qtc3BvdC1saWdodFxuXHRcdCAqL1xuXHRcdCduZ3RzLXNwb3QtbGlnaHQnOiBOZ3RzU3BvdExpZ2h0SW5wdXRTdGF0ZSAmIE5ndFNwb3RMaWdodDtcblx0fVxufVxuXG5leHBvcnQgY29uc3QgW2luamVjdE5ndHNTcG90TGlnaHRBcGksIHByb3ZpZGVOZ3RzU3BvdExpZ2h0QXBpXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKFxuXHQoc3BvdExpZ2h0OiBOZ3RzU3BvdExpZ2h0KSA9PiAoeyBzcG90TGlnaHQ6IHNwb3RMaWdodC5zcG90TGlnaHRSZWYsIGRlYnVnOiBzcG90TGlnaHQuZGVidWcgfSksXG5cdHsgaXNSb290OiBmYWxzZSwgZGVwczogW2ZvcndhcmRSZWYoKCkgPT4gTmd0c1Nwb3RMaWdodCldIH0sXG4pO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNwb3QtbGlnaHQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXA+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZGVidWcoKSAmJiBzcG90TGlnaHRSZWYubmF0aXZlRWxlbWVudFwiPlxuXHRcdFx0XHQ8bmd0LXNwb3QtbGlnaHQtaGVscGVyICphcmdzPVwiW3Nwb3RMaWdodFJlZi5uYXRpdmVFbGVtZW50XVwiIC8+XG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdDxuZ3Qtc3BvdC1saWdodFxuXHRcdFx0XHRbcmVmXT1cInNwb3RMaWdodFJlZlwiXG5cdFx0XHRcdFtjb2xvcl09XCJjb2xvcigpXCJcblx0XHRcdFx0W2Rpc3RhbmNlXT1cImRpc3RhbmNlKClcIlxuXHRcdFx0XHRbYW5nbGVdPVwiYW5nbGUoKVwiXG5cdFx0XHRcdFtjYXN0U2hhZG93XT1cInRydWVcIlxuXHRcdFx0XHRuZ3RDb21wb3VuZFxuXHRcdFx0PlxuXHRcdFx0XHQ8bmd0cy12b2x1bWV0cmljLW1lc2ggKm5nSWY9XCJ2b2x1bWV0cmljKClcIiAvPlxuXHRcdFx0PC9uZ3Qtc3BvdC1saWdodD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RzVm9sdW1ldHJpY01lc2gsIE5nSWYsIE5ndEFyZ3NdLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlTmd0c1Nwb3RMaWdodEFwaSgpLCB7IHByb3ZpZGU6IE5ndHNTcG90TGlnaHRJbnB1dCwgdXNlRXhpc3Rpbmc6IE5ndHNTcG90TGlnaHQgfV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1Nwb3RMaWdodCBleHRlbmRzIE5ndHNTcG90TGlnaHRJbnB1dCB7XG5cdEBJbnB1dCgpIHNwb3RMaWdodFJlZiA9IGluamVjdE5ndFJlZjxTcG90TGlnaHQ+KCk7XG5cblx0dm9sdW1ldHJpYyA9IHNpZ25hbCh0cnVlKTtcblx0QElucHV0KHsgYWxpYXM6ICd2b2x1bWV0cmljJyB9KSBzZXQgX3ZvbHVtZXRyaWModm9sdW1ldHJpYzogYm9vbGVhbikge1xuXHRcdHRoaXMudm9sdW1ldHJpYy5zZXQodm9sdW1ldHJpYyk7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7XG5cdFx0XHRvcGFjaXR5OiAxLFxuXHRcdFx0Y29sb3I6ICd3aGl0ZScsXG5cdFx0XHRkaXN0YW5jZTogNSxcblx0XHRcdGFuZ2xlOiAwLjE1LFxuXHRcdFx0YXR0ZW51YXRpb246IDUsXG5cdFx0XHRhbmdsZVBvd2VyOiA1LFxuXHRcdFx0ZGVidWc6IGZhbHNlLFxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -1,98 +0,0 @@
1
- import { CUSTOM_ELEMENTS_SCHEMA, Component, computed, effect, inject } from '@angular/core';
2
- import { NgtArgs, extend, injectBeforeRender, injectNgtRef, injectNgtStore } from 'angular-three';
3
- import { SpotLightMaterial } from 'angular-three-soba/shaders';
4
- import * as THREE from 'three';
5
- import { Mesh } from 'three';
6
- import { NgtsSpotLightInput } from './spot-light-input';
7
- import * as i0 from "@angular/core";
8
- extend({ Mesh });
9
- export class NgtsVolumetricMesh {
10
- constructor() {
11
- this.spotLightInput = inject(NgtsSpotLightInput);
12
- this.mesh = injectNgtRef();
13
- this.material = new SpotLightMaterial();
14
- this.nullRaycast = () => null;
15
- this.vec = new THREE.Vector3();
16
- this.store = injectNgtStore();
17
- this.size = this.store.select('size');
18
- this.dpr = this.store.select('viewport', 'dpr');
19
- this.radiusTop = computed(() => {
20
- const radiusTop = this.spotLightInput.radiusTop();
21
- return radiusTop === undefined ? 0.1 : radiusTop;
22
- });
23
- this.radiusBottom = computed(() => {
24
- const [angle, radiusBottom] = [this.spotLightInput.angle(), this.spotLightInput.radiusBottom()];
25
- return radiusBottom === undefined ? angle * 7 : radiusBottom;
26
- });
27
- this.near = this.store.select('camera', 'near');
28
- this.far = this.store.select('camera', 'far');
29
- this.resolution = computed(() => this.spotLightInput.depthBuffer() ? [this.size().width * this.dpr(), this.size().height * this.dpr()] : [0, 0]);
30
- this.geometry = computed(() => {
31
- const [radiusTop, radiusBottom, distance] = [
32
- this.radiusTop(),
33
- this.radiusBottom(),
34
- this.spotLightInput.distance(),
35
- ];
36
- const geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);
37
- geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));
38
- geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));
39
- return geometry;
40
- });
41
- this.beforeRender();
42
- effect(() => {
43
- this.spotLightInput.inputs.patch({
44
- opacity: 1,
45
- color: 'white',
46
- distance: 5,
47
- angle: 0.15,
48
- attenuation: 5,
49
- anglePower: 5,
50
- });
51
- });
52
- }
53
- beforeRender() {
54
- injectBeforeRender(() => {
55
- this.material.uniforms['spotPosition'].value.copy(this.mesh.nativeElement.getWorldPosition(this.vec));
56
- this.mesh.nativeElement.lookAt(this.mesh.nativeElement.parent.target.getWorldPosition(this.vec));
57
- });
58
- }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", ngImport: i0, template: `
61
- <ngt-mesh [ref]="mesh" [geometry]="geometry()" [raycast]="nullRaycast">
62
- <ngt-primitive *args="[material]" attach="material">
63
- <ngt-value [rawValue]="spotLightInput.opacity()" attach="uniforms.opacity.value" />
64
- <ngt-value [rawValue]="spotLightInput.color()" attach="uniforms.lightColor.value" />
65
- <ngt-value [rawValue]="spotLightInput.attenuation()" attach="uniforms.attenuation.value" />
66
- <ngt-value [rawValue]="spotLightInput.anglePower()" attach="uniforms.anglePower.value" />
67
- <ngt-value [rawvalue]="spotLightInput.depthBuffer()" attach="uniforms.depth.value" />
68
- <ngt-value [rawvalue]="near()" attach="uniforms.cameraNear.value" />
69
- <ngt-value [rawvalue]="far()" attach="uniforms.cameraFar.value" />
70
- <ngt-value [rawvalue]="resolution()" attach="uniforms.resolution.value" />
71
- </ngt-primitive>
72
- </ngt-mesh>
73
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
74
- }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
76
- type: Component,
77
- args: [{
78
- selector: 'ngts-volumetric-mesh',
79
- standalone: true,
80
- template: `
81
- <ngt-mesh [ref]="mesh" [geometry]="geometry()" [raycast]="nullRaycast">
82
- <ngt-primitive *args="[material]" attach="material">
83
- <ngt-value [rawValue]="spotLightInput.opacity()" attach="uniforms.opacity.value" />
84
- <ngt-value [rawValue]="spotLightInput.color()" attach="uniforms.lightColor.value" />
85
- <ngt-value [rawValue]="spotLightInput.attenuation()" attach="uniforms.attenuation.value" />
86
- <ngt-value [rawValue]="spotLightInput.anglePower()" attach="uniforms.anglePower.value" />
87
- <ngt-value [rawvalue]="spotLightInput.depthBuffer()" attach="uniforms.depth.value" />
88
- <ngt-value [rawvalue]="near()" attach="uniforms.cameraNear.value" />
89
- <ngt-value [rawvalue]="far()" attach="uniforms.cameraFar.value" />
90
- <ngt-value [rawvalue]="resolution()" attach="uniforms.resolution.value" />
91
- </ngt-primitive>
92
- </ngt-mesh>
93
- `,
94
- imports: [NgtArgs],
95
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
96
- }]
97
- }], ctorParameters: function () { return []; } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9sdW1ldHJpYy1tZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL3Nwb3QtbGlnaHQvdm9sdW1ldHJpYy1tZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUV4RCxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBc0JqQixNQUFNLE9BQU8sa0JBQWtCO0lBc0M5QjtRQXJDQSxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzVDLFNBQUksR0FBRyxZQUFZLEVBQVEsQ0FBQztRQUM1QixhQUFRLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ25DLGdCQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBRWpCLFFBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixVQUFLLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDekIsU0FBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLFFBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1B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LGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQWMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0csQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXpEVyxrQkFBa0I7a0dBQWxCLGtCQUFrQixnRkFqQnBCOzs7Ozs7Ozs7Ozs7O0VBYVQsNERBQ1MsT0FBTzs7MkZBR0wsa0JBQWtCO2tCQXBCOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0VBYVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdE5ndFJlZiwgaW5qZWN0Tmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFNwb3RMaWdodE1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTWVzaCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNTcG90TGlnaHRJbnB1dCB9IGZyb20gJy4vc3BvdC1saWdodC1pbnB1dCc7XG5cbmV4dGVuZCh7IE1lc2ggfSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtdm9sdW1ldHJpYy1tZXNoJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2ggW3JlZl09XCJtZXNoXCIgW2dlb21ldHJ5XT1cImdlb21ldHJ5KClcIiBbcmF5Y2FzdF09XCJudWxsUmF5Y2FzdFwiPlxuXHRcdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbbWF0ZXJpYWxdXCIgYXR0YWNoPVwibWF0ZXJpYWxcIj5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwic3BvdExpZ2h0SW5wdXQub3BhY2l0eSgpXCIgYXR0YWNoPVwidW5pZm9ybXMub3BhY2l0eS52YWx1ZVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInNwb3RMaWdodElucHV0LmNvbG9yKClcIiBhdHRhY2g9XCJ1bmlmb3Jtcy5saWdodENvbG9yLnZhbHVlXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwic3BvdExpZ2h0SW5wdXQuYXR0ZW51YXRpb24oKVwiIGF0dGFjaD1cInVuaWZvcm1zLmF0dGVudWF0aW9uLnZhbHVlXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwic3BvdExpZ2h0SW5wdXQuYW5nbGVQb3dlcigpXCIgYXR0YWNoPVwidW5pZm9ybXMuYW5nbGVQb3dlci52YWx1ZVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cInNwb3RMaWdodElucHV0LmRlcHRoQnVmZmVyKClcIiBhdHRhY2g9XCJ1bmlmb3Jtcy5kZXB0aC52YWx1ZVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cIm5lYXIoKVwiIGF0dGFjaD1cInVuaWZvcm1zLmNhbWVyYU5lYXIudmFsdWVcIiAvPlxuXHRcdFx0XHQ8bmd0LXZhbHVlIFtyYXd2YWx1ZV09XCJmYXIoKVwiIGF0dGFjaD1cInVuaWZvcm1zLmNhbWVyYUZhci52YWx1ZVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cInJlc29sdXRpb24oKVwiIGF0dGFjaD1cInVuaWZvcm1zLnJlc29sdXRpb24udmFsdWVcIiAvPlxuXHRcdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzVm9sdW1ldHJpY01lc2gge1xuXHRzcG90TGlnaHRJbnB1dCA9IGluamVjdChOZ3RzU3BvdExpZ2h0SW5wdXQpO1xuXHRtZXNoID0gaW5qZWN0Tmd0UmVmPE1lc2g+KCk7XG5cdG1hdGVyaWFsID0gbmV3IFNwb3RMaWdodE1hdGVyaWFsKCk7XG5cdG51bGxSYXljYXN0ID0gKCkgPT4gbnVsbDtcblxuXHRwcml2YXRlIHZlYyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXHRwcml2YXRlIHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXHRwcml2YXRlIGRwciA9IHRoaXMuc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcsICdkcHInKTtcblxuXHRwcml2YXRlIHJhZGl1c1RvcCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCByYWRpdXNUb3AgPSB0aGlzLnNwb3RMaWdodElucHV0LnJhZGl1c1RvcCgpO1xuXHRcdHJldHVybiByYWRpdXNUb3AgPT09IHVuZGVmaW5lZCA/IDAuMSA6IHJhZGl1c1RvcDtcblx0fSk7XG5cdHByaXZhdGUgcmFkaXVzQm90dG9tID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFthbmdsZSwgcmFkaXVzQm90dG9tXSA9IFt0aGlzLnNwb3RMaWdodElucHV0LmFuZ2xlKCksIHRoaXMuc3BvdExpZ2h0SW5wdXQucmFkaXVzQm90dG9tKCldO1xuXHRcdHJldHVybiByYWRpdXNCb3R0b20gPT09IHVuZGVmaW5lZCA/IGFuZ2xlICogNyA6IHJhZGl1c0JvdHRvbTtcblx0fSk7XG5cblx0bmVhciA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnLCAnbmVhcicpO1xuXHRmYXIgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJywgJ2ZhcicpO1xuXHRyZXNvbHV0aW9uID0gY29tcHV0ZWQoKCkgPT5cblx0XHR0aGlzLnNwb3RMaWdodElucHV0LmRlcHRoQnVmZmVyKCkgPyBbdGhpcy5zaXplKCkud2lkdGggKiB0aGlzLmRwcigpLCB0aGlzLnNpemUoKS5oZWlnaHQgKiB0aGlzLmRwcigpXSA6IFswLCAwXSxcblx0KTtcblx0Z2VvbWV0cnkgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW3JhZGl1c1RvcCwgcmFkaXVzQm90dG9tLCBkaXN0YW5jZV0gPSBbXG5cdFx0XHR0aGlzLnJhZGl1c1RvcCgpLFxuXHRcdFx0dGhpcy5yYWRpdXNCb3R0b20oKSxcblx0XHRcdHRoaXMuc3BvdExpZ2h0SW5wdXQuZGlzdGFuY2UoKSxcblx0XHRdO1xuXG5cdFx0Y29uc3QgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuQ3lsaW5kZXJHZW9tZXRyeShyYWRpdXNUb3AsIHJhZGl1c0JvdHRvbSwgZGlzdGFuY2UsIDEyOCwgNjQsIHRydWUpO1xuXHRcdGdlb21ldHJ5LmFwcGx5TWF0cml4NChuZXcgVEhSRUUuTWF0cml4NCgpLm1ha2VUcmFuc2xhdGlvbigwLCAtZGlzdGFuY2UgLyAyLCAwKSk7XG5cdFx0Z2VvbWV0cnkuYXBwbHlNYXRyaXg0KG5ldyBUSFJFRS5NYXRyaXg0KCkubWFrZVJvdGF0aW9uWCgtTWF0aC5QSSAvIDIpKTtcblx0XHRyZXR1cm4gZ2VvbWV0cnk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHRoaXMuc3BvdExpZ2h0SW5wdXQuaW5wdXRzLnBhdGNoKHtcblx0XHRcdFx0b3BhY2l0eTogMSxcblx0XHRcdFx0Y29sb3I6ICd3aGl0ZScsXG5cdFx0XHRcdGRpc3RhbmNlOiA1LFxuXHRcdFx0XHRhbmdsZTogMC4xNSxcblx0XHRcdFx0YXR0ZW51YXRpb246IDUsXG5cdFx0XHRcdGFuZ2xlUG93ZXI6IDUsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgYmVmb3JlUmVuZGVyKCkge1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLm1hdGVyaWFsLnVuaWZvcm1zWydzcG90UG9zaXRpb24nXS52YWx1ZS5jb3B5KHRoaXMubWVzaC5uYXRpdmVFbGVtZW50LmdldFdvcmxkUG9zaXRpb24odGhpcy52ZWMpKTtcblx0XHRcdHRoaXMubWVzaC5uYXRpdmVFbGVtZW50Lmxvb2tBdCgodGhpcy5tZXNoLm5hdGl2ZUVsZW1lbnQucGFyZW50IGFzIGFueSkudGFyZ2V0LmdldFdvcmxkUG9zaXRpb24odGhpcy52ZWMpKTtcblx0XHR9KTtcblx0fVxufVxuIl19