angular-three-soba 2.0.0-beta.2 → 2.0.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/abstractions/billboard/billboard.d.ts +11 -7
  2. package/abstractions/detailed/detailed.d.ts +26 -0
  3. package/abstractions/edges/edges.d.ts +24 -12
  4. package/abstractions/grid/grid.d.ts +50 -0
  5. package/abstractions/index.d.ts +2 -7
  6. package/abstractions/text/text.d.ts +10 -5
  7. package/abstractions/text-3d/text-3d.d.ts +51 -41
  8. package/cameras/camera/camera-content.d.ts +1 -1
  9. package/cameras/camera/camera.d.ts +16 -13
  10. package/cameras/cube-camera/cube-camera.d.ts +50 -23
  11. package/cameras/index.d.ts +0 -1
  12. package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
  13. package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
  14. package/controls/orbit-controls/orbit-controls.d.ts +31 -12
  15. package/esm2022/abstractions/billboard/billboard.mjs +36 -33
  16. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  17. package/esm2022/abstractions/edges/edges.mjs +58 -63
  18. package/esm2022/abstractions/grid/grid.mjs +180 -0
  19. package/esm2022/abstractions/index.mjs +3 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -124
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +120 -115
  22. package/esm2022/cameras/camera/camera-content.mjs +6 -6
  23. package/esm2022/cameras/camera/camera.mjs +48 -42
  24. package/esm2022/cameras/cube-camera/cube-camera.mjs +129 -99
  25. package/esm2022/cameras/index.mjs +1 -2
  26. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
  27. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
  28. package/esm2022/controls/orbit-controls/orbit-controls.mjs +105 -85
  29. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  30. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +197 -0
  31. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  32. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
  33. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +150 -0
  34. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
  35. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
  36. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
  37. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
  38. package/esm2022/gizmos/index.mjs +4 -0
  39. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
  40. package/esm2022/loaders/loader/loader.mjs +92 -87
  41. package/esm2022/loaders/progress/progress.mjs +29 -29
  42. package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
  43. package/esm2022/materials/index.mjs +2 -1
  44. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  45. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  46. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +102 -99
  47. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  48. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  49. package/esm2022/materials/point-material/point-material.mjs +50 -0
  50. package/esm2022/misc/animations/animations.mjs +36 -32
  51. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  52. package/esm2022/misc/caustics/caustics.mjs +387 -0
  53. package/esm2022/misc/decal/decal.mjs +187 -0
  54. package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
  55. package/esm2022/misc/example/example.mjs +160 -0
  56. package/esm2022/misc/fbo/fbo.mjs +35 -35
  57. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  58. package/esm2022/misc/html/html.mjs +304 -0
  59. package/esm2022/misc/index.mjs +10 -1
  60. package/esm2022/misc/sampler/sampler.mjs +142 -0
  61. package/esm2022/misc/shadow/shadow.mjs +111 -0
  62. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  63. package/esm2022/misc/trail/trail.mjs +209 -0
  64. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  65. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  66. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  67. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  68. package/esm2022/modifiers/index.mjs +2 -0
  69. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  70. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  71. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  72. package/esm2022/performances/index.mjs +8 -0
  73. package/esm2022/performances/instances/instances.mjs +220 -0
  74. package/esm2022/performances/instances/position-mesh.mjs +52 -0
  75. package/esm2022/performances/points/points-input.mjs +64 -0
  76. package/esm2022/performances/points/points.mjs +326 -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/blur-pass/blur-pass.mjs +2 -2
  81. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  82. package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
  83. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  84. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  85. package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
  86. package/esm2022/shaders/index.mjs +6 -3
  87. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  88. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +2 -2
  89. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
  90. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
  91. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  92. package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
  93. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
  94. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  95. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
  96. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  97. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  98. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
  99. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
  100. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
  101. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  102. package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
  103. package/esm2022/staging/bounds/bounds.mjs +144 -143
  104. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  105. package/esm2022/staging/center/center.mjs +129 -112
  106. package/esm2022/staging/cloud/cloud.mjs +118 -124
  107. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
  108. package/esm2022/staging/environment/assets.mjs +12 -12
  109. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  110. package/esm2022/staging/environment/environment-ground.mjs +17 -19
  111. package/esm2022/staging/environment/environment-input.mjs +98 -85
  112. package/esm2022/staging/environment/environment-map.mjs +33 -33
  113. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  114. package/esm2022/staging/environment/environment.mjs +34 -51
  115. package/esm2022/staging/environment/utils.mjs +37 -15
  116. package/esm2022/staging/float/float.mjs +70 -58
  117. package/esm2022/staging/index.mjs +7 -3
  118. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  119. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  120. package/esm2022/staging/sky/sky.mjs +85 -80
  121. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  122. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  123. package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  125. package/esm2022/staging/spot-light/spot-light.mjs +51 -64
  126. package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
  127. package/esm2022/staging/stage/stage.mjs +305 -290
  128. package/esm2022/staging/stars/stars.mjs +101 -102
  129. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  130. package/esm2022/staging/wireframe/wireframe.mjs +228 -0
  131. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  132. package/esm2022/utils/content/content.mjs +15 -0
  133. package/esm2022/utils/index.mjs +2 -0
  134. package/fesm2022/angular-three-soba-abstractions.mjs +514 -1947
  135. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  136. package/fesm2022/angular-three-soba-cameras.mjs +302 -259
  137. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  138. package/fesm2022/angular-three-soba-controls.mjs +104 -83
  139. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-gizmos.mjs +1043 -0
  141. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  142. package/fesm2022/angular-three-soba-loaders.mjs +121 -117
  143. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  144. package/fesm2022/angular-three-soba-materials.mjs +662 -592
  145. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  146. package/fesm2022/angular-three-soba-misc.mjs +2214 -105
  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 +956 -0
  151. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  152. package/fesm2022/angular-three-soba-shaders.mjs +549 -252
  153. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  154. package/fesm2022/angular-three-soba-staging.mjs +2899 -2563
  155. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  156. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  157. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  158. package/gizmos/README.md +3 -0
  159. package/gizmos/gizmo-helper/gizmo-helper.d.ts +69 -0
  160. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  161. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
  162. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
  163. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
  164. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
  165. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
  166. package/gizmos/index.d.ts +3 -0
  167. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  168. package/loaders/loader/loader.d.ts +19 -17
  169. package/loaders/progress/progress.d.ts +1 -1
  170. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  171. package/materials/index.d.ts +1 -0
  172. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  173. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  174. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  175. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  176. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  177. package/materials/point-material/point-material.d.ts +24 -0
  178. package/metadata.json +1 -0
  179. package/misc/animations/animations.d.ts +6 -4
  180. package/misc/caustics/caustics.d.ts +87 -0
  181. package/misc/decal/decal.d.ts +49 -0
  182. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  183. package/misc/example/example.d.ts +81 -0
  184. package/misc/fbo/fbo.d.ts +2 -2
  185. package/misc/html/html-wrapper.d.ts +559 -0
  186. package/misc/html/html.d.ts +214 -0
  187. package/misc/index.d.ts +9 -0
  188. package/misc/sampler/sampler.d.ts +67 -0
  189. package/misc/shadow/shadow.d.ts +37 -0
  190. package/misc/stats-gl/stats-gl.d.ts +24 -0
  191. package/misc/trail/trail.d.ts +57 -0
  192. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  193. package/misc/trail-texture/trail-texture.d.ts +50 -0
  194. package/modifiers/README.md +3 -0
  195. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  196. package/modifiers/index.d.ts +1 -0
  197. package/package.json +31 -16
  198. package/performances/README.md +3 -0
  199. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  200. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  201. package/performances/index.d.ts +7 -0
  202. package/performances/instances/instances.d.ts +79 -0
  203. package/{performance → performances}/instances/position-mesh.d.ts +1 -1
  204. package/performances/points/points-input.d.ts +32 -0
  205. package/performances/points/points.d.ts +92 -0
  206. package/performances/points/position-point.d.ts +11 -0
  207. package/performances/segments/segment-object.d.ts +7 -0
  208. package/performances/segments/segments.d.ts +124 -0
  209. package/shaders/grid-material/grid-material.d.ts +37 -0
  210. package/shaders/index.d.ts +5 -2
  211. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +147 -2
  212. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  213. package/shaders/shader-material/shader-material.d.ts +2 -2
  214. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  215. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  216. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  217. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  218. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  219. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  220. package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
  221. package/staging/backdrop/backdrop.d.ts +30 -0
  222. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  223. package/staging/bounds/bounds.d.ts +100 -24
  224. package/staging/camera-shake/camera-shake.d.ts +30 -19
  225. package/staging/center/center.d.ts +43 -35
  226. package/staging/cloud/cloud.d.ts +26 -23
  227. package/staging/contact-shadows/contact-shadows.d.ts +41 -28
  228. package/staging/environment/assets.d.ts +9 -9
  229. package/staging/environment/environment-cube.d.ts +9 -5
  230. package/staging/environment/environment-ground.d.ts +7 -7
  231. package/staging/environment/environment-input.d.ts +37 -37
  232. package/staging/environment/environment-map.d.ts +10 -5
  233. package/staging/environment/environment-portal.d.ts +10 -5
  234. package/staging/environment/environment.d.ts +0 -4
  235. package/staging/environment/utils.d.ts +2 -2
  236. package/staging/float/float.d.ts +14 -10
  237. package/staging/index.d.ts +6 -2
  238. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  239. package/staging/normal-texture/normal-texture.d.ts +16 -0
  240. package/staging/sky/sky.d.ts +28 -21
  241. package/staging/sparkles/sparkles.d.ts +36 -22
  242. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  243. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  244. package/staging/spot-light/spot-light-input.d.ts +25 -25
  245. package/staging/spot-light/spot-light.d.ts +31 -15
  246. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  247. package/staging/stage/stage.d.ts +89 -65
  248. package/staging/stars/stars.d.ts +28 -17
  249. package/staging/wireframe/wireframe-input.d.ts +65 -0
  250. package/staging/wireframe/wireframe.d.ts +28 -0
  251. package/utils/README.md +3 -0
  252. package/utils/content/content.d.ts +8 -0
  253. package/utils/index.d.ts +1 -0
  254. package/web-types.json +1 -0
  255. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  256. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  257. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  258. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  259. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  260. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  261. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  262. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  263. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  264. package/abstractions/line/line-input.d.ts +0 -42
  265. package/abstractions/line/line.d.ts +0 -35
  266. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  267. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  268. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  269. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  270. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  271. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  272. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  273. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  274. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  275. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  276. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  277. package/esm2022/abstractions/line/line-input.mjs +0 -113
  278. package/esm2022/abstractions/line/line.mjs +0 -165
  279. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  280. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  281. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  282. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  283. package/esm2022/performance/detailed/detailed.mjs +0 -61
  284. package/esm2022/performance/index.mjs +0 -7
  285. package/esm2022/performance/instances/instance.mjs +0 -48
  286. package/esm2022/performance/instances/instances.mjs +0 -189
  287. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  288. package/esm2022/performance/stats/stats.mjs +0 -79
  289. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  290. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  291. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  292. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  293. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
  294. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  295. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  296. package/performance/README.md +0 -3
  297. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  298. package/performance/detailed/detailed.d.ts +0 -20
  299. package/performance/index.d.ts +0 -6
  300. package/performance/instances/instance.d.ts +0 -9
  301. package/performance/instances/instances.d.ts +0 -35
  302. package/performance/stats/stats.d.ts +0 -18
  303. package/plugin/generators.json +0 -19
  304. package/plugin/libs/plugin/README.md +0 -11
  305. package/plugin/package.json +0 -9
  306. package/plugin/src/generators/init/compat.d.ts +0 -2
  307. package/plugin/src/generators/init/compat.js +0 -6
  308. package/plugin/src/generators/init/compat.js.map +0 -1
  309. package/plugin/src/generators/init/init.d.ts +0 -4
  310. package/plugin/src/generators/init/init.js +0 -22
  311. package/plugin/src/generators/init/init.js.map +0 -1
  312. package/plugin/src/generators/init/schema.json +0 -6
  313. package/plugin/src/index.d.ts +0 -1
  314. package/plugin/src/index.js +0 -6
  315. package/plugin/src/index.js.map +0 -1
  316. package/staging/caustics/caustisc.d.ts +0 -70
  317. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  318. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  319. /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
  320. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  321. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -1,94 +1,81 @@
1
1
  import { NgIf } from '@angular/common';
2
- import { CUSTOM_ELEMENTS_SCHEMA, Component, InjectionToken, Input } from '@angular/core';
3
- import { NgtArgs, extend, injectNgtRef } from 'angular-three';
2
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, forwardRef, signal } from '@angular/core';
3
+ import { NgtArgs, createInjectionToken, extend, injectNgtRef } from 'angular-three';
4
4
  import { Group, SpotLight, SpotLightHelper } from 'three';
5
5
  import { NgtsSpotLightInput } from './spot-light-input';
6
6
  import { NgtsVolumetricMesh } from './volumetric-mesh';
7
7
  import * as i0 from "@angular/core";
8
8
  extend({ SpotLight, SpotLightHelper, Group });
9
- export const NGTS_SPOT_LIGHT_API = new InjectionToken('NgtsSpotLight API');
10
- function spotLightApiFactory(spotLight) {
11
- return {
12
- spotLight: spotLight.spotLightRef,
13
- debug: spotLight.lightDebug,
14
- };
15
- }
16
- class NgtsSpotLight extends NgtsSpotLightInput {
17
- set volumetric(volumetric) {
18
- this.set({ volumetric });
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);
19
13
  }
20
14
  constructor() {
21
15
  super();
22
16
  this.spotLightRef = injectNgtRef();
23
- this.showVolumetric = this.select('volumetric');
24
- this.set({
17
+ this.volumetric = signal(true);
18
+ this.inputs.set({
25
19
  opacity: 1,
26
20
  color: 'white',
27
21
  distance: 5,
28
22
  angle: 0.15,
29
23
  attenuation: 5,
30
24
  anglePower: 5,
31
- volumetric: true,
32
25
  debug: false,
33
26
  });
34
27
  }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSpotLight, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSpotLight, isStandalone: true, selector: "ngts-spot-light", inputs: { spotLightRef: "spotLightRef", volumetric: "volumetric" }, providers: [
37
- { provide: NGTS_SPOT_LIGHT_API, useFactory: spotLightApiFactory, deps: [NgtsSpotLight] },
38
- { provide: NgtsSpotLightInput, useExisting: NgtsSpotLight },
39
- ], usesInheritance: true, ngImport: i0, template: `
40
- <ngt-group>
41
- <ng-container *ngIf="lightDebug() && spotLightRef.nativeElement">
42
- <ngt-spot-light-helper *args="[spotLightRef.nativeElement]" />
43
- </ng-container>
44
- <ngt-spot-light
45
- [ref]="spotLightRef"
46
- [color]="lightColor()"
47
- [distance]="lightDistance()"
48
- [angle]="lightAngle()"
49
- [castShadow]="true"
50
- ngtCompound
51
- >
52
- <ngts-volumetric-mesh *ngIf="showVolumetric()" />
53
- </ngt-spot-light>
54
- <ng-content />
55
- </ngt-group>
56
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "component", type: NgtsVolumetricMesh, selector: "ngts-volumetric-mesh" }] }); }
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"] }] }); }
57
47
  }
58
- export { NgtsSpotLight };
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSpotLight, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSpotLight, decorators: [{
60
49
  type: Component,
61
50
  args: [{
62
51
  selector: 'ngts-spot-light',
63
52
  standalone: true,
64
53
  template: `
65
- <ngt-group>
66
- <ng-container *ngIf="lightDebug() && spotLightRef.nativeElement">
67
- <ngt-spot-light-helper *args="[spotLightRef.nativeElement]" />
68
- </ng-container>
69
- <ngt-spot-light
70
- [ref]="spotLightRef"
71
- [color]="lightColor()"
72
- [distance]="lightDistance()"
73
- [angle]="lightAngle()"
74
- [castShadow]="true"
75
- ngtCompound
76
- >
77
- <ngts-volumetric-mesh *ngIf="showVolumetric()" />
78
- </ngt-spot-light>
79
- <ng-content />
80
- </ngt-group>
81
- `,
82
- providers: [
83
- { provide: NGTS_SPOT_LIGHT_API, useFactory: spotLightApiFactory, deps: [NgtsSpotLight] },
84
- { provide: NgtsSpotLightInput, useExisting: NgtsSpotLight },
85
- ],
86
- imports: [NgIf, NgtArgs, NgtsVolumetricMesh],
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 }],
87
73
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
88
74
  }]
89
75
  }], ctorParameters: function () { return []; }, propDecorators: { spotLightRef: [{
90
76
  type: Input
91
- }], volumetric: [{
92
- type: Input
77
+ }], _volumetric: [{
78
+ type: Input,
79
+ args: [{ alias: 'volumetric' }]
93
80
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9zcG90LWxpZ2h0L3Nwb3QtbGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFrQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFdkQsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBYTlDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFtQixtQkFBbUIsQ0FBQyxDQUFDO0FBRTdGLFNBQVMsbUJBQW1CLENBQUMsU0FBd0I7SUFDakQsT0FBTztRQUNILFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWTtRQUNqQyxLQUFLLEVBQUUsU0FBUyxDQUFDLFVBQVU7S0FDOUIsQ0FBQztBQUNOLENBQUM7QUFFRCxNQTRCYSxhQUFjLFNBQVEsa0JBQWtCO0lBR2pELElBQWEsVUFBVSxDQUFDLFVBQW1CO1FBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFJRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBVEgsaUJBQVksR0FBRyxZQUFZLEVBQW1CLENBQUM7UUFNL0MsbUJBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBSWhELElBQUksQ0FBQyxHQUFHLENBQUM7WUFDTCxPQUFPLEVBQUUsQ0FBQztZQUNWLEtBQUssRUFBRSxPQUFPO1lBQ2QsUUFBUSxFQUFFLENBQUM7WUFDWCxLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxDQUFDO1lBQ2QsVUFBVSxFQUFFLENBQUM7WUFDYixVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsS0FBSztTQUNmLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBckJRLGFBQWE7a0dBQWIsYUFBYSxrSUFQWDtZQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN4RixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFO1NBQzlELGlEQXJCUzs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQlQsNERBS1MsSUFBSSw2RkFBRSxPQUFPLHFFQUFFLGtCQUFrQjs7U0FHbEMsYUFBYTsyRkFBYixhQUFhO2tCQTVCekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztLQWlCVDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUU7d0JBQ3hGLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsZUFBZSxFQUFFO3FCQUM5RDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDO29CQUM1QyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBRVksWUFBWTtzQkFBcEIsS0FBSztnQkFFTyxVQUFVO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIEluamVjdGlvblRva2VuLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0SW5qZWN0ZWRSZWYsIGV4dGVuZCwgaW5qZWN0Tmd0UmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBHcm91cCwgU3BvdExpZ2h0LCBTcG90TGlnaHRIZWxwZXIgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzU3BvdExpZ2h0SW5wdXQgfSBmcm9tICcuL3Nwb3QtbGlnaHQtaW5wdXQnO1xuaW1wb3J0IHsgTmd0c1ZvbHVtZXRyaWNNZXNoIH0gZnJvbSAnLi92b2x1bWV0cmljLW1lc2gnO1xuXG5leHRlbmQoeyBTcG90TGlnaHQsIFNwb3RMaWdodEhlbHBlciwgR3JvdXAgfSk7XG5cbmRlY2xhcmUgbW9kdWxlICcuL3Nwb3QtbGlnaHQtaW5wdXQnIHtcbiAgICBpbnRlcmZhY2UgTmd0c1Nwb3RMaWdodElucHV0U3RhdGUge1xuICAgICAgICB2b2x1bWV0cmljOiBib29sZWFuO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgTmd0c1Nwb3RMaWdodEFwaSA9IHtcbiAgICBzcG90TGlnaHQ6IE5ndEluamVjdGVkUmVmPFRIUkVFLlNwb3RMaWdodD47XG4gICAgZGVidWc6ICgpID0+IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgTkdUU19TUE9UX0xJR0hUX0FQSSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3RzU3BvdExpZ2h0QXBpPignTmd0c1Nwb3RMaWdodCBBUEknKTtcblxuZnVuY3Rpb24gc3BvdExpZ2h0QXBpRmFjdG9yeShzcG90TGlnaHQ6IE5ndHNTcG90TGlnaHQpOiBOZ3RzU3BvdExpZ2h0QXBpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzcG90TGlnaHQ6IHNwb3RMaWdodC5zcG90TGlnaHRSZWYsXG4gICAgICAgIGRlYnVnOiBzcG90TGlnaHQubGlnaHREZWJ1ZyxcbiAgICB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc3BvdC1saWdodCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LWdyb3VwPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpZ2h0RGVidWcoKSAmJiBzcG90TGlnaHRSZWYubmF0aXZlRWxlbWVudFwiPlxuICAgICAgICAgICAgICAgIDxuZ3Qtc3BvdC1saWdodC1oZWxwZXIgKmFyZ3M9XCJbc3BvdExpZ2h0UmVmLm5hdGl2ZUVsZW1lbnRdXCIgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5ndC1zcG90LWxpZ2h0XG4gICAgICAgICAgICAgICAgW3JlZl09XCJzcG90TGlnaHRSZWZcIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJsaWdodENvbG9yKClcIlxuICAgICAgICAgICAgICAgIFtkaXN0YW5jZV09XCJsaWdodERpc3RhbmNlKClcIlxuICAgICAgICAgICAgICAgIFthbmdsZV09XCJsaWdodEFuZ2xlKClcIlxuICAgICAgICAgICAgICAgIFtjYXN0U2hhZG93XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIG5ndENvbXBvdW5kXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5ndHMtdm9sdW1ldHJpYy1tZXNoICpuZ0lmPVwic2hvd1ZvbHVtZXRyaWMoKVwiIC8+XG4gICAgICAgICAgICA8L25ndC1zcG90LWxpZ2h0PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBOR1RTX1NQT1RfTElHSFRfQVBJLCB1c2VGYWN0b3J5OiBzcG90TGlnaHRBcGlGYWN0b3J5LCBkZXBzOiBbTmd0c1Nwb3RMaWdodF0gfSxcbiAgICAgICAgeyBwcm92aWRlOiBOZ3RzU3BvdExpZ2h0SW5wdXQsIHVzZUV4aXN0aW5nOiBOZ3RzU3BvdExpZ2h0IH0sXG4gICAgXSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmd0QXJncywgTmd0c1ZvbHVtZXRyaWNNZXNoXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcG90TGlnaHQgZXh0ZW5kcyBOZ3RzU3BvdExpZ2h0SW5wdXQge1xuICAgIEBJbnB1dCgpIHNwb3RMaWdodFJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5TcG90TGlnaHQ+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgdm9sdW1ldHJpYyh2b2x1bWV0cmljOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgdm9sdW1ldHJpYyB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSBzaG93Vm9sdW1ldHJpYyA9IHRoaXMuc2VsZWN0KCd2b2x1bWV0cmljJyk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgZGlzdGFuY2U6IDUsXG4gICAgICAgICAgICBhbmdsZTogMC4xNSxcbiAgICAgICAgICAgIGF0dGVudWF0aW9uOiA1LFxuICAgICAgICAgICAgYW5nbGVQb3dlcjogNSxcbiAgICAgICAgICAgIHZvbHVtZXRyaWM6IHRydWUsXG4gICAgICAgICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9zcG90LWxpZ2h0L3Nwb3QtbGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFnQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUV2RCxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFXOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQyxHQUFHLG9CQUFvQixDQUNwRixDQUFDLFNBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQzdGLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUMxRCxDQUFDO0FBMkJGLE1BQU0sT0FBTyxhQUFjLFNBQVEsa0JBQWtCO0lBSXBELElBQW9DLFdBQVcsQ0FBQyxVQUFtQjtRQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQVJBLGlCQUFZLEdBQUcsWUFBWSxFQUFhLENBQUM7UUFFbEQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQU96QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDO1lBQ1YsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsQ0FBQztZQUNYLEtBQUssRUFBRSxJQUFJO1lBQ1gsV0FBVyxFQUFFLENBQUM7WUFDZCxVQUFVLEVBQUUsQ0FBQztZQUNiLEtBQUssRUFBRSxLQUFLO1NBQ1osQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FuQlcsYUFBYTtrR0FBYixhQUFhLG9KQUhkLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLENBQUMsaURBbkJ6Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQlQsNERBQ1Msa0JBQWtCLGlFQUFFLElBQUksNkZBQUUsT0FBTzs7MkZBSS9CLGFBQWE7a0JBekJ6QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJUO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxlQUFlLEVBQUUsQ0FBQztvQkFDbkcsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDOzBFQUVTLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRzhCLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIElucHV0LCBmb3J3YXJkUmVmLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGNyZWF0ZUluamVjdGlvblRva2VuLCBleHRlbmQsIGluamVjdE5ndFJlZiwgdHlwZSBOZ3RTcG90TGlnaHQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEdyb3VwLCBTcG90TGlnaHQsIFNwb3RMaWdodEhlbHBlciB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNTcG90TGlnaHRJbnB1dCwgdHlwZSBOZ3RzU3BvdExpZ2h0SW5wdXRTdGF0ZSB9IGZyb20gJy4vc3BvdC1saWdodC1pbnB1dCc7XG5pbXBvcnQgeyBOZ3RzVm9sdW1ldHJpY01lc2ggfSBmcm9tICcuL3ZvbHVtZXRyaWMtbWVzaCc7XG5cbmV4dGVuZCh7IFNwb3RMaWdodCwgU3BvdExpZ2h0SGVscGVyLCBHcm91cCB9KTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3Qtc3BvdC1saWdodFxuXHRcdCAqL1xuXHRcdCduZ3RzLXNwb3QtbGlnaHQnOiBOZ3RzU3BvdExpZ2h0SW5wdXRTdGF0ZSAmIE5ndFNwb3RMaWdodDtcblx0fVxufVxuXG5leHBvcnQgY29uc3QgW2luamVjdE5ndHNTcG90TGlnaHRBcGksIHByb3ZpZGVOZ3RzU3BvdExpZ2h0QXBpXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKFxuXHQoc3BvdExpZ2h0OiBOZ3RzU3BvdExpZ2h0KSA9PiAoeyBzcG90TGlnaHQ6IHNwb3RMaWdodC5zcG90TGlnaHRSZWYsIGRlYnVnOiBzcG90TGlnaHQuZGVidWcgfSksXG5cdHsgaXNSb290OiBmYWxzZSwgZGVwczogW2ZvcndhcmRSZWYoKCkgPT4gTmd0c1Nwb3RMaWdodCldIH0sXG4pO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNwb3QtbGlnaHQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXA+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZGVidWcoKSAmJiBzcG90TGlnaHRSZWYubmF0aXZlRWxlbWVudFwiPlxuXHRcdFx0XHQ8bmd0LXNwb3QtbGlnaHQtaGVscGVyICphcmdzPVwiW3Nwb3RMaWdodFJlZi5uYXRpdmVFbGVtZW50XVwiIC8+XG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdDxuZ3Qtc3BvdC1saWdodFxuXHRcdFx0XHRbcmVmXT1cInNwb3RMaWdodFJlZlwiXG5cdFx0XHRcdFtjb2xvcl09XCJjb2xvcigpXCJcblx0XHRcdFx0W2Rpc3RhbmNlXT1cImRpc3RhbmNlKClcIlxuXHRcdFx0XHRbYW5nbGVdPVwiYW5nbGUoKVwiXG5cdFx0XHRcdFtjYXN0U2hhZG93XT1cInRydWVcIlxuXHRcdFx0XHRuZ3RDb21wb3VuZFxuXHRcdFx0PlxuXHRcdFx0XHQ8bmd0cy12b2x1bWV0cmljLW1lc2ggKm5nSWY9XCJ2b2x1bWV0cmljKClcIiAvPlxuXHRcdFx0PC9uZ3Qtc3BvdC1saWdodD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RzVm9sdW1ldHJpY01lc2gsIE5nSWYsIE5ndEFyZ3NdLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlTmd0c1Nwb3RMaWdodEFwaSgpLCB7IHByb3ZpZGU6IE5ndHNTcG90TGlnaHRJbnB1dCwgdXNlRXhpc3Rpbmc6IE5ndHNTcG90TGlnaHQgfV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1Nwb3RMaWdodCBleHRlbmRzIE5ndHNTcG90TGlnaHRJbnB1dCB7XG5cdEBJbnB1dCgpIHNwb3RMaWdodFJlZiA9IGluamVjdE5ndFJlZjxTcG90TGlnaHQ+KCk7XG5cblx0dm9sdW1ldHJpYyA9IHNpZ25hbCh0cnVlKTtcblx0QElucHV0KHsgYWxpYXM6ICd2b2x1bWV0cmljJyB9KSBzZXQgX3ZvbHVtZXRyaWModm9sdW1ldHJpYzogYm9vbGVhbikge1xuXHRcdHRoaXMudm9sdW1ldHJpYy5zZXQodm9sdW1ldHJpYyk7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7XG5cdFx0XHRvcGFjaXR5OiAxLFxuXHRcdFx0Y29sb3I6ICd3aGl0ZScsXG5cdFx0XHRkaXN0YW5jZTogNSxcblx0XHRcdGFuZ2xlOiAwLjE1LFxuXHRcdFx0YXR0ZW51YXRpb246IDUsXG5cdFx0XHRhbmdsZVBvd2VyOiA1LFxuXHRcdFx0ZGVidWc6IGZhbHNlLFxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -1,101 +1,98 @@
1
- import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';
2
- import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtStore } from 'angular-three';
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, computed, effect, inject } from '@angular/core';
2
+ import { NgtArgs, extend, injectBeforeRender, injectNgtRef, injectNgtStore } from 'angular-three';
3
3
  import { SpotLightMaterial } from 'angular-three-soba/shaders';
4
4
  import * as THREE from 'three';
5
5
  import { Mesh } from 'three';
6
6
  import { NgtsSpotLightInput } from './spot-light-input';
7
7
  import * as i0 from "@angular/core";
8
8
  extend({ Mesh });
9
- class NgtsVolumetricMesh {
10
- #vec;
11
- #store;
12
- #camera;
13
- #size;
14
- #dpr;
15
- #normalizedRadiusTop;
16
- #normalizedRadiusBottom;
9
+ export class NgtsVolumetricMesh {
17
10
  constructor() {
18
11
  this.spotLightInput = inject(NgtsSpotLightInput);
19
12
  this.mesh = injectNgtRef();
20
13
  this.material = new SpotLightMaterial();
21
14
  this.nullRaycast = () => null;
22
- this.#vec = new THREE.Vector3();
23
- this.#store = inject(NgtStore);
24
- this.#camera = this.#store.select('camera');
25
- this.#size = this.#store.select('size');
26
- this.#dpr = this.#store.select('viewport', 'dpr');
27
- this.#normalizedRadiusTop = computed(() => this.spotLightInput.lightRadiusTop() === undefined ? 0.1 : this.spotLightInput.lightRadiusTop());
28
- this.#normalizedRadiusBottom = computed(() => this.spotLightInput.lightRadiusBottom() === undefined
29
- ? this.spotLightInput.lightAngle() * 7
30
- : this.spotLightInput.lightRadiusBottom());
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]);
31
30
  this.geometry = computed(() => {
32
- const distance = this.spotLightInput.lightDistance();
33
- const radiusTop = this.#normalizedRadiusTop();
34
- const radiusBottom = this.#normalizedRadiusBottom();
31
+ const [radiusTop, radiusBottom, distance] = [
32
+ this.radiusTop(),
33
+ this.radiusBottom(),
34
+ this.spotLightInput.distance(),
35
+ ];
35
36
  const geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);
36
37
  geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));
37
38
  geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));
38
39
  return geometry;
39
40
  });
40
- this.near = computed(() => this.#camera().near);
41
- this.far = computed(() => this.#camera().far);
42
- this.resolution = computed(() => this.spotLightInput.lightDepthBuffer()
43
- ? [this.#size().width * this.#dpr(), this.#size().height * this.#dpr()]
44
- : [0, 0]);
45
- this.spotLightInput.patch({
46
- opacity: 1,
47
- color: 'white',
48
- distance: 5,
49
- angle: 0.15,
50
- attenuation: 5,
51
- anglePower: 5,
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
+ });
52
51
  });
52
+ }
53
+ beforeRender() {
53
54
  injectBeforeRender(() => {
54
- const mesh = this.mesh.nativeElement;
55
- if (!mesh)
56
- return;
57
- this.material.uniforms['spotPosition'].value.copy(mesh.getWorldPosition(this.#vec));
58
- mesh.lookAt(mesh.parent.target.getWorldPosition(this.#vec));
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));
59
57
  });
60
58
  }
61
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", ngImport: i0, template: `
63
- <ngt-mesh [ref]="mesh" [geometry]="geometry()" [raycast]="nullRaycast">
64
- <ngt-primitive *args="[material]" attach="material">
65
- <ngt-value [rawValue]="spotLightInput.lightOpacity()" attach="uniforms.opacity.value" />
66
- <ngt-value [rawValue]="spotLightInput.lightColor()" attach="uniforms.lightColor.value" />
67
- <ngt-value [rawValue]="spotLightInput.lightAttenuation()" attach="uniforms.attenuation.value" />
68
- <ngt-value [rawValue]="spotLightInput.lightAnglePower()" attach="uniforms.anglePower.value" />
69
- <ngt-value [rawvalue]="spotLightInput.lightDepthBuffer()" attach="uniforms.depth.value" />
70
- <ngt-value [rawvalue]="near()" attach="uniforms.cameraNear.value" />
71
- <ngt-value [rawvalue]="far()" attach="uniforms.cameraFar.value" />
72
- <ngt-value [rawvalue]="resolution()" attach="uniforms.resolution.value" />
73
- </ngt-primitive>
74
- </ngt-mesh>
75
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
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"] }] }); }
76
74
  }
77
- export { NgtsVolumetricMesh };
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
79
76
  type: Component,
80
77
  args: [{
81
78
  selector: 'ngts-volumetric-mesh',
82
79
  standalone: true,
83
80
  template: `
84
- <ngt-mesh [ref]="mesh" [geometry]="geometry()" [raycast]="nullRaycast">
85
- <ngt-primitive *args="[material]" attach="material">
86
- <ngt-value [rawValue]="spotLightInput.lightOpacity()" attach="uniforms.opacity.value" />
87
- <ngt-value [rawValue]="spotLightInput.lightColor()" attach="uniforms.lightColor.value" />
88
- <ngt-value [rawValue]="spotLightInput.lightAttenuation()" attach="uniforms.attenuation.value" />
89
- <ngt-value [rawValue]="spotLightInput.lightAnglePower()" attach="uniforms.anglePower.value" />
90
- <ngt-value [rawvalue]="spotLightInput.lightDepthBuffer()" attach="uniforms.depth.value" />
91
- <ngt-value [rawvalue]="near()" attach="uniforms.cameraNear.value" />
92
- <ngt-value [rawvalue]="far()" attach="uniforms.cameraFar.value" />
93
- <ngt-value [rawvalue]="resolution()" attach="uniforms.resolution.value" />
94
- </ngt-primitive>
95
- </ngt-mesh>
96
- `,
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
+ `,
97
94
  imports: [NgtArgs],
98
95
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
99
96
  }]
100
97
  }], ctorParameters: function () { return []; } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9sdW1ldHJpYy1tZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL3Nwb3QtbGlnaHQvdm9sdW1ldHJpYy1tZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXhELE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFFakIsTUFvQmEsa0JBQWtCO0lBTWxCLElBQUksQ0FBdUI7SUFDM0IsTUFBTSxDQUFvQjtJQUMxQixPQUFPLENBQWdDO0lBQ3ZDLEtBQUssQ0FBOEI7SUFDbkMsSUFBSSxDQUF5QztJQUU3QyxvQkFBb0IsQ0FFM0I7SUFDTyx1QkFBdUIsQ0FJOUI7SUFtQkY7UUFyQ21CLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEQsU0FBSSxHQUFHLFlBQVksRUFBYyxDQUFDO1FBQ2xDLGFBQVEsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFFekIsU0FBSSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLFdBQU0sR0FBRyxNQUFNLENB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QyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU87WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLE1BQU0sQ0FBRSxJQUFJLENBQUMsTUFBMEIsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQXJEUSxrQkFBa0I7a0dBQWxCLGtCQUFrQixnRkFqQmpCOzs7Ozs7Ozs7Ozs7O0tBYVQsNERBQ1MsT0FBTzs7U0FHUixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFwQjlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztLQWFUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0UmVmLCBOZ3RBcmdzLCBOZ3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgU3BvdExpZ2h0TWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c1Nwb3RMaWdodElucHV0IH0gZnJvbSAnLi9zcG90LWxpZ2h0LWlucHV0JztcblxuZXh0ZW5kKHsgTWVzaCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXZvbHVtZXRyaWMtbWVzaCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW1lc2ggW3JlZl09XCJtZXNoXCIgW2dlb21ldHJ5XT1cImdlb21ldHJ5KClcIiBbcmF5Y2FzdF09XCJudWxsUmF5Y2FzdFwiPlxuICAgICAgICAgICAgPG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbbWF0ZXJpYWxdXCIgYXR0YWNoPVwibWF0ZXJpYWxcIj5cbiAgICAgICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJzcG90TGlnaHRJbnB1dC5saWdodE9wYWNpdHkoKVwiIGF0dGFjaD1cInVuaWZvcm1zLm9wYWNpdHkudmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInNwb3RMaWdodElucHV0LmxpZ2h0Q29sb3IoKVwiIGF0dGFjaD1cInVuaWZvcm1zLmxpZ2h0Q29sb3IudmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInNwb3RMaWdodElucHV0LmxpZ2h0QXR0ZW51YXRpb24oKVwiIGF0dGFjaD1cInVuaWZvcm1zLmF0dGVudWF0aW9uLnZhbHVlXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJzcG90TGlnaHRJbnB1dC5saWdodEFuZ2xlUG93ZXIoKVwiIGF0dGFjaD1cInVuaWZvcm1zLmFuZ2xlUG93ZXIudmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cInNwb3RMaWdodElucHV0LmxpZ2h0RGVwdGhCdWZmZXIoKVwiIGF0dGFjaD1cInVuaWZvcm1zLmRlcHRoLnZhbHVlXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXd2YWx1ZV09XCJuZWFyKClcIiBhdHRhY2g9XCJ1bmlmb3Jtcy5jYW1lcmFOZWFyLnZhbHVlXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXd2YWx1ZV09XCJmYXIoKVwiIGF0dGFjaD1cInVuaWZvcm1zLmNhbWVyYUZhci52YWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3dmFsdWVdPVwicmVzb2x1dGlvbigpXCIgYXR0YWNoPVwidW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZVwiIC8+XG4gICAgICAgICAgICA8L25ndC1wcmltaXRpdmU+XG4gICAgICAgIDwvbmd0LW1lc2g+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0QXJnc10sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzVm9sdW1ldHJpY01lc2gge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzcG90TGlnaHRJbnB1dCA9IGluamVjdChOZ3RzU3BvdExpZ2h0SW5wdXQpO1xuICAgIHJlYWRvbmx5IG1lc2ggPSBpbmplY3ROZ3RSZWY8VEhSRUUuTWVzaD4oKTtcbiAgICByZWFkb25seSBtYXRlcmlhbCA9IG5ldyBTcG90TGlnaHRNYXRlcmlhbCgpO1xuICAgIHJlYWRvbmx5IG51bGxSYXljYXN0ID0gKCkgPT4gbnVsbDtcblxuICAgIHJlYWRvbmx5ICN2ZWMgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgIHJlYWRvbmx5ICNzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG4gICAgcmVhZG9ubHkgI2NhbWVyYSA9IHRoaXMuI3N0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG4gICAgcmVhZG9ubHkgI3NpemUgPSB0aGlzLiNzdG9yZS5zZWxlY3QoJ3NpemUnKTtcbiAgICByZWFkb25seSAjZHByID0gdGhpcy4jc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcsICdkcHInKTtcblxuICAgIHJlYWRvbmx5ICNub3JtYWxpemVkUmFkaXVzVG9wID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5zcG90TGlnaHRJbnB1dC5saWdodFJhZGl1c1RvcCgpID09PSB1bmRlZmluZWQgPyAwLjEgOiB0aGlzLnNwb3RMaWdodElucHV0LmxpZ2h0UmFkaXVzVG9wKClcbiAgICApO1xuICAgIHJlYWRvbmx5ICNub3JtYWxpemVkUmFkaXVzQm90dG9tID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5zcG90TGlnaHRJbnB1dC5saWdodFJhZGl1c0JvdHRvbSgpID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gdGhpcy5zcG90TGlnaHRJbnB1dC5saWdodEFuZ2xlKCkgKiA3XG4gICAgICAgICAgICA6IHRoaXMuc3BvdExpZ2h0SW5wdXQubGlnaHRSYWRpdXNCb3R0b20oKVxuICAgICk7XG4gICAgcmVhZG9ubHkgZ2VvbWV0cnkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gdGhpcy5zcG90TGlnaHRJbnB1dC5saWdodERpc3RhbmNlKCk7XG4gICAgICAgIGNvbnN0IHJhZGl1c1RvcCA9IHRoaXMuI25vcm1hbGl6ZWRSYWRpdXNUb3AoKTtcbiAgICAgICAgY29uc3QgcmFkaXVzQm90dG9tID0gdGhpcy4jbm9ybWFsaXplZFJhZGl1c0JvdHRvbSgpO1xuXG4gICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IFRIUkVFLkN5bGluZGVyR2VvbWV0cnkocmFkaXVzVG9wLCByYWRpdXNCb3R0b20sIGRpc3RhbmNlLCAxMjgsIDY0LCB0cnVlKTtcbiAgICAgICAgZ2VvbWV0cnkuYXBwbHlNYXRyaXg0KG5ldyBUSFJFRS5NYXRyaXg0KCkubWFrZVRyYW5zbGF0aW9uKDAsIC1kaXN0YW5jZSAvIDIsIDApKTtcbiAgICAgICAgZ2VvbWV0cnkuYXBwbHlNYXRyaXg0KG5ldyBUSFJFRS5NYXRyaXg0KCkubWFrZVJvdGF0aW9uWCgtTWF0aC5QSSAvIDIpKTtcbiAgICAgICAgcmV0dXJuIGdlb21ldHJ5O1xuICAgIH0pO1xuICAgIHJlYWRvbmx5IG5lYXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNjYW1lcmEoKS5uZWFyKTtcbiAgICByZWFkb25seSBmYXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNjYW1lcmEoKS5mYXIpO1xuICAgIHJlYWRvbmx5IHJlc29sdXRpb24gPSBjb21wdXRlZCgoKSA9PlxuICAgICAgICB0aGlzLnNwb3RMaWdodElucHV0LmxpZ2h0RGVwdGhCdWZmZXIoKVxuICAgICAgICAgICAgPyBbdGhpcy4jc2l6ZSgpLndpZHRoICogdGhpcy4jZHByKCksIHRoaXMuI3NpemUoKS5oZWlnaHQgKiB0aGlzLiNkcHIoKV1cbiAgICAgICAgICAgIDogWzAsIDBdXG4gICAgKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNwb3RMaWdodElucHV0LnBhdGNoKHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgIGRpc3RhbmNlOiA1LFxuICAgICAgICAgICAgYW5nbGU6IDAuMTUsXG4gICAgICAgICAgICBhdHRlbnVhdGlvbjogNSxcbiAgICAgICAgICAgIGFuZ2xlUG93ZXI6IDUsXG4gICAgICAgIH0pO1xuICAgICAgICBpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVzaCA9IHRoaXMubWVzaC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFtZXNoKSByZXR1cm47XG4gICAgICAgICAgICB0aGlzLm1hdGVyaWFsLnVuaWZvcm1zWydzcG90UG9zaXRpb24nXS52YWx1ZS5jb3B5KG1lc2guZ2V0V29ybGRQb3NpdGlvbih0aGlzLiN2ZWMpKTtcbiAgICAgICAgICAgIG1lc2gubG9va0F0KChtZXNoLnBhcmVudCBhcyBUSFJFRS5TcG90TGlnaHQpLnRhcmdldC5nZXRXb3JsZFBvc2l0aW9uKHRoaXMuI3ZlYykpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9sdW1ldHJpYy1tZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL3Nwb3QtbGlnaHQvdm9sdW1ldHJpYy1tZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUV4RCxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBc0JqQixNQUFNLE9BQU8sa0JBQWtCO0lBc0M5QjtRQXJDQSxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzVDLFNBQUksR0FBRyxZQUFZLEVBQVEsQ0FBQztRQUM1QixhQUFRLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ25DLGdCQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBRWpCLFFBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixVQUFLLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDekIsU0FBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLFFBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1B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LGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQWMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0csQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXpEVyxrQkFBa0I7a0dBQWxCLGtCQUFrQixnRkFqQnBCOzs7Ozs7Ozs7Ozs7O0VBYVQsNERBQ1MsT0FBTzs7MkZBR0wsa0JBQWtCO2tCQXBCOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0VBYVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdE5ndFJlZiwgaW5qZWN0Tmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFNwb3RMaWdodE1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTWVzaCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNTcG90TGlnaHRJbnB1dCB9IGZyb20gJy4vc3BvdC1saWdodC1pbnB1dCc7XG5cbmV4dGVuZCh7IE1lc2ggfSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtdm9sdW1ldHJpYy1tZXNoJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2ggW3JlZl09XCJtZXNoXCIgW2dlb21ldHJ5XT1cImdlb21ldHJ5KClcIiBbcmF5Y2FzdF09XCJudWxsUmF5Y2FzdFwiPlxuXHRcdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbbWF0ZXJpYWxdXCIgYXR0YWNoPVwibWF0ZXJpYWxcIj5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwic3BvdExpZ2h0SW5wdXQub3BhY2l0eSgpXCIgYXR0YWNoPVwidW5pZm9ybXMub3BhY2l0eS52YWx1ZVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInNwb3RMaWdodElucHV0LmNvbG9yKClcIiBhdHRhY2g9XCJ1bmlmb3Jtcy5saWdodENvbG9yLnZhbHVlXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwic3BvdExpZ2h0SW5wdXQuYXR0ZW51YXRpb24oKVwiIGF0dGFjaD1cInVuaWZvcm1zLmF0dGVudWF0aW9uLnZhbHVlXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwic3BvdExpZ2h0SW5wdXQuYW5nbGVQb3dlcigpXCIgYXR0YWNoPVwidW5pZm9ybXMuYW5nbGVQb3dlci52YWx1ZVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cInNwb3RMaWdodElucHV0LmRlcHRoQnVmZmVyKClcIiBhdHRhY2g9XCJ1bmlmb3Jtcy5kZXB0aC52YWx1ZVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cIm5lYXIoKVwiIGF0dGFjaD1cInVuaWZvcm1zLmNhbWVyYU5lYXIudmFsdWVcIiAvPlxuXHRcdFx0XHQ8bmd0LXZhbHVlIFtyYXd2YWx1ZV09XCJmYXIoKVwiIGF0dGFjaD1cInVuaWZvcm1zLmNhbWVyYUZhci52YWx1ZVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd3ZhbHVlXT1cInJlc29sdXRpb24oKVwiIGF0dGFjaD1cInVuaWZvcm1zLnJlc29sdXRpb24udmFsdWVcIiAvPlxuXHRcdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzVm9sdW1ldHJpY01lc2gge1xuXHRzcG90TGlnaHRJbnB1dCA9IGluamVjdChOZ3RzU3BvdExpZ2h0SW5wdXQpO1xuXHRtZXNoID0gaW5qZWN0Tmd0UmVmPE1lc2g+KCk7XG5cdG1hdGVyaWFsID0gbmV3IFNwb3RMaWdodE1hdGVyaWFsKCk7XG5cdG51bGxSYXljYXN0ID0gKCkgPT4gbnVsbDtcblxuXHRwcml2YXRlIHZlYyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXHRwcml2YXRlIHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXHRwcml2YXRlIGRwciA9IHRoaXMuc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcsICdkcHInKTtcblxuXHRwcml2YXRlIHJhZGl1c1RvcCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCByYWRpdXNUb3AgPSB0aGlzLnNwb3RMaWdodElucHV0LnJhZGl1c1RvcCgpO1xuXHRcdHJldHVybiByYWRpdXNUb3AgPT09IHVuZGVmaW5lZCA/IDAuMSA6IHJhZGl1c1RvcDtcblx0fSk7XG5cdHByaXZhdGUgcmFkaXVzQm90dG9tID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFthbmdsZSwgcmFkaXVzQm90dG9tXSA9IFt0aGlzLnNwb3RMaWdodElucHV0LmFuZ2xlKCksIHRoaXMuc3BvdExpZ2h0SW5wdXQucmFkaXVzQm90dG9tKCldO1xuXHRcdHJldHVybiByYWRpdXNCb3R0b20gPT09IHVuZGVmaW5lZCA/IGFuZ2xlICogNyA6IHJhZGl1c0JvdHRvbTtcblx0fSk7XG5cblx0bmVhciA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnLCAnbmVhcicpO1xuXHRmYXIgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJywgJ2ZhcicpO1xuXHRyZXNvbHV0aW9uID0gY29tcHV0ZWQoKCkgPT5cblx0XHR0aGlzLnNwb3RMaWdodElucHV0LmRlcHRoQnVmZmVyKCkgPyBbdGhpcy5zaXplKCkud2lkdGggKiB0aGlzLmRwcigpLCB0aGlzLnNpemUoKS5oZWlnaHQgKiB0aGlzLmRwcigpXSA6IFswLCAwXSxcblx0KTtcblx0Z2VvbWV0cnkgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW3JhZGl1c1RvcCwgcmFkaXVzQm90dG9tLCBkaXN0YW5jZV0gPSBbXG5cdFx0XHR0aGlzLnJhZGl1c1RvcCgpLFxuXHRcdFx0dGhpcy5yYWRpdXNCb3R0b20oKSxcblx0XHRcdHRoaXMuc3BvdExpZ2h0SW5wdXQuZGlzdGFuY2UoKSxcblx0XHRdO1xuXG5cdFx0Y29uc3QgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuQ3lsaW5kZXJHZW9tZXRyeShyYWRpdXNUb3AsIHJhZGl1c0JvdHRvbSwgZGlzdGFuY2UsIDEyOCwgNjQsIHRydWUpO1xuXHRcdGdlb21ldHJ5LmFwcGx5TWF0cml4NChuZXcgVEhSRUUuTWF0cml4NCgpLm1ha2VUcmFuc2xhdGlvbigwLCAtZGlzdGFuY2UgLyAyLCAwKSk7XG5cdFx0Z2VvbWV0cnkuYXBwbHlNYXRyaXg0KG5ldyBUSFJFRS5NYXRyaXg0KCkubWFrZVJvdGF0aW9uWCgtTWF0aC5QSSAvIDIpKTtcblx0XHRyZXR1cm4gZ2VvbWV0cnk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHRoaXMuc3BvdExpZ2h0SW5wdXQuaW5wdXRzLnBhdGNoKHtcblx0XHRcdFx0b3BhY2l0eTogMSxcblx0XHRcdFx0Y29sb3I6ICd3aGl0ZScsXG5cdFx0XHRcdGRpc3RhbmNlOiA1LFxuXHRcdFx0XHRhbmdsZTogMC4xNSxcblx0XHRcdFx0YXR0ZW51YXRpb246IDUsXG5cdFx0XHRcdGFuZ2xlUG93ZXI6IDUsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgYmVmb3JlUmVuZGVyKCkge1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLm1hdGVyaWFsLnVuaWZvcm1zWydzcG90UG9zaXRpb24nXS52YWx1ZS5jb3B5KHRoaXMubWVzaC5uYXRpdmVFbGVtZW50LmdldFdvcmxkUG9zaXRpb24odGhpcy52ZWMpKTtcblx0XHRcdHRoaXMubWVzaC5uYXRpdmVFbGVtZW50Lmxvb2tBdCgodGhpcy5tZXNoLm5hdGl2ZUVsZW1lbnQucGFyZW50IGFzIGFueSkudGFyZ2V0LmdldFdvcmxkUG9zaXRpb24odGhpcy52ZWMpKTtcblx0XHR9KTtcblx0fVxufVxuIl19