angular-three-soba 2.0.0-beta.4 → 2.0.0-beta.40

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 (323) hide show
  1. package/abstractions/billboard/billboard.d.ts +12 -8
  2. package/abstractions/detailed/detailed.d.ts +26 -0
  3. package/abstractions/edges/edges.d.ts +24 -12
  4. package/abstractions/grid/grid.d.ts +42 -51
  5. package/abstractions/index.d.ts +1 -7
  6. package/abstractions/text/text.d.ts +10 -4
  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 +49 -23
  11. package/cameras/index.d.ts +0 -1
  12. package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
  13. package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
  14. package/controls/orbit-controls/orbit-controls.d.ts +34 -15
  15. package/esm2022/abstractions/billboard/billboard.mjs +36 -33
  16. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  17. package/esm2022/abstractions/edges/edges.mjs +58 -63
  18. package/esm2022/abstractions/grid/grid.mjs +140 -110
  19. package/esm2022/abstractions/index.mjs +2 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -122
  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 +120 -100
  25. package/esm2022/cameras/index.mjs +1 -2
  26. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
  27. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
  28. package/esm2022/controls/orbit-controls/orbit-controls.mjs +109 -85
  29. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  30. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +198 -0
  31. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  32. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
  33. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +151 -0
  34. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
  35. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
  36. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
  37. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
  38. package/esm2022/gizmos/index.mjs +4 -0
  39. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +14 -9
  40. package/esm2022/loaders/loader/loader.mjs +92 -87
  41. package/esm2022/loaders/progress/progress.mjs +31 -30
  42. package/esm2022/loaders/texture-loader/texture-loader.mjs +20 -15
  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 +99 -97
  47. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +164 -144
  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 +28 -23
  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 +41 -37
  55. package/esm2022/misc/example/example.mjs +161 -0
  56. package/esm2022/misc/fbo/fbo.mjs +42 -36
  57. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  58. package/esm2022/misc/html/html.mjs +305 -0
  59. package/esm2022/misc/index.mjs +10 -1
  60. package/esm2022/misc/sampler/sampler.mjs +132 -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 +204 -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 +221 -0
  74. package/esm2022/performances/instances/position-mesh.mjs +52 -0
  75. package/esm2022/performances/points/points-input.mjs +64 -0
  76. package/esm2022/performances/points/points.mjs +327 -0
  77. package/esm2022/performances/points/position-point.mjs +54 -0
  78. package/esm2022/performances/segments/segment-object.mjs +9 -0
  79. package/esm2022/performances/segments/segments.mjs +183 -0
  80. package/esm2022/shaders/blur-pass/blur-pass.mjs +2 -2
  81. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  82. package/esm2022/shaders/caustics/caustics-projection-material.mjs +32 -0
  83. package/esm2022/shaders/convolution-material/convolution-material.mjs +3 -2
  84. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  85. package/esm2022/shaders/grid-material/grid-material.mjs +30 -14
  86. package/esm2022/shaders/index.mjs +5 -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 +3 -2
  90. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +7 -4
  91. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  92. package/esm2022/shaders/shader-material/shader-material.mjs +3 -5
  93. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +18 -25
  94. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  95. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +8 -7
  96. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  97. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  98. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +161 -176
  99. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +8 -8
  100. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +129 -129
  101. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  102. package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
  103. package/esm2022/staging/bounds/bounds.mjs +145 -143
  104. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  105. package/esm2022/staging/center/center.mjs +129 -112
  106. package/esm2022/staging/cloud/cloud.mjs +118 -124
  107. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -136
  108. package/esm2022/staging/environment/assets.mjs +12 -12
  109. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  110. package/esm2022/staging/environment/environment-ground.mjs +17 -19
  111. package/esm2022/staging/environment/environment-input.mjs +98 -85
  112. package/esm2022/staging/environment/environment-map.mjs +33 -33
  113. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  114. package/esm2022/staging/environment/environment.mjs +34 -51
  115. package/esm2022/staging/environment/utils.mjs +40 -17
  116. package/esm2022/staging/float/float.mjs +70 -58
  117. package/esm2022/staging/index.mjs +7 -3
  118. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  119. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  120. package/esm2022/staging/sky/sky.mjs +85 -80
  121. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  122. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  123. package/esm2022/staging/spot-light/shadow-mesh.mjs +267 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  125. package/esm2022/staging/spot-light/spot-light.mjs +51 -63
  126. package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
  127. package/esm2022/staging/stage/stage.mjs +305 -290
  128. package/esm2022/staging/stars/stars.mjs +101 -102
  129. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  130. package/esm2022/staging/wireframe/wireframe.mjs +228 -0
  131. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  132. package/esm2022/utils/constants.mjs +3 -0
  133. package/esm2022/utils/content/content.mjs +15 -0
  134. package/esm2022/utils/index.mjs +3 -0
  135. package/fesm2022/angular-three-soba-abstractions.mjs +504 -2079
  136. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  137. package/fesm2022/angular-three-soba-cameras.mjs +293 -260
  138. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  139. package/fesm2022/angular-three-soba-controls.mjs +108 -83
  140. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  141. package/fesm2022/angular-three-soba-gizmos.mjs +1045 -0
  142. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  143. package/fesm2022/angular-three-soba-loaders.mjs +148 -132
  144. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  145. package/fesm2022/angular-three-soba-materials.mjs +656 -588
  146. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  147. package/fesm2022/angular-three-soba-misc.mjs +2202 -99
  148. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  149. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  150. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  151. package/fesm2022/angular-three-soba-performances.mjs +957 -0
  152. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  153. package/fesm2022/angular-three-soba-shaders.mjs +508 -269
  154. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  155. package/fesm2022/angular-three-soba-staging.mjs +2910 -2573
  156. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  157. package/fesm2022/angular-three-soba-utils.mjs +25 -0
  158. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  159. package/gizmos/README.md +3 -0
  160. package/gizmos/gizmo-helper/gizmo-helper.d.ts +73 -0
  161. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  162. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
  163. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
  164. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
  165. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
  166. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
  167. package/gizmos/index.d.ts +3 -0
  168. package/loaders/gltf-loader/gltf-loader.d.ts +15 -4
  169. package/loaders/loader/loader.d.ts +19 -17
  170. package/loaders/progress/progress.d.ts +1 -1
  171. package/loaders/texture-loader/texture-loader.d.ts +8 -3
  172. package/materials/index.d.ts +1 -0
  173. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  174. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  175. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  176. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  177. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  178. package/materials/point-material/point-material.d.ts +24 -0
  179. package/metadata.json +1 -0
  180. package/misc/animations/animations.d.ts +6 -4
  181. package/misc/caustics/caustics.d.ts +87 -0
  182. package/misc/decal/decal.d.ts +49 -0
  183. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  184. package/misc/example/example.d.ts +85 -0
  185. package/misc/fbo/fbo.d.ts +2 -2
  186. package/misc/html/html-wrapper.d.ts +559 -0
  187. package/misc/html/html.d.ts +218 -0
  188. package/misc/index.d.ts +9 -0
  189. package/misc/sampler/sampler.d.ts +67 -0
  190. package/misc/shadow/shadow.d.ts +37 -0
  191. package/misc/stats-gl/stats-gl.d.ts +24 -0
  192. package/misc/trail/trail.d.ts +57 -0
  193. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  194. package/misc/trail-texture/trail-texture.d.ts +50 -0
  195. package/modifiers/README.md +3 -0
  196. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  197. package/modifiers/index.d.ts +1 -0
  198. package/package.json +36 -18
  199. package/performances/README.md +3 -0
  200. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  201. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  202. package/performances/index.d.ts +7 -0
  203. package/performances/instances/instances.d.ts +83 -0
  204. package/{performance → performances}/instances/position-mesh.d.ts +1 -1
  205. package/performances/points/points-input.d.ts +32 -0
  206. package/performances/points/points.d.ts +96 -0
  207. package/performances/points/position-point.d.ts +11 -0
  208. package/performances/segments/segment-object.d.ts +7 -0
  209. package/performances/segments/segments.d.ts +128 -0
  210. package/shaders/grid-material/grid-material.d.ts +33 -0
  211. package/shaders/index.d.ts +4 -2
  212. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +173 -6
  213. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  214. package/shaders/shader-material/shader-material.d.ts +2 -2
  215. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  216. package/shaders/sparkles-material/sparkles-material.d.ts +13 -0
  217. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  218. package/shaders/star-field-material/star-field-material.d.ts +9 -0
  219. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  220. package/staging/accumulative-shadows/accumulative-shadows.d.ts +93 -39
  221. package/staging/accumulative-shadows/randomized-lights.d.ts +41 -28
  222. package/staging/backdrop/backdrop.d.ts +30 -0
  223. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  224. package/staging/bounds/bounds.d.ts +105 -25
  225. package/staging/camera-shake/camera-shake.d.ts +30 -19
  226. package/staging/center/center.d.ts +43 -35
  227. package/staging/cloud/cloud.d.ts +27 -24
  228. package/staging/contact-shadows/contact-shadows.d.ts +43 -30
  229. package/staging/environment/assets.d.ts +9 -9
  230. package/staging/environment/environment-cube.d.ts +9 -5
  231. package/staging/environment/environment-ground.d.ts +7 -7
  232. package/staging/environment/environment-input.d.ts +38 -38
  233. package/staging/environment/environment-map.d.ts +10 -5
  234. package/staging/environment/environment-portal.d.ts +10 -5
  235. package/staging/environment/environment.d.ts +0 -4
  236. package/staging/environment/utils.d.ts +2 -2
  237. package/staging/float/float.d.ts +15 -11
  238. package/staging/index.d.ts +6 -2
  239. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  240. package/staging/normal-texture/normal-texture.d.ts +16 -0
  241. package/staging/sky/sky.d.ts +28 -21
  242. package/staging/sparkles/sparkles.d.ts +36 -22
  243. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  244. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  245. package/staging/spot-light/spot-light-input.d.ts +25 -25
  246. package/staging/spot-light/spot-light.d.ts +35 -15
  247. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  248. package/staging/stage/stage.d.ts +89 -65
  249. package/staging/stars/stars.d.ts +28 -17
  250. package/staging/wireframe/wireframe-input.d.ts +65 -0
  251. package/staging/wireframe/wireframe.d.ts +28 -0
  252. package/utils/README.md +3 -0
  253. package/utils/constants.d.ts +1 -0
  254. package/utils/content/content.d.ts +8 -0
  255. package/utils/index.d.ts +2 -0
  256. package/web-types.json +1 -0
  257. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  258. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  259. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  260. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  261. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  262. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  263. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  264. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  265. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  266. package/abstractions/line/line-input.d.ts +0 -42
  267. package/abstractions/line/line.d.ts +0 -35
  268. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  269. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  270. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  271. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  272. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  273. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  274. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  275. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  276. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  277. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  278. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  279. package/esm2022/abstractions/line/line-input.mjs +0 -113
  280. package/esm2022/abstractions/line/line.mjs +0 -165
  281. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  282. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  283. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  284. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  285. package/esm2022/performance/detailed/detailed.mjs +0 -61
  286. package/esm2022/performance/index.mjs +0 -7
  287. package/esm2022/performance/instances/instance.mjs +0 -48
  288. package/esm2022/performance/instances/instances.mjs +0 -189
  289. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  290. package/esm2022/performance/stats/stats.mjs +0 -79
  291. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  292. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  293. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  294. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  295. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
  296. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  297. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  298. package/performance/README.md +0 -3
  299. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  300. package/performance/detailed/detailed.d.ts +0 -20
  301. package/performance/index.d.ts +0 -6
  302. package/performance/instances/instance.d.ts +0 -9
  303. package/performance/instances/instances.d.ts +0 -35
  304. package/performance/stats/stats.d.ts +0 -18
  305. package/plugin/generators.json +0 -19
  306. package/plugin/libs/plugin/README.md +0 -11
  307. package/plugin/package.json +0 -9
  308. package/plugin/src/generators/init/compat.d.ts +0 -2
  309. package/plugin/src/generators/init/compat.js +0 -6
  310. package/plugin/src/generators/init/compat.js.map +0 -1
  311. package/plugin/src/generators/init/init.d.ts +0 -7
  312. package/plugin/src/generators/init/init.js +0 -28
  313. package/plugin/src/generators/init/init.js.map +0 -1
  314. package/plugin/src/generators/init/schema.json +0 -6
  315. package/plugin/src/index.d.ts +0 -1
  316. package/plugin/src/index.js +0 -6
  317. package/plugin/src/index.js.map +0 -1
  318. package/staging/caustics/caustisc.d.ts +0 -70
  319. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  320. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  321. /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
  322. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  323. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -1,70 +1,64 @@
1
- import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect, inject } from '@angular/core';
2
- import { NgtArgs, NgtRepeat, NgtSignalStore, extend, injectNgtRef, requestAnimationInInjectionContext, } from 'angular-three';
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect } from '@angular/core';
2
+ import { NgtArgs, extend, injectNgtRef, signalStore } from 'angular-three';
3
+ import { revision } from 'angular-three-soba/utils';
4
+ import { Repeat } from 'ngxtension/repeat';
3
5
  import * as THREE from 'three';
4
6
  import { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';
5
- import { NGTS_ACCUMULATIVE_SHADOWS_API } from './accumulative-shadows';
7
+ import { injectNgtsAccumulativeShadowsApi } from './accumulative-shadows';
6
8
  import * as i0 from "@angular/core";
7
9
  extend({ Group, DirectionalLight, OrthographicCamera, Vector2 });
8
- class NgtsRandomizedLights extends NgtSignalStore {
10
+ export class NgtsRandomizedLights {
9
11
  /** How many frames it will jiggle the lights, 1.
10
12
  * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */
11
- set frames(frames) {
12
- this.set({ frames });
13
+ set _frames(frames) {
14
+ this.inputs.set({ frames });
13
15
  }
14
16
  /** Light position, [0, 0, 0] */
15
- set position(position) {
16
- this.set({ position });
17
+ set _position(position) {
18
+ this.inputs.set({ position });
17
19
  }
18
20
  /** Radius of the jiggle, higher values make softer light, 5 */
19
- set radius(radius) {
20
- this.set({ radius });
21
+ set _radius(radius) {
22
+ this.inputs.set({ radius });
21
23
  }
22
24
  /** Amount of lights, 8 */
23
- set amount(amount) {
24
- this.set({ amount });
25
+ set _amount(amount) {
26
+ this.inputs.set({ amount });
25
27
  }
26
28
  /** Light intensity, 1 */
27
- set intensity(intensity) {
28
- this.set({ intensity });
29
+ set _intensity(intensity) {
30
+ this.inputs.set({ intensity });
29
31
  }
30
32
  /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */
31
- set ambient(ambient) {
32
- this.set({ ambient });
33
+ set _ambient(ambient) {
34
+ this.inputs.set({ ambient });
33
35
  }
34
36
  /** If the lights cast shadows, this is true by default */
35
- set castShadow(castShadow) {
36
- this.set({ castShadow });
37
+ set _castShadow(castShadow) {
38
+ this.inputs.set({ castShadow });
37
39
  }
38
40
  /** Default shadow bias, 0 */
39
- set bias(bias) {
40
- this.set({ bias });
41
+ set _bias(bias) {
42
+ this.inputs.set({ bias });
41
43
  }
42
44
  /** Default map size, 512 */
43
- set mapSize(mapSize) {
44
- this.set({ mapSize });
45
+ set _mapSize(mapSize) {
46
+ this.inputs.set({ mapSize });
45
47
  }
46
48
  /** Default size of the shadow camera, 10 */
47
- set size(size) {
48
- this.set({ size });
49
+ set _size(size) {
50
+ this.inputs.set({ size });
49
51
  }
50
52
  /** Default shadow camera near, 0.5 */
51
- set near(near) {
52
- this.set({ near });
53
+ set _near(near) {
54
+ this.inputs.set({ near });
53
55
  }
54
56
  /** Default shadow camera far, 500 */
55
- set far(far) {
56
- this.set({ far });
57
+ set _far(far) {
58
+ this.inputs.set({ far });
57
59
  }
58
- #parent;
59
- #size;
60
- #near;
61
- #far;
62
- #mapSize;
63
- #ambient;
64
- #position;
65
- #radius;
66
60
  constructor() {
67
- super({
61
+ this.inputs = signalStore({
68
62
  castShadow: true,
69
63
  bias: 0.001,
70
64
  mapSize: 512,
@@ -75,43 +69,38 @@ class NgtsRandomizedLights extends NgtSignalStore {
75
69
  position: [0, 0, 0],
76
70
  radius: 1,
77
71
  amount: 8,
78
- intensity: 1,
72
+ intensity: revision >= 155 ? Math.PI : 1,
79
73
  ambient: 0.5,
80
74
  });
75
+ this.Math = Math;
81
76
  this.lightsRef = injectNgtRef();
82
- this.#parent = inject(NGTS_ACCUMULATIVE_SHADOWS_API);
83
- this.#size = this.select('size');
84
- this.#near = this.select('near');
85
- this.#far = this.select('far');
86
- this.#mapSize = this.select('mapSize');
87
- this.#ambient = this.select('ambient');
88
- this.#position = this.select('position');
89
- this.#radius = this.select('radius');
90
- this.lightsAmount = this.select('amount');
91
- this.lightsCastShadow = this.select('castShadow');
92
- this.lightsIntensity = this.select('intensity');
93
- this.lightsBias = this.select('bias');
94
- this.shadowMapSize = computed(() => [this.#mapSize(), this.#mapSize()]);
95
- this.cameraArgs = computed(() => [
96
- -this.#size(),
97
- this.#size(),
98
- this.#size(),
99
- -this.#size(),
100
- this.#near(),
101
- this.#far(),
102
- ]);
103
- this.length = computed(() => new THREE.Vector3(...this.#position()).length());
77
+ this.position = this.inputs.select('position');
78
+ this.ambient = this.inputs.select('ambient');
79
+ this.radius = this.inputs.select('radius');
80
+ this.mapSize = this.inputs.select('mapSize');
81
+ this.size = this.inputs.select('size');
82
+ this.near = this.inputs.select('near');
83
+ this.far = this.inputs.select('far');
84
+ this.length = computed(() => new THREE.Vector3(...this.position()).length());
85
+ this.shadowsApi = injectNgtsAccumulativeShadowsApi();
86
+ this.amount = this.inputs.select('amount');
87
+ this.castShadow = this.inputs.select('castShadow');
88
+ this.intensity = this.inputs.select('intensity');
89
+ this.bias = this.inputs.select('bias');
90
+ this.shadowsMapSize = computed(() => [this.mapSize(), this.mapSize()]);
91
+ this.cameraArgs = computed(() => [-this.size(), this.size(), this.size(), -this.size(), this.near(), this.far()]);
104
92
  this.api = computed(() => {
105
- const radius = this.#radius();
106
- const position = this.#position();
107
- const ambient = this.#ambient();
108
- const length = this.length();
109
- const lights = this.lightsRef.nativeElement;
93
+ const [lights, ambient, radius, length, position] = [
94
+ this.lightsRef.nativeElement,
95
+ this.ambient(),
96
+ this.radius(),
97
+ this.length(),
98
+ this.position(),
99
+ ];
110
100
  const update = () => {
111
- let light;
112
101
  if (lights) {
113
102
  for (let l = 0; l < lights.children.length; l++) {
114
- light = lights.children[l];
103
+ const light = lights.children[l];
115
104
  if (Math.random() > ambient) {
116
105
  light.position.set(position[0] + THREE.MathUtils.randFloatSpread(radius), position[1] + THREE.MathUtils.randFloatSpread(radius), position[2] + THREE.MathUtils.randFloatSpread(radius));
117
106
  }
@@ -125,84 +114,95 @@ class NgtsRandomizedLights extends NgtSignalStore {
125
114
  };
126
115
  return { update };
127
116
  });
128
- requestAnimationInInjectionContext(() => {
129
- this.#updateLightsMap();
130
- });
117
+ this.updateLightMap();
131
118
  }
132
- #updateLightsMap() {
119
+ updateLightMap() {
133
120
  effect((onCleanup) => {
134
121
  const lights = this.lightsRef.nativeElement;
135
122
  if (!lights)
136
123
  return;
137
- const parent = this.#parent();
138
- if (parent) {
139
- parent.lights.set(lights.uuid, this.api);
140
- onCleanup(() => parent.lights.delete(lights.uuid));
124
+ const shadowsApi = this.shadowsApi();
125
+ if (shadowsApi) {
126
+ shadowsApi.lights.set(lights.uuid, this.api);
127
+ onCleanup(() => shadowsApi.lights.delete(lights.uuid));
141
128
  }
142
129
  });
143
130
  }
144
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsRandomizedLights, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsRandomizedLights, isStandalone: true, selector: "ngts-randomized-lights", inputs: { lightsRef: "lightsRef", frames: "frames", position: "position", radius: "radius", amount: "amount", intensity: "intensity", ambient: "ambient", castShadow: "castShadow", bias: "bias", mapSize: "mapSize", size: "size", near: "near", far: "far" }, usesInheritance: true, ngImport: i0, template: `
146
- <ngt-group ngtCompound [ref]="lightsRef">
147
- <ngt-directional-light
148
- *ngFor="let i; repeat: lightsAmount()"
149
- [castShadow]="lightsCastShadow()"
150
- [intensity]="lightsIntensity() / lightsAmount()"
151
- >
152
- <ngt-value [rawValue]="lightsBias()" attach="shadow.bias" />
153
- <ngt-vector2 *args="shadowMapSize()" attach="shadow.mapSize" />
154
- <ngt-orthographic-camera *args="cameraArgs()" attach="shadow.camera" />
155
- </ngt-directional-light>
156
- </ngt-group>
157
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "directive", type: NgtRepeat, selector: "[ngFor][ngForRepeat]", inputs: ["ngForRepeat"] }] }); }
131
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsRandomizedLights, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
132
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsRandomizedLights, isStandalone: true, selector: "ngts-randomized-lights", inputs: { lightsRef: "lightsRef", _frames: ["frames", "_frames"], _position: ["position", "_position"], _radius: ["radius", "_radius"], _amount: ["amount", "_amount"], _intensity: ["intensity", "_intensity"], _ambient: ["ambient", "_ambient"], _castShadow: ["castShadow", "_castShadow"], _bias: ["bias", "_bias"], _mapSize: ["mapSize", "_mapSize"], _size: ["size", "_size"], _near: ["near", "_near"], _far: ["far", "_far"] }, ngImport: i0, template: `
133
+ <ngt-group ngtCompound [ref]="lightsRef">
134
+ <ngt-directional-light
135
+ *ngFor="let i; repeat: amount()"
136
+ [castShadow]="castShadow()"
137
+ [intensity]="intensity() / amount()"
138
+ >
139
+ <ngt-value [rawValue]="bias()" attach="shadow.bias" />
140
+ <ngt-vector2 *args="shadowsMapSize()" attach="shadow.mapSize" />
141
+ <ngt-orthographic-camera *args="cameraArgs()" attach="shadow.camera" />
142
+ </ngt-directional-light>
143
+ <ng-content />
144
+ </ngt-group>
145
+ `, isInline: true, dependencies: [{ kind: "directive", type: Repeat, selector: "[ngFor][ngForRepeat]", inputs: ["ngForRepeat"] }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
158
146
  }
159
- export { NgtsRandomizedLights };
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsRandomizedLights, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsRandomizedLights, decorators: [{
161
148
  type: Component,
162
149
  args: [{
163
150
  selector: 'ngts-randomized-lights',
164
151
  standalone: true,
165
152
  template: `
166
- <ngt-group ngtCompound [ref]="lightsRef">
167
- <ngt-directional-light
168
- *ngFor="let i; repeat: lightsAmount()"
169
- [castShadow]="lightsCastShadow()"
170
- [intensity]="lightsIntensity() / lightsAmount()"
171
- >
172
- <ngt-value [rawValue]="lightsBias()" attach="shadow.bias" />
173
- <ngt-vector2 *args="shadowMapSize()" attach="shadow.mapSize" />
174
- <ngt-orthographic-camera *args="cameraArgs()" attach="shadow.camera" />
175
- </ngt-directional-light>
176
- </ngt-group>
177
- `,
178
- imports: [NgtArgs, NgtRepeat],
153
+ <ngt-group ngtCompound [ref]="lightsRef">
154
+ <ngt-directional-light
155
+ *ngFor="let i; repeat: amount()"
156
+ [castShadow]="castShadow()"
157
+ [intensity]="intensity() / amount()"
158
+ >
159
+ <ngt-value [rawValue]="bias()" attach="shadow.bias" />
160
+ <ngt-vector2 *args="shadowsMapSize()" attach="shadow.mapSize" />
161
+ <ngt-orthographic-camera *args="cameraArgs()" attach="shadow.camera" />
162
+ </ngt-directional-light>
163
+ <ng-content />
164
+ </ngt-group>
165
+ `,
166
+ imports: [Repeat, NgtArgs],
179
167
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
180
168
  }]
181
169
  }], ctorParameters: function () { return []; }, propDecorators: { lightsRef: [{
182
170
  type: Input
183
- }], frames: [{
184
- type: Input
185
- }], position: [{
186
- type: Input
187
- }], radius: [{
188
- type: Input
189
- }], amount: [{
190
- type: Input
191
- }], intensity: [{
192
- type: Input
193
- }], ambient: [{
194
- type: Input
195
- }], castShadow: [{
196
- type: Input
197
- }], bias: [{
198
- type: Input
199
- }], mapSize: [{
200
- type: Input
201
- }], size: [{
202
- type: Input
203
- }], near: [{
204
- type: Input
205
- }], far: [{
206
- type: Input
171
+ }], _frames: [{
172
+ type: Input,
173
+ args: [{ alias: 'frames' }]
174
+ }], _position: [{
175
+ type: Input,
176
+ args: [{ alias: 'position' }]
177
+ }], _radius: [{
178
+ type: Input,
179
+ args: [{ alias: 'radius' }]
180
+ }], _amount: [{
181
+ type: Input,
182
+ args: [{ alias: 'amount' }]
183
+ }], _intensity: [{
184
+ type: Input,
185
+ args: [{ alias: 'intensity' }]
186
+ }], _ambient: [{
187
+ type: Input,
188
+ args: [{ alias: 'ambient' }]
189
+ }], _castShadow: [{
190
+ type: Input,
191
+ args: [{ alias: 'castShadow' }]
192
+ }], _bias: [{
193
+ type: Input,
194
+ args: [{ alias: 'bias' }]
195
+ }], _mapSize: [{
196
+ type: Input,
197
+ args: [{ alias: 'mapSize' }]
198
+ }], _size: [{
199
+ type: Input,
200
+ args: [{ alias: 'size' }]
201
+ }], _near: [{
202
+ type: Input,
203
+ args: [{ alias: 'near' }]
204
+ }], _far: [{
205
+ type: Input,
206
+ args: [{ alias: 'far' }]
207
207
  }] } });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9taXplZC1saWdodHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvYWNjdW11bGF0aXZlLXNoYWRvd3MvcmFuZG9taXplZC1saWdodHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUNILE9BQU8sRUFDUCxTQUFTLEVBQ1QsY0FBYyxFQUNkLE1BQU0sRUFDTixZQUFZLEVBQ1osa0NBQWtDLEdBRXJDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUV2RSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQW9DakUsTUFtQmEsb0JBQXFCLFNBQVEsY0FBeUM7SUFFL0U7b0hBQ2dIO0lBQ2hILElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUFhLFFBQVEsQ0FBQyxRQUEyQztRQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsK0RBQStEO0lBQy9ELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1B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RTs7Ozs7Ozs7Ozs7O0tBWVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUVZLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR08sTUFBTTtzQkFBbEIsS0FBSztnQkFLTyxRQUFRO3NCQUFwQixLQUFLO2dCQUtPLE1BQU07c0JBQWxCLEtBQUs7Z0JBS08sTUFBTTtzQkFBbEIsS0FBSztnQkFLTyxTQUFTO3NCQUFyQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sSUFBSTtzQkFBaEIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtPLEdBQUc7c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBOZ3RBcmdzLFxuICAgIE5ndFJlcGVhdCxcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICBleHRlbmQsXG4gICAgaW5qZWN0Tmd0UmVmLFxuICAgIHJlcXVlc3RBbmltYXRpb25JbkluamVjdGlvbkNvbnRleHQsXG4gICAgdHlwZSBOZ3RHcm91cCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbExpZ2h0LCBHcm91cCwgT3J0aG9ncmFwaGljQ2FtZXJhLCBWZWN0b3IyIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTkdUU19BQ0NVTVVMQVRJVkVfU0hBRE9XU19BUEkgfSBmcm9tICcuL2FjY3VtdWxhdGl2ZS1zaGFkb3dzJztcblxuZXh0ZW5kKHsgR3JvdXAsIERpcmVjdGlvbmFsTGlnaHQsIE9ydGhvZ3JhcGhpY0NhbWVyYSwgVmVjdG9yMiB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzUmFuZG9taXplZExpZ2h0c1N0YXRlIHtcbiAgICAvKiogSG93IG1hbnkgZnJhbWVzIGl0IHdpbGwgamlnZ2xlIHRoZSBsaWdodHMsIDEuXG4gICAgICogIEZyYW1lcyBpcyBjb250ZXh0IGF3YXJlLCBpZiBhIHByb3ZpZGVyIGxpa2UgQWNjdW11bGF0aXZlU2hhZG93cyBleGlzdHMsIGZyYW1lcyB3aWxsIGJlIHRha2VuIGZyb20gdGhlcmUhICAqL1xuICAgIGZyYW1lczogbnVtYmVyO1xuICAgIC8qKiBMaWdodCBwb3NpdGlvbiwgWzAsIDAsIDBdICovXG4gICAgcG9zaXRpb246IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXTtcbiAgICAvKiogUmFkaXVzIG9mIHRoZSBqaWdnbGUsIGhpZ2hlciB2YWx1ZXMgbWFrZSBzb2Z0ZXIgbGlnaHQsIDUgKi9cbiAgICByYWRpdXM6IG51bWJlcjtcbiAgICAvKiogQW1vdW50IG9mIGxpZ2h0cywgOCAqL1xuICAgIGFtb3VudDogbnVtYmVyO1xuICAgIC8qKiBMaWdodCBpbnRlbnNpdHksIDEgKi9cbiAgICBpbnRlbnNpdHk6IG51bWJlcjtcbiAgICAvKiogQW1iaWVudCBvY2NsdXNpb24sIGxvd2VyIHZhbHVlcyBtZWFuIGxlc3MgQU8sIGhpZ2h0IG1vcmUsIHlvdSBjYW4gbWl4IEFPIGFuZCBkaXJlY3Rpb25hbCBsaWdodCwgMC41ICovXG4gICAgYW1iaWVudDogbnVtYmVyO1xuICAgIC8qKiBJZiB0aGUgbGlnaHRzIGNhc3Qgc2hhZG93cywgdGhpcyBpcyB0cnVlIGJ5IGRlZmF1bHQgKi9cbiAgICBjYXN0U2hhZG93OiBib29sZWFuO1xuICAgIC8qKiBEZWZhdWx0IHNoYWRvdyBiaWFzLCAwICovXG4gICAgYmlhczogbnVtYmVyO1xuICAgIC8qKiBEZWZhdWx0IG1hcCBzaXplLCA1MTIgKi9cbiAgICBtYXBTaXplOiBudW1iZXI7XG4gICAgLyoqIERlZmF1bHQgc2l6ZSBvZiB0aGUgc2hhZG93IGNhbWVyYSwgMTAgKi9cbiAgICBzaXplOiBudW1iZXI7XG4gICAgLyoqIERlZmF1bHQgc2hhZG93IGNhbWVyYSBuZWFyLCAwLjUgKi9cbiAgICBuZWFyOiBudW1iZXI7XG4gICAgLyoqIERlZmF1bHQgc2hhZG93IGNhbWVyYSBmYXIsIDUwMCAqL1xuICAgIGZhcjogbnVtYmVyO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgICAgICduZ3RzLXJhbmRvbWl6ZWQtbGlnaHRzJzogTmd0R3JvdXAgJiBOZ3RzUmFuZG9taXplZExpZ2h0c1N0YXRlO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXJhbmRvbWl6ZWQtbGlnaHRzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQgW3JlZl09XCJsaWdodHNSZWZcIj5cbiAgICAgICAgICAgIDxuZ3QtZGlyZWN0aW9uYWwtbGlnaHRcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaTsgcmVwZWF0OiBsaWdodHNBbW91bnQoKVwiXG4gICAgICAgICAgICAgICAgW2Nhc3RTaGFkb3ddPVwibGlnaHRzQ2FzdFNoYWRvdygpXCJcbiAgICAgICAgICAgICAgICBbaW50ZW5zaXR5XT1cImxpZ2h0c0ludGVuc2l0eSgpIC8gbGlnaHRzQW1vdW50KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImxpZ2h0c0JpYXMoKVwiIGF0dGFjaD1cInNoYWRvdy5iaWFzXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LXZlY3RvcjIgKmFyZ3M9XCJzaGFkb3dNYXBTaXplKClcIiBhdHRhY2g9XCJzaGFkb3cubWFwU2l6ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC1vcnRob2dyYXBoaWMtY2FtZXJhICphcmdzPVwiY2FtZXJhQXJncygpXCIgYXR0YWNoPVwic2hhZG93LmNhbWVyYVwiIC8+XG4gICAgICAgICAgICA8L25ndC1kaXJlY3Rpb25hbC1saWdodD5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0QXJncywgTmd0UmVwZWF0XSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNSYW5kb21pemVkTGlnaHRzIGV4dGVuZHMgTmd0U2lnbmFsU3RvcmU8Tmd0c1JhbmRvbWl6ZWRMaWdodHNTdGF0ZT4ge1xuICAgIEBJbnB1dCgpIGxpZ2h0c1JlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5Hcm91cD4oKTtcbiAgICAvKiogSG93IG1hbnkgZnJhbWVzIGl0IHdpbGwgamlnZ2xlIHRoZSBsaWdodHMsIDEuXG4gICAgICogIEZyYW1lcyBpcyBjb250ZXh0IGF3YXJlLCBpZiBhIHByb3ZpZGVyIGxpa2UgQWNjdW11bGF0aXZlU2hhZG93cyBleGlzdHMsIGZyYW1lcyB3aWxsIGJlIHRha2VuIGZyb20gdGhlcmUhICAqL1xuICAgIEBJbnB1dCgpIHNldCBmcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmFtZXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIExpZ2h0IHBvc2l0aW9uLCBbMCwgMCwgMF0gKi9cbiAgICBASW5wdXQoKSBzZXQgcG9zaXRpb24ocG9zaXRpb246IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXSkge1xuICAgICAgICB0aGlzLnNldCh7IHBvc2l0aW9uIH0pO1xuICAgIH1cblxuICAgIC8qKiBSYWRpdXMgb2YgdGhlIGppZ2dsZSwgaGlnaGVyIHZhbHVlcyBtYWtlIHNvZnRlciBsaWdodCwgNSAqL1xuICAgIEBJbnB1dCgpIHNldCByYWRpdXMocmFkaXVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYWRpdXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIEFtb3VudCBvZiBsaWdodHMsIDggKi9cbiAgICBASW5wdXQoKSBzZXQgYW1vdW50KGFtb3VudDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYW1vdW50IH0pO1xuICAgIH1cblxuICAgIC8qKiBMaWdodCBpbnRlbnNpdHksIDEgKi9cbiAgICBASW5wdXQoKSBzZXQgaW50ZW5zaXR5KGludGVuc2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW50ZW5zaXR5IH0pO1xuICAgIH1cblxuICAgIC8qKiBBbWJpZW50IG9jY2x1c2lvbiwgbG93ZXIgdmFsdWVzIG1lYW4gbGVzcyBBTywgaGlnaHQgbW9yZSwgeW91IGNhbiBtaXggQU8gYW5kIGRpcmVjdGlvbmFsIGxpZ2h0LCAwLjUgKi9cbiAgICBASW5wdXQoKSBzZXQgYW1iaWVudChhbWJpZW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBhbWJpZW50IH0pO1xuICAgIH1cblxuICAgIC8qKiBJZiB0aGUgbGlnaHRzIGNhc3Qgc2hhZG93cywgdGhpcyBpcyB0cnVlIGJ5IGRlZmF1bHQgKi9cbiAgICBASW5wdXQoKSBzZXQgY2FzdFNoYWRvdyhjYXN0U2hhZG93OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2FzdFNoYWRvdyB9KTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBzaGFkb3cgYmlhcywgMCAqL1xuICAgIEBJbnB1dCgpIHNldCBiaWFzKGJpYXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGJpYXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgbWFwIHNpemUsIDUxMiAqL1xuICAgIEBJbnB1dCgpIHNldCBtYXBTaXplKG1hcFNpemU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1hcFNpemUgfSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgc2l6ZSBvZiB0aGUgc2hhZG93IGNhbWVyYSwgMTAgKi9cbiAgICBASW5wdXQoKSBzZXQgc2l6ZShzaXplOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzaXplIH0pO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHNoYWRvdyBjYW1lcmEgbmVhciwgMC41ICovXG4gICAgQElucHV0KCkgc2V0IG5lYXIobmVhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbmVhciB9KTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBzaGFkb3cgY2FtZXJhIGZhciwgNTAwICovXG4gICAgQElucHV0KCkgc2V0IGZhcihmYXI6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGZhciB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSAjcGFyZW50ID0gaW5qZWN0KE5HVFNfQUNDVU1VTEFUSVZFX1NIQURPV1NfQVBJKTtcblxuICAgIHJlYWRvbmx5ICNzaXplID0gdGhpcy5zZWxlY3QoJ3NpemUnKTtcbiAgICByZWFkb25seSAjbmVhciA9IHRoaXMuc2VsZWN0KCduZWFyJyk7XG4gICAgcmVhZG9ubHkgI2ZhciA9IHRoaXMuc2VsZWN0KCdmYXInKTtcbiAgICByZWFkb25seSAjbWFwU2l6ZSA9IHRoaXMuc2VsZWN0KCdtYXBTaXplJyk7XG4gICAgcmVhZG9ubHkgI2FtYmllbnQgPSB0aGlzLnNlbGVjdCgnYW1iaWVudCcpO1xuICAgIHJlYWRvbmx5ICNwb3NpdGlvbiA9IHRoaXMuc2VsZWN0KCdwb3NpdGlvbicpO1xuICAgIHJlYWRvbmx5ICNyYWRpdXMgPSB0aGlzLnNlbGVjdCgncmFkaXVzJyk7XG5cbiAgICByZWFkb25seSBsaWdodHNBbW91bnQgPSB0aGlzLnNlbGVjdCgnYW1vdW50Jyk7XG4gICAgcmVhZG9ubHkgbGlnaHRzQ2FzdFNoYWRvdyA9IHRoaXMuc2VsZWN0KCdjYXN0U2hhZG93Jyk7XG4gICAgcmVhZG9ubHkgbGlnaHRzSW50ZW5zaXR5ID0gdGhpcy5zZWxlY3QoJ2ludGVuc2l0eScpO1xuICAgIHJlYWRvbmx5IGxpZ2h0c0JpYXMgPSB0aGlzLnNlbGVjdCgnYmlhcycpO1xuXG4gICAgcmVhZG9ubHkgc2hhZG93TWFwU2l6ZSA9IGNvbXB1dGVkKCgpID0+IFt0aGlzLiNtYXBTaXplKCksIHRoaXMuI21hcFNpemUoKV0pO1xuICAgIHJlYWRvbmx5IGNhbWVyYUFyZ3MgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAgICAgIC10aGlzLiNzaXplKCksXG4gICAgICAgIHRoaXMuI3NpemUoKSxcbiAgICAgICAgdGhpcy4jc2l6ZSgpLFxuICAgICAgICAtdGhpcy4jc2l6ZSgpLFxuICAgICAgICB0aGlzLiNuZWFyKCksXG4gICAgICAgIHRoaXMuI2ZhcigpLFxuICAgIF0pO1xuXG4gICAgcmVhZG9ubHkgbGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gbmV3IFRIUkVFLlZlY3RvcjMoLi4udGhpcy4jcG9zaXRpb24oKSkubGVuZ3RoKCkpO1xuXG4gICAgcmVhZG9ubHkgYXBpID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCByYWRpdXMgPSB0aGlzLiNyYWRpdXMoKTtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLiNwb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBhbWJpZW50ID0gdGhpcy4jYW1iaWVudCgpO1xuICAgICAgICBjb25zdCBsZW5ndGggPSB0aGlzLmxlbmd0aCgpO1xuICAgICAgICBjb25zdCBsaWdodHMgPSB0aGlzLmxpZ2h0c1JlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBsaWdodDogVEhSRUUuRGlyZWN0aW9uYWxMaWdodCB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChsaWdodHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBsID0gMDsgbCA8IGxpZ2h0cy5jaGlsZHJlbi5sZW5ndGg7IGwrKykge1xuICAgICAgICAgICAgICAgICAgICBsaWdodCA9IGxpZ2h0cy5jaGlsZHJlbltsXSBhcyBUSFJFRS5EaXJlY3Rpb25hbExpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA+IGFtYmllbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0LnBvc2l0aW9uLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblswXSArIFRIUkVFLk1hdGhVdGlscy5yYW5kRmxvYXRTcHJlYWQocmFkaXVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblsxXSArIFRIUkVFLk1hdGhVdGlscy5yYW5kRmxvYXRTcHJlYWQocmFkaXVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblsyXSArIFRIUkVFLk1hdGhVdGlscy5yYW5kRmxvYXRTcHJlYWQocmFkaXVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhbWJkYSA9IE1hdGguYWNvcygyICogTWF0aC5yYW5kb20oKSAtIDEpIC0gTWF0aC5QSSAvIDIuMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBoaSA9IDIgKiBNYXRoLlBJICogTWF0aC5yYW5kb20oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0LnBvc2l0aW9uLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmNvcyhsYW1iZGEpICogTWF0aC5jb3MocGhpKSAqIGxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhNYXRoLmNvcyhsYW1iZGEpICogTWF0aC5zaW4ocGhpKSAqIGxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5zaW4obGFtYmRhKSAqIGxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4geyB1cGRhdGUgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBjYXN0U2hhZG93OiB0cnVlLFxuICAgICAgICAgICAgYmlhczogMC4wMDEsXG4gICAgICAgICAgICBtYXBTaXplOiA1MTIsXG4gICAgICAgICAgICBzaXplOiA1LFxuICAgICAgICAgICAgbmVhcjogMC41LFxuICAgICAgICAgICAgZmFyOiA1MDAsXG4gICAgICAgICAgICBmcmFtZXM6IDEsXG4gICAgICAgICAgICBwb3NpdGlvbjogWzAsIDAsIDBdLFxuICAgICAgICAgICAgcmFkaXVzOiAxLFxuICAgICAgICAgICAgYW1vdW50OiA4LFxuICAgICAgICAgICAgaW50ZW5zaXR5OiAxLFxuICAgICAgICAgICAgYW1iaWVudDogMC41LFxuICAgICAgICB9KTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkluSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiN1cGRhdGVMaWdodHNNYXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI3VwZGF0ZUxpZ2h0c01hcCgpIHtcbiAgICAgICAgZWZmZWN0KChvbkNsZWFudXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpZ2h0cyA9IHRoaXMubGlnaHRzUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIWxpZ2h0cykgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy4jcGFyZW50KCk7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgcGFyZW50LmxpZ2h0cy5zZXQobGlnaHRzLnV1aWQsIHRoaXMuYXBpKTtcbiAgICAgICAgICAgICAgICBvbkNsZWFudXAoKCkgPT4gcGFyZW50LmxpZ2h0cy5kZWxldGUobGlnaHRzLnV1aWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9taXplZC1saWdodHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvYWNjdW11bGF0aXZlLXNoYWRvd3MvcmFuZG9taXplZC1saWdodHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUUxRSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQTJEakUsTUFBTSxPQUFPLG9CQUFvQjtJQWtCaEM7b0hBQ2dIO0lBQ2hILElBQWdDLE9BQU8sQ0FBQyxNQUFjO1FBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLElBQWtDLFNBQVMsQ0FBQyxRQUEyQztRQUN0RixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJ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QUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ29tcG9uZW50LCBJbnB1dCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kLCBpbmplY3ROZ3RSZWYsIHNpZ25hbFN0b3JlLCB0eXBlIE5ndEdyb3VwIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyByZXZpc2lvbiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS91dGlscyc7XG5pbXBvcnQgeyBSZXBlYXQgfSBmcm9tICduZ3h0ZW5zaW9uL3JlcGVhdCc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbExpZ2h0LCBHcm91cCwgT3J0aG9ncmFwaGljQ2FtZXJhLCBWZWN0b3IyIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NBcGkgfSBmcm9tICcuL2FjY3VtdWxhdGl2ZS1zaGFkb3dzJztcblxuZXh0ZW5kKHsgR3JvdXAsIERpcmVjdGlvbmFsTGlnaHQsIE9ydGhvZ3JhcGhpY0NhbWVyYSwgVmVjdG9yMiB9KTtcblxuZXhwb3J0IHR5cGUgTmd0c1JhbmRvbWl6ZWRMaWdodHNTdGF0ZSA9IHtcblx0LyoqIEhvdyBtYW55IGZyYW1lcyBpdCB3aWxsIGppZ2dsZSB0aGUgbGlnaHRzLCAxLlxuXHQgKiAgRnJhbWVzIGlzIGNvbnRleHQgYXdhcmUsIGlmIGEgcHJvdmlkZXIgbGlrZSBBY2N1bXVsYXRpdmVTaGFkb3dzIGV4aXN0cywgZnJhbWVzIHdpbGwgYmUgdGFrZW4gZnJvbSB0aGVyZSEgICovXG5cdGZyYW1lczogbnVtYmVyO1xuXHQvKiogTGlnaHQgcG9zaXRpb24sIFswLCAwLCAwXSAqL1xuXHRwb3NpdGlvbjogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdO1xuXHQvKiogUmFkaXVzIG9mIHRoZSBqaWdnbGUsIGhpZ2hlciB2YWx1ZXMgbWFrZSBzb2Z0ZXIgbGlnaHQsIDUgKi9cblx0cmFkaXVzOiBudW1iZXI7XG5cdC8qKiBBbW91bnQgb2YgbGlnaHRzLCA4ICovXG5cdGFtb3VudDogbnVtYmVyO1xuXHQvKiogTGlnaHQgaW50ZW5zaXR5LCAxICovXG5cdGludGVuc2l0eTogbnVtYmVyO1xuXHQvKiogQW1iaWVudCBvY2NsdXNpb24sIGxvd2VyIHZhbHVlcyBtZWFuIGxlc3MgQU8sIGhpZ2h0IG1vcmUsIHlvdSBjYW4gbWl4IEFPIGFuZCBkaXJlY3Rpb25hbCBsaWdodCwgMC41ICovXG5cdGFtYmllbnQ6IG51bWJlcjtcblx0LyoqIElmIHRoZSBsaWdodHMgY2FzdCBzaGFkb3dzLCB0aGlzIGlzIHRydWUgYnkgZGVmYXVsdCAqL1xuXHRjYXN0U2hhZG93OiBib29sZWFuO1xuXHQvKiogRGVmYXVsdCBzaGFkb3cgYmlhcywgMCAqL1xuXHRiaWFzOiBudW1iZXI7XG5cdC8qKiBEZWZhdWx0IG1hcCBzaXplLCA1MTIgKi9cblx0bWFwU2l6ZTogbnVtYmVyO1xuXHQvKiogRGVmYXVsdCBzaXplIG9mIHRoZSBzaGFkb3cgY2FtZXJhLCAxMCAqL1xuXHRzaXplOiBudW1iZXI7XG5cdC8qKiBEZWZhdWx0IHNoYWRvdyBjYW1lcmEgbmVhciwgMC41ICovXG5cdG5lYXI6IG51bWJlcjtcblx0LyoqIERlZmF1bHQgc2hhZG93IGNhbWVyYSBmYXIsIDUwMCAqL1xuXHRmYXI6IG51bWJlcjtcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogQGV4dGVuZHMgbmd0LWdyb3VwXG5cdFx0ICovXG5cdFx0J25ndHMtcmFuZG9taXplZC1saWdodHMnOiBOZ3RzUmFuZG9taXplZExpZ2h0c1N0YXRlICYgTmd0R3JvdXA7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1yYW5kb21pemVkLWxpZ2h0cycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCBuZ3RDb21wb3VuZCBbcmVmXT1cImxpZ2h0c1JlZlwiPlxuXHRcdFx0PG5ndC1kaXJlY3Rpb25hbC1saWdodFxuXHRcdFx0XHQqbmdGb3I9XCJsZXQgaTsgcmVwZWF0OiBhbW91bnQoKVwiXG5cdFx0XHRcdFtjYXN0U2hhZG93XT1cImNhc3RTaGFkb3coKVwiXG5cdFx0XHRcdFtpbnRlbnNpdHldPVwiaW50ZW5zaXR5KCkgLyBhbW91bnQoKVwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImJpYXMoKVwiIGF0dGFjaD1cInNoYWRvdy5iaWFzXCIgLz5cblx0XHRcdFx0PG5ndC12ZWN0b3IyICphcmdzPVwic2hhZG93c01hcFNpemUoKVwiIGF0dGFjaD1cInNoYWRvdy5tYXBTaXplXCIgLz5cblx0XHRcdFx0PG5ndC1vcnRob2dyYXBoaWMtY2FtZXJhICphcmdzPVwiY2FtZXJhQXJncygpXCIgYXR0YWNoPVwic2hhZG93LmNhbWVyYVwiIC8+XG5cdFx0XHQ8L25ndC1kaXJlY3Rpb25hbC1saWdodD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdGltcG9ydHM6IFtSZXBlYXQsIE5ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNSYW5kb21pemVkTGlnaHRzIHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzUmFuZG9taXplZExpZ2h0c1N0YXRlPih7XG5cdFx0Y2FzdFNoYWRvdzogdHJ1ZSxcblx0XHRiaWFzOiAwLjAwMSxcblx0XHRtYXBTaXplOiA1MTIsXG5cdFx0c2l6ZTogNSxcblx0XHRuZWFyOiAwLjUsXG5cdFx0ZmFyOiA1MDAsXG5cdFx0ZnJhbWVzOiAxLFxuXHRcdHBvc2l0aW9uOiBbMCwgMCwgMF0sXG5cdFx0cmFkaXVzOiAxLFxuXHRcdGFtb3VudDogOCxcblx0XHRpbnRlbnNpdHk6IHJldmlzaW9uID49IDE1NSA/IE1hdGguUEkgOiAxLFxuXHRcdGFtYmllbnQ6IDAuNSxcblx0fSk7XG5cdE1hdGggPSBNYXRoO1xuXG5cdEBJbnB1dCgpIGxpZ2h0c1JlZiA9IGluamVjdE5ndFJlZjxHcm91cD4oKTtcblx0LyoqIEhvdyBtYW55IGZyYW1lcyBpdCB3aWxsIGppZ2dsZSB0aGUgbGlnaHRzLCAxLlxuXHQgKiAgRnJhbWVzIGlzIGNvbnRleHQgYXdhcmUsIGlmIGEgcHJvdmlkZXIgbGlrZSBBY2N1bXVsYXRpdmVTaGFkb3dzIGV4aXN0cywgZnJhbWVzIHdpbGwgYmUgdGFrZW4gZnJvbSB0aGVyZSEgICovXG5cdEBJbnB1dCh7IGFsaWFzOiAnZnJhbWVzJyB9KSBzZXQgX2ZyYW1lcyhmcmFtZXM6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZyYW1lcyB9KTtcblx0fVxuXG5cdC8qKiBMaWdodCBwb3NpdGlvbiwgWzAsIDAsIDBdICovXG5cdEBJbnB1dCh7IGFsaWFzOiAncG9zaXRpb24nIH0pIHNldCBfcG9zaXRpb24ocG9zaXRpb246IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHBvc2l0aW9uIH0pO1xuXHR9XG5cblx0LyoqIFJhZGl1cyBvZiB0aGUgamlnZ2xlLCBoaWdoZXIgdmFsdWVzIG1ha2Ugc29mdGVyIGxpZ2h0LCA1ICovXG5cdEBJbnB1dCh7IGFsaWFzOiAncmFkaXVzJyB9KSBzZXQgX3JhZGl1cyhyYWRpdXM6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJhZGl1cyB9KTtcblx0fVxuXG5cdC8qKiBBbW91bnQgb2YgbGlnaHRzLCA4ICovXG5cdEBJbnB1dCh7IGFsaWFzOiAnYW1vdW50JyB9KSBzZXQgX2Ftb3VudChhbW91bnQ6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGFtb3VudCB9KTtcblx0fVxuXG5cdC8qKiBMaWdodCBpbnRlbnNpdHksIDEgKi9cblx0QElucHV0KHsgYWxpYXM6ICdpbnRlbnNpdHknIH0pIHNldCBfaW50ZW5zaXR5KGludGVuc2l0eTogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgaW50ZW5zaXR5IH0pO1xuXHR9XG5cblx0LyoqIEFtYmllbnQgb2NjbHVzaW9uLCBsb3dlciB2YWx1ZXMgbWVhbiBsZXNzIEFPLCBoaWdodCBtb3JlLCB5b3UgY2FuIG1peCBBTyBhbmQgZGlyZWN0aW9uYWwgbGlnaHQsIDAuNSAqL1xuXHRASW5wdXQoeyBhbGlhczogJ2FtYmllbnQnIH0pIHNldCBfYW1iaWVudChhbWJpZW50OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBhbWJpZW50IH0pO1xuXHR9XG5cblx0LyoqIElmIHRoZSBsaWdodHMgY2FzdCBzaGFkb3dzLCB0aGlzIGlzIHRydWUgYnkgZGVmYXVsdCAqL1xuXHRASW5wdXQoeyBhbGlhczogJ2Nhc3RTaGFkb3cnIH0pIHNldCBfY2FzdFNoYWRvdyhjYXN0U2hhZG93OiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY2FzdFNoYWRvdyB9KTtcblx0fVxuXG5cdC8qKiBEZWZhdWx0IHNoYWRvdyBiaWFzLCAwICovXG5cdEBJbnB1dCh7IGFsaWFzOiAnYmlhcycgfSkgc2V0IF9iaWFzKGJpYXM6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGJpYXMgfSk7XG5cdH1cblxuXHQvKiogRGVmYXVsdCBtYXAgc2l6ZSwgNTEyICovXG5cdEBJbnB1dCh7IGFsaWFzOiAnbWFwU2l6ZScgfSkgc2V0IF9tYXBTaXplKG1hcFNpemU6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG1hcFNpemUgfSk7XG5cdH1cblxuXHQvKiogRGVmYXVsdCBzaXplIG9mIHRoZSBzaGFkb3cgY2FtZXJhLCAxMCAqL1xuXHRASW5wdXQoeyBhbGlhczogJ3NpemUnIH0pIHNldCBfc2l6ZShzaXplOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzaXplIH0pO1xuXHR9XG5cblx0LyoqIERlZmF1bHQgc2hhZG93IGNhbWVyYSBuZWFyLCAwLjUgKi9cblx0QElucHV0KHsgYWxpYXM6ICduZWFyJyB9KSBzZXQgX25lYXIobmVhcjogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbmVhciB9KTtcblx0fVxuXG5cdC8qKiBEZWZhdWx0IHNoYWRvdyBjYW1lcmEgZmFyLCA1MDAgKi9cblx0QElucHV0KHsgYWxpYXM6ICdmYXInIH0pIHNldCBfZmFyKGZhcjogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZmFyIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBwb3NpdGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgncG9zaXRpb24nKTtcblx0cHJpdmF0ZSBhbWJpZW50ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdhbWJpZW50Jyk7XG5cdHByaXZhdGUgcmFkaXVzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyYWRpdXMnKTtcblx0cHJpdmF0ZSBtYXBTaXplID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdtYXBTaXplJyk7XG5cdHByaXZhdGUgc2l6ZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc2l6ZScpO1xuXHRwcml2YXRlIG5lYXIgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ25lYXInKTtcblx0cHJpdmF0ZSBmYXIgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZhcicpO1xuXG5cdHByaXZhdGUgbGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gbmV3IFRIUkVFLlZlY3RvcjMoLi4udGhpcy5wb3NpdGlvbigpKS5sZW5ndGgoKSk7XG5cblx0cHJpdmF0ZSBzaGFkb3dzQXBpID0gaW5qZWN0Tmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NBcGkoKTtcblxuXHRhbW91bnQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2Ftb3VudCcpO1xuXHRjYXN0U2hhZG93ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdjYXN0U2hhZG93Jyk7XG5cdGludGVuc2l0eSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnaW50ZW5zaXR5Jyk7XG5cdGJpYXMgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2JpYXMnKTtcblxuXHRzaGFkb3dzTWFwU2l6ZSA9IGNvbXB1dGVkKCgpID0+IFt0aGlzLm1hcFNpemUoKSwgdGhpcy5tYXBTaXplKCldKTtcblx0Y2FtZXJhQXJncyA9IGNvbXB1dGVkKCgpID0+IFstdGhpcy5zaXplKCksIHRoaXMuc2l6ZSgpLCB0aGlzLnNpemUoKSwgLXRoaXMuc2l6ZSgpLCB0aGlzLm5lYXIoKSwgdGhpcy5mYXIoKV0pO1xuXG5cdGFwaSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbbGlnaHRzLCBhbWJpZW50LCByYWRpdXMsIGxlbmd0aCwgcG9zaXRpb25dID0gW1xuXHRcdFx0dGhpcy5saWdodHNSZWYubmF0aXZlRWxlbWVudCxcblx0XHRcdHRoaXMuYW1iaWVudCgpLFxuXHRcdFx0dGhpcy5yYWRpdXMoKSxcblx0XHRcdHRoaXMubGVuZ3RoKCksXG5cdFx0XHR0aGlzLnBvc2l0aW9uKCksXG5cdFx0XTtcblxuXHRcdGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcblx0XHRcdGlmIChsaWdodHMpIHtcblx0XHRcdFx0Zm9yIChsZXQgbCA9IDA7IGwgPCBsaWdodHMuY2hpbGRyZW4ubGVuZ3RoOyBsKyspIHtcblx0XHRcdFx0XHRjb25zdCBsaWdodCA9IGxpZ2h0cy5jaGlsZHJlbltsXSBhcyBUSFJFRS5EaXJlY3Rpb25hbExpZ2h0O1xuXHRcdFx0XHRcdGlmIChNYXRoLnJhbmRvbSgpID4gYW1iaWVudCkge1xuXHRcdFx0XHRcdFx0bGlnaHQucG9zaXRpb24uc2V0KFxuXHRcdFx0XHRcdFx0XHRwb3NpdGlvblswXSArIFRIUkVFLk1hdGhVdGlscy5yYW5kRmxvYXRTcHJlYWQocmFkaXVzKSxcblx0XHRcdFx0XHRcdFx0cG9zaXRpb25bMV0gKyBUSFJFRS5NYXRoVXRpbHMucmFuZEZsb2F0U3ByZWFkKHJhZGl1cyksXG5cdFx0XHRcdFx0XHRcdHBvc2l0aW9uWzJdICsgVEhSRUUuTWF0aFV0aWxzLnJhbmRGbG9hdFNwcmVhZChyYWRpdXMpLFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgbGFtYmRhID0gTWF0aC5hY29zKDIgKiBNYXRoLnJhbmRvbSgpIC0gMSkgLSBNYXRoLlBJIC8gMi4wO1xuXHRcdFx0XHRcdFx0Y29uc3QgcGhpID0gMiAqIE1hdGguUEkgKiBNYXRoLnJhbmRvbSgpO1xuXHRcdFx0XHRcdFx0bGlnaHQucG9zaXRpb24uc2V0KFxuXHRcdFx0XHRcdFx0XHRNYXRoLmNvcyhsYW1iZGEpICogTWF0aC5jb3MocGhpKSAqIGxlbmd0aCxcblx0XHRcdFx0XHRcdFx0TWF0aC5hYnMoTWF0aC5jb3MobGFtYmRhKSAqIE1hdGguc2luKHBoaSkgKiBsZW5ndGgpLFxuXHRcdFx0XHRcdFx0XHRNYXRoLnNpbihsYW1iZGEpICogbGVuZ3RoLFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0cmV0dXJuIHsgdXBkYXRlIH07XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMudXBkYXRlTGlnaHRNYXAoKTtcblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlTGlnaHRNYXAoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGxpZ2h0cyA9IHRoaXMubGlnaHRzUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIWxpZ2h0cykgcmV0dXJuO1xuXHRcdFx0Y29uc3Qgc2hhZG93c0FwaSA9IHRoaXMuc2hhZG93c0FwaSgpO1xuXHRcdFx0aWYgKHNoYWRvd3NBcGkpIHtcblx0XHRcdFx0c2hhZG93c0FwaS5saWdodHMuc2V0KGxpZ2h0cy51dWlkLCB0aGlzLmFwaSk7XG5cdFx0XHRcdG9uQ2xlYW51cCgoKSA9PiBzaGFkb3dzQXBpLmxpZ2h0cy5kZWxldGUobGlnaHRzLnV1aWQpKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
@@ -0,0 +1,77 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, effect } from '@angular/core';
2
+ import { NgtArgs, checkUpdate, extend, injectNgtRef, signalStore } from 'angular-three';
3
+ import { Group, Mesh, PlaneGeometry } from 'three';
4
+ import * as i0 from "@angular/core";
5
+ const easeInExpo = (x) => (x === 0 ? 0 : Math.pow(2, 10 * x - 10));
6
+ extend({ Group, Mesh, PlaneGeometry });
7
+ export class NgtsBackdrop {
8
+ set _floor(floor) {
9
+ this.inputs.set({ floor });
10
+ }
11
+ set _segments(segments) {
12
+ this.inputs.set({ segments });
13
+ }
14
+ set _receiveShadow(receiveShadow) {
15
+ this.inputs.set({ receiveShadow });
16
+ }
17
+ constructor() {
18
+ this.Math = Math;
19
+ this.inputs = signalStore({ floor: 0.25, segments: 20, receiveShadow: false });
20
+ this.floor = this.inputs.select('floor');
21
+ this.planeRef = injectNgtRef();
22
+ this.segments = this.inputs.select('segments');
23
+ this.receiveShadow = this.inputs.select('receiveShadow');
24
+ effect(() => {
25
+ const plane = this.planeRef.nativeElement;
26
+ if (!plane)
27
+ return;
28
+ const [segments, floor] = [this.segments(), this.floor()];
29
+ const offset = segments / segments / 2;
30
+ const position = plane.attributes['position'];
31
+ let i = 0;
32
+ for (let x = 0; x < segments + 1; x++) {
33
+ for (let y = 0; y < segments + 1; y++) {
34
+ position.setXYZ(i++, x / segments - offset + (x === 0 ? -floor : 0), y / segments - offset, easeInExpo(x / segments));
35
+ }
36
+ }
37
+ checkUpdate(position);
38
+ plane.computeVertexNormals();
39
+ });
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsBackdrop, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsBackdrop, isStandalone: true, selector: "ngts-backdrop", inputs: { _floor: ["floor", "_floor"], _segments: ["segments", "_segments"], _receiveShadow: ["receiveShadow", "_receiveShadow"] }, ngImport: i0, template: `
43
+ <ngt-group ngtCompound>
44
+ <ngt-mesh [receiveShadow]="receiveShadow()" [rotation]="[-Math.PI / 2, 0, Math.PI / 2]">
45
+ <ngt-plane-geometry [ref]="planeRef" *args="[1, 1, segments(), segments()]" />
46
+ <ng-content />
47
+ </ngt-mesh>
48
+ </ngt-group>
49
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsBackdrop, decorators: [{
52
+ type: Component,
53
+ args: [{
54
+ selector: 'ngts-backdrop',
55
+ standalone: true,
56
+ template: `
57
+ <ngt-group ngtCompound>
58
+ <ngt-mesh [receiveShadow]="receiveShadow()" [rotation]="[-Math.PI / 2, 0, Math.PI / 2]">
59
+ <ngt-plane-geometry [ref]="planeRef" *args="[1, 1, segments(), segments()]" />
60
+ <ng-content />
61
+ </ngt-mesh>
62
+ </ngt-group>
63
+ `,
64
+ imports: [NgtArgs],
65
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
66
+ }]
67
+ }], ctorParameters: function () { return []; }, propDecorators: { _floor: [{
68
+ type: Input,
69
+ args: [{ alias: 'floor' }]
70
+ }], _segments: [{
71
+ type: Input,
72
+ args: [{ alias: 'segments' }]
73
+ }], _receiveShadow: [{
74
+ type: Input,
75
+ args: [{ alias: 'receiveShadow' }]
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2Ryb3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvYmFja2Ryb3AvYmFja2Ryb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQXdCLE1BQU0sT0FBTyxDQUFDOztBQUV6RSxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQWlCM0UsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBZ0J2QyxNQUFNLE9BQU8sWUFBWTtJQUt4QixJQUErQixNQUFNLENBQUMsS0FBYTtRQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQWtDLFNBQVMsQ0FBQyxRQUFnQjtRQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQXVDLGNBQWMsQ0FBQyxhQUFzQjtRQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQVFEO1FBdEJBLFNBQUksR0FBRyxJQUFJLENBQUM7UUFFSixXQUFNLEdBQUcsV0FBVyxDQUFvQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQWM3RixVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUMsYUFBUSxHQUFHLFlBQVksRUFBaUIsQ0FBQztRQUN6QyxhQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsa0JBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUduRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTztZQUNuQixNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFELE1BQU0sTUFBTSxHQUFHLFFBQVEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFvQixDQUFDO1lBQ2pFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNWLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdEMsUUFBUSxDQUFDLE1BQU0sQ0FDZCxDQUFDLEVBQUUsRUFDSCxDQUFDLEdBQUcsUUFBUSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDOUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxNQUFNLEVBQ3JCLFVBQVUsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQ3hCLENBQUM7aUJBQ0Y7YUFDRDtZQUVELFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBN0NXLFlBQVk7a0dBQVosWUFBWSw2TUFYZDs7Ozs7OztFQU9ULDREQUNTLE9BQU87OzJGQUdMLFlBQVk7a0JBZHhCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7RUFPVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFNK0IsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSVMsU0FBUztzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBSVcsY0FBYztzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIElucHV0LCBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGNoZWNrVXBkYXRlLCBleHRlbmQsIGluamVjdE5ndFJlZiwgc2lnbmFsU3RvcmUsIHR5cGUgTmd0R3JvdXAgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEdyb3VwLCBNZXNoLCBQbGFuZUdlb21ldHJ5LCB0eXBlIEJ1ZmZlckF0dHJpYnV0ZSB9IGZyb20gJ3RocmVlJztcblxuY29uc3QgZWFzZUluRXhwbyA9ICh4OiBudW1iZXIpID0+ICh4ID09PSAwID8gMCA6IE1hdGgucG93KDIsIDEwICogeCAtIDEwKSk7XG5cbmV4cG9ydCB0eXBlIE5ndHNCYWNrZHJvcFN0YXRlID0ge1xuXHRmbG9vcjogbnVtYmVyO1xuXHRzZWdtZW50czogbnVtYmVyO1xuXHRyZWNlaXZlU2hhZG93OiBib29sZWFuO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3QtZ3JvdXBcblx0XHQgKi9cblx0XHQnbmd0cy1iYWNrZHJvcCc6IE5ndHNCYWNrZHJvcFN0YXRlICYgTmd0R3JvdXA7XG5cdH1cbn1cblxuZXh0ZW5kKHsgR3JvdXAsIE1lc2gsIFBsYW5lR2VvbWV0cnkgfSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtYmFja2Ryb3AnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQ+XG5cdFx0XHQ8bmd0LW1lc2ggW3JlY2VpdmVTaGFkb3ddPVwicmVjZWl2ZVNoYWRvdygpXCIgW3JvdGF0aW9uXT1cIlstTWF0aC5QSSAvIDIsIDAsIE1hdGguUEkgLyAyXVwiPlxuXHRcdFx0XHQ8bmd0LXBsYW5lLWdlb21ldHJ5IFtyZWZdPVwicGxhbmVSZWZcIiAqYXJncz1cIlsxLCAxLCBzZWdtZW50cygpLCBzZWdtZW50cygpXVwiIC8+XG5cdFx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0XHQ8L25ndC1tZXNoPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0JhY2tkcm9wIHtcblx0TWF0aCA9IE1hdGg7XG5cblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzQmFja2Ryb3BTdGF0ZT4oeyBmbG9vcjogMC4yNSwgc2VnbWVudHM6IDIwLCByZWNlaXZlU2hhZG93OiBmYWxzZSB9KTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2Zsb29yJyB9KSBzZXQgX2Zsb29yKGZsb29yOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmbG9vciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc2VnbWVudHMnIH0pIHNldCBfc2VnbWVudHMoc2VnbWVudHM6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNlZ21lbnRzIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdyZWNlaXZlU2hhZG93JyB9KSBzZXQgX3JlY2VpdmVTaGFkb3cocmVjZWl2ZVNoYWRvdzogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJlY2VpdmVTaGFkb3cgfSk7XG5cdH1cblxuXHRwcml2YXRlIGZsb29yID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdmbG9vcicpO1xuXG5cdHBsYW5lUmVmID0gaW5qZWN0Tmd0UmVmPFBsYW5lR2VvbWV0cnk+KCk7XG5cdHNlZ21lbnRzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzZWdtZW50cycpO1xuXHRyZWNlaXZlU2hhZG93ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyZWNlaXZlU2hhZG93Jyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHBsYW5lID0gdGhpcy5wbGFuZVJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFwbGFuZSkgcmV0dXJuO1xuXHRcdFx0Y29uc3QgW3NlZ21lbnRzLCBmbG9vcl0gPSBbdGhpcy5zZWdtZW50cygpLCB0aGlzLmZsb29yKCldO1xuXHRcdFx0Y29uc3Qgb2Zmc2V0ID0gc2VnbWVudHMgLyBzZWdtZW50cyAvIDI7XG5cdFx0XHRjb25zdCBwb3NpdGlvbiA9IHBsYW5lLmF0dHJpYnV0ZXNbJ3Bvc2l0aW9uJ10gYXMgQnVmZmVyQXR0cmlidXRlO1xuXHRcdFx0bGV0IGkgPSAwO1xuXHRcdFx0Zm9yIChsZXQgeCA9IDA7IHggPCBzZWdtZW50cyArIDE7IHgrKykge1xuXHRcdFx0XHRmb3IgKGxldCB5ID0gMDsgeSA8IHNlZ21lbnRzICsgMTsgeSsrKSB7XG5cdFx0XHRcdFx0cG9zaXRpb24uc2V0WFlaKFxuXHRcdFx0XHRcdFx0aSsrLFxuXHRcdFx0XHRcdFx0eCAvIHNlZ21lbnRzIC0gb2Zmc2V0ICsgKHggPT09IDAgPyAtZmxvb3IgOiAwKSxcblx0XHRcdFx0XHRcdHkgLyBzZWdtZW50cyAtIG9mZnNldCxcblx0XHRcdFx0XHRcdGVhc2VJbkV4cG8oeCAvIHNlZ21lbnRzKSxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNoZWNrVXBkYXRlKHBvc2l0aW9uKTtcblx0XHRcdHBsYW5lLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,69 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect } from '@angular/core';
2
+ import { extend, injectBeforeRender, injectNgtRef, signalStore } from 'angular-three';
3
+ import * as THREE from 'three';
4
+ import { Group } from 'three';
5
+ import * as i0 from "@angular/core";
6
+ const boundingBox = new THREE.Box3();
7
+ const boundingBoxSize = new THREE.Vector3();
8
+ extend({ Group });
9
+ export class NgtsBBAnchor {
10
+ set _anchor(anchor) {
11
+ this.inputs.set({ anchor });
12
+ }
13
+ constructor() {
14
+ this.inputs = signalStore();
15
+ this.groupRef = injectNgtRef();
16
+ this.parentRef = injectNgtRef();
17
+ this.anchor = this.inputs.select('anchor');
18
+ this.xyz = computed(() => {
19
+ const anchor = this.anchor();
20
+ return Array.isArray(anchor) ? anchor : [anchor.x, anchor.y, anchor.z];
21
+ });
22
+ this.reattachParent();
23
+ this.beforeRender();
24
+ }
25
+ reattachParent() {
26
+ effect(() => {
27
+ const group = this.groupRef.nativeElement;
28
+ if (!group)
29
+ return;
30
+ if (group.parent?.parent) {
31
+ this.parentRef.nativeElement = group.parent.parent;
32
+ group.parent.parent.add(group);
33
+ }
34
+ });
35
+ }
36
+ beforeRender() {
37
+ injectBeforeRender(() => {
38
+ const [parent, group, [x, y, z]] = [this.parentRef.nativeElement, this.groupRef.nativeElement, this.xyz()];
39
+ if (parent) {
40
+ boundingBox.setFromObject(parent);
41
+ boundingBox.getSize(boundingBoxSize);
42
+ group.position.set(parent.position.x + (boundingBoxSize.x * x) / 2, parent.position.y + (boundingBoxSize.y * y) / 2, parent.position.z + (boundingBoxSize.z * z) / 2);
43
+ }
44
+ });
45
+ }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsBBAnchor, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsBBAnchor, isStandalone: true, selector: "ngts-bb-anchor", inputs: { _anchor: ["anchor", "_anchor"] }, ngImport: i0, template: `
48
+ <ngt-group ngtCompound [ref]="groupRef">
49
+ <ng-content />
50
+ </ngt-group>
51
+ `, isInline: true }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsBBAnchor, decorators: [{
54
+ type: Component,
55
+ args: [{
56
+ selector: 'ngts-bb-anchor',
57
+ standalone: true,
58
+ template: `
59
+ <ngt-group ngtCompound [ref]="groupRef">
60
+ <ng-content />
61
+ </ngt-group>
62
+ `,
63
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
64
+ }]
65
+ }], ctorParameters: function () { return []; }, propDecorators: { _anchor: [{
66
+ type: Input,
67
+ args: [{ required: true, alias: 'anchor' }]
68
+ }] } });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmItYW5jaG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2JiLWFuY2hvci9iYi1hbmNob3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRTlCLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3JDLE1BQU0sZUFBZSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBZTVDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFZbEIsTUFBTSxPQUFPLFlBQVk7SUFHeEIsSUFBZ0QsT0FBTyxDQUFDLE1BQW1DO1FBQzFGLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBVUQ7UUFkUSxXQUFNLEdBQUcsV0FBVyxFQUFxQixDQUFDO1FBTWxELGFBQVEsR0FBRyxZQUFZLEVBQVMsQ0FBQztRQUN6QixjQUFTLEdBQUcsWUFBWSxFQUF5QixDQUFDO1FBQ2xELFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxRQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUdGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLGNBQWM7UUFDckIsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzFDLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU87WUFDbkIsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtnQkFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ25ELEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMvQjtRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVk7UUFDbkIsa0JBQWtCLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFM0csSUFBSSxNQUFNLEVBQUU7Z0JBQ1gsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFFckMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ2pCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9DLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9DLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQy9DLENBQUM7YUFDRjtRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E5Q1csWUFBWTtrR0FBWixZQUFZLHNIQVBkOzs7O0VBSVQ7OzJGQUdXLFlBQVk7a0JBVnhCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFJZ0QsT0FBTztzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3ROZ3RSZWYsIHNpZ25hbFN0b3JlLCB0eXBlIE5ndEdyb3VwIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJ3RocmVlJztcblxuY29uc3QgYm91bmRpbmdCb3ggPSBuZXcgVEhSRUUuQm94MygpO1xuY29uc3QgYm91bmRpbmdCb3hTaXplID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuZXhwb3J0IHR5cGUgTmd0c0JCQW5jaG9yU3RhdGUgPSB7XG5cdGFuY2hvcjogVEhSRUUuVmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogQGV4dGVuZHMgbmd0LWdyb3VwXG5cdFx0ICovXG5cdFx0J25ndHMtYmItYW5jaG9yJzogTmd0c0JCQW5jaG9yU3RhdGUgJiBOZ3RHcm91cDtcblx0fVxufVxuXG5leHRlbmQoeyBHcm91cCB9KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1iYi1hbmNob3InLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQgW3JlZl09XCJncm91cFJlZlwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQkJBbmNob3Ige1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNCQkFuY2hvclN0YXRlPigpO1xuXG5cdEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2FuY2hvcicgfSkgc2V0IF9hbmNob3IoYW5jaG9yOiBOZ3RzQkJBbmNob3JTdGF0ZVsnYW5jaG9yJ10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBhbmNob3IgfSk7XG5cdH1cblxuXHRncm91cFJlZiA9IGluamVjdE5ndFJlZjxHcm91cD4oKTtcblx0cHJpdmF0ZSBwYXJlbnRSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuT2JqZWN0M0QgfCBudWxsPigpO1xuXHRwcml2YXRlIGFuY2hvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYW5jaG9yJyk7XG5cdHByaXZhdGUgeHl6ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGFuY2hvciA9IHRoaXMuYW5jaG9yKCk7XG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYW5jaG9yKSA/IGFuY2hvciA6IFthbmNob3IueCwgYW5jaG9yLnksIGFuY2hvci56XTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5yZWF0dGFjaFBhcmVudCgpO1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdH1cblxuXHRwcml2YXRlIHJlYXR0YWNoUGFyZW50KCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghZ3JvdXApIHJldHVybjtcblx0XHRcdGlmIChncm91cC5wYXJlbnQ/LnBhcmVudCkge1xuXHRcdFx0XHR0aGlzLnBhcmVudFJlZi5uYXRpdmVFbGVtZW50ID0gZ3JvdXAucGFyZW50LnBhcmVudDtcblx0XHRcdFx0Z3JvdXAucGFyZW50LnBhcmVudC5hZGQoZ3JvdXApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFtwYXJlbnQsIGdyb3VwLCBbeCwgeSwgel1dID0gW3RoaXMucGFyZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZ3JvdXBSZWYubmF0aXZlRWxlbWVudCwgdGhpcy54eXooKV07XG5cblx0XHRcdGlmIChwYXJlbnQpIHtcblx0XHRcdFx0Ym91bmRpbmdCb3guc2V0RnJvbU9iamVjdChwYXJlbnQpO1xuXHRcdFx0XHRib3VuZGluZ0JveC5nZXRTaXplKGJvdW5kaW5nQm94U2l6ZSk7XG5cblx0XHRcdFx0Z3JvdXAucG9zaXRpb24uc2V0KFxuXHRcdFx0XHRcdHBhcmVudC5wb3NpdGlvbi54ICsgKGJvdW5kaW5nQm94U2l6ZS54ICogeCkgLyAyLFxuXHRcdFx0XHRcdHBhcmVudC5wb3NpdGlvbi55ICsgKGJvdW5kaW5nQm94U2l6ZS55ICogeSkgLyAyLFxuXHRcdFx0XHRcdHBhcmVudC5wb3NpdGlvbi56ICsgKGJvdW5kaW5nQm94U2l6ZS56ICogeikgLyAyLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=