angular-three 0.0.7 → 1.0.0-beta.0

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 (441) hide show
  1. package/esm2020/angular-three.mjs +1 -1
  2. package/esm2020/index.mjs +2 -35
  3. package/esm2020/lib/canvas.mjs +141 -128
  4. package/esm2020/lib/di/catalogue.mjs +7 -0
  5. package/esm2020/lib/directives/args.mjs +37 -17
  6. package/esm2020/lib/directives/repeat.mjs +5 -8
  7. package/esm2020/lib/events.mjs +341 -52
  8. package/esm2020/lib/loader.mjs +55 -0
  9. package/esm2020/lib/loop.mjs +137 -0
  10. package/esm2020/lib/renderer/di.mjs +3 -0
  11. package/esm2020/lib/renderer/enums.mjs +2 -0
  12. package/esm2020/lib/renderer/provider.mjs +19 -0
  13. package/esm2020/lib/renderer/renderer.mjs +293 -0
  14. package/esm2020/lib/renderer/state.mjs +350 -0
  15. package/esm2020/lib/renderer/utils.mjs +177 -0
  16. package/esm2020/lib/stores/rx-store.mjs +99 -0
  17. package/esm2020/lib/stores/store.mjs +190 -239
  18. package/esm2020/lib/types.mjs +1 -1
  19. package/esm2020/lib/utils/apply-props.mjs +37 -80
  20. package/esm2020/lib/utils/attach.mjs +29 -0
  21. package/esm2020/lib/utils/instance.mjs +43 -28
  22. package/esm2020/lib/utils/is.mjs +7 -11
  23. package/esm2020/lib/utils/make.mjs +30 -10
  24. package/esm2020/lib/utils/update.mjs +37 -0
  25. package/esm2020/lib/web/events.mjs +68 -0
  26. package/fesm2015/angular-three.mjs +2053 -2046
  27. package/fesm2015/angular-three.mjs.map +1 -1
  28. package/fesm2020/angular-three.mjs +2003 -1990
  29. package/fesm2020/angular-three.mjs.map +1 -1
  30. package/index.d.ts +1 -34
  31. package/lib/canvas.d.ts +29 -28
  32. package/lib/di/catalogue.d.ts +3 -0
  33. package/lib/directives/args.d.ts +8 -12
  34. package/lib/events.d.ts +7 -2
  35. package/lib/loader.d.ts +15 -0
  36. package/lib/{utils/loop.d.ts → loop.d.ts} +7 -6
  37. package/lib/renderer/di.d.ts +2 -0
  38. package/lib/renderer/enums.d.ts +25 -0
  39. package/lib/renderer/provider.d.ts +25 -0
  40. package/lib/renderer/renderer.d.ts +49 -0
  41. package/lib/renderer/state.d.ts +59 -0
  42. package/lib/renderer/utils.d.ts +20 -0
  43. package/lib/stores/rx-store.d.ts +17 -0
  44. package/lib/stores/store.d.ts +6 -23
  45. package/lib/types.d.ts +182 -191
  46. package/lib/utils/apply-props.d.ts +2 -6
  47. package/lib/utils/attach.d.ts +3 -0
  48. package/lib/utils/instance.d.ts +3 -3
  49. package/lib/utils/is.d.ts +6 -10
  50. package/lib/utils/make.d.ts +5 -2
  51. package/lib/utils/update.d.ts +4 -0
  52. package/lib/web/events.d.ts +4 -0
  53. package/package.json +30 -99
  54. package/attributes/README.md +0 -3
  55. package/attributes/index.d.ts +0 -22
  56. package/attributes/lib/buffer-attribute/buffer-attribute.d.ts +0 -8
  57. package/attributes/lib/color-attribute/color-attribute.d.ts +0 -8
  58. package/attributes/lib/common.d.ts +0 -1
  59. package/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.d.ts +0 -8
  60. package/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.d.ts +0 -8
  61. package/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.d.ts +0 -8
  62. package/attributes/lib/fog-attribute/fog-attribute.d.ts +0 -8
  63. package/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.d.ts +0 -8
  64. package/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.d.ts +0 -8
  65. package/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.d.ts +0 -8
  66. package/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.d.ts +0 -8
  67. package/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.d.ts +0 -8
  68. package/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.d.ts +0 -8
  69. package/attributes/lib/matrix3-attribute/matrix3-attribute.d.ts +0 -8
  70. package/attributes/lib/matrix4-attribute/matrix4-attribute.d.ts +0 -8
  71. package/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.d.ts +0 -8
  72. package/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.d.ts +0 -8
  73. package/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.d.ts +0 -8
  74. package/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.d.ts +0 -8
  75. package/attributes/lib/value-attribute/value-attribute.d.ts +0 -8
  76. package/attributes/lib/vector2-attribute/vector2-attribute.d.ts +0 -8
  77. package/attributes/lib/vector3-attribute/vector3-attribute.d.ts +0 -8
  78. package/attributes/lib/vector4-attribute/vector4-attribute.d.ts +0 -8
  79. package/audios/README.md +0 -3
  80. package/audios/index.d.ts +0 -3
  81. package/audios/lib/audio/audio.d.ts +0 -49
  82. package/audios/lib/audio-listener/audio-listener.d.ts +0 -35
  83. package/audios/lib/common.d.ts +0 -3
  84. package/audios/lib/positional-audio/positional-audio.d.ts +0 -49
  85. package/cameras/README.md +0 -3
  86. package/cameras/index.d.ts +0 -5
  87. package/cameras/lib/array-camera/array-camera.d.ts +0 -56
  88. package/cameras/lib/common.d.ts +0 -3
  89. package/cameras/lib/cube-camera/cube-camera.d.ts +0 -36
  90. package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +0 -54
  91. package/cameras/lib/perspective-camera/perspective-camera.d.ts +0 -55
  92. package/cameras/lib/stereo-camera/stereo-camera.d.ts +0 -42
  93. package/esm2020/attributes/angular-three-attributes.mjs +0 -5
  94. package/esm2020/attributes/index.mjs +0 -24
  95. package/esm2020/attributes/lib/buffer-attribute/buffer-attribute.mjs +0 -26
  96. package/esm2020/attributes/lib/color-attribute/color-attribute.mjs +0 -26
  97. package/esm2020/attributes/lib/common.mjs +0 -13
  98. package/esm2020/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.mjs +0 -26
  99. package/esm2020/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.mjs +0 -26
  100. package/esm2020/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.mjs +0 -26
  101. package/esm2020/attributes/lib/fog-attribute/fog-attribute.mjs +0 -26
  102. package/esm2020/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.mjs +0 -26
  103. package/esm2020/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.mjs +0 -26
  104. package/esm2020/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.mjs +0 -26
  105. package/esm2020/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.mjs +0 -26
  106. package/esm2020/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.mjs +0 -26
  107. package/esm2020/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.mjs +0 -30
  108. package/esm2020/attributes/lib/matrix3-attribute/matrix3-attribute.mjs +0 -26
  109. package/esm2020/attributes/lib/matrix4-attribute/matrix4-attribute.mjs +0 -26
  110. package/esm2020/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.mjs +0 -26
  111. package/esm2020/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.mjs +0 -26
  112. package/esm2020/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.mjs +0 -26
  113. package/esm2020/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.mjs +0 -26
  114. package/esm2020/attributes/lib/value-attribute/value-attribute.mjs +0 -28
  115. package/esm2020/attributes/lib/vector2-attribute/vector2-attribute.mjs +0 -26
  116. package/esm2020/attributes/lib/vector3-attribute/vector3-attribute.mjs +0 -26
  117. package/esm2020/attributes/lib/vector4-attribute/vector4-attribute.mjs +0 -26
  118. package/esm2020/audios/angular-three-audios.mjs +0 -5
  119. package/esm2020/audios/index.mjs +0 -5
  120. package/esm2020/audios/lib/audio/audio.mjs +0 -45
  121. package/esm2020/audios/lib/audio-listener/audio-listener.mjs +0 -38
  122. package/esm2020/audios/lib/common.mjs +0 -54
  123. package/esm2020/audios/lib/positional-audio/positional-audio.mjs +0 -45
  124. package/esm2020/cameras/angular-three-cameras.mjs +0 -5
  125. package/esm2020/cameras/index.mjs +0 -7
  126. package/esm2020/cameras/lib/array-camera/array-camera.mjs +0 -44
  127. package/esm2020/cameras/lib/common.mjs +0 -54
  128. package/esm2020/cameras/lib/cube-camera/cube-camera.mjs +0 -30
  129. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -42
  130. package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +0 -43
  131. package/esm2020/cameras/lib/stereo-camera/stereo-camera.mjs +0 -38
  132. package/esm2020/geometries/angular-three-geometries.mjs +0 -5
  133. package/esm2020/geometries/index.mjs +0 -25
  134. package/esm2020/geometries/lib/box-geometry/box-geometry.mjs +0 -26
  135. package/esm2020/geometries/lib/buffer-geometry/buffer-geometry.mjs +0 -26
  136. package/esm2020/geometries/lib/capsule-geometry/capsule-geometry.mjs +0 -26
  137. package/esm2020/geometries/lib/circle-geometry/circle-geometry.mjs +0 -26
  138. package/esm2020/geometries/lib/common.mjs +0 -13
  139. package/esm2020/geometries/lib/cone-geometry/cone-geometry.mjs +0 -26
  140. package/esm2020/geometries/lib/cylinder-geometry/cylinder-geometry.mjs +0 -26
  141. package/esm2020/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.mjs +0 -26
  142. package/esm2020/geometries/lib/edges-geometry/edges-geometry.mjs +0 -26
  143. package/esm2020/geometries/lib/extrude-geometry/extrude-geometry.mjs +0 -26
  144. package/esm2020/geometries/lib/icosahedron-geometry/icosahedron-geometry.mjs +0 -26
  145. package/esm2020/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.mjs +0 -26
  146. package/esm2020/geometries/lib/lathe-geometry/lathe-geometry.mjs +0 -26
  147. package/esm2020/geometries/lib/octahedron-geometry/octahedron-geometry.mjs +0 -26
  148. package/esm2020/geometries/lib/plane-geometry/plane-geometry.mjs +0 -26
  149. package/esm2020/geometries/lib/polyhedron-geometry/polyhedron-geometry.mjs +0 -26
  150. package/esm2020/geometries/lib/ring-geometry/ring-geometry.mjs +0 -26
  151. package/esm2020/geometries/lib/shape-geometry/shape-geometry.mjs +0 -26
  152. package/esm2020/geometries/lib/sphere-geometry/sphere-geometry.mjs +0 -26
  153. package/esm2020/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.mjs +0 -26
  154. package/esm2020/geometries/lib/torus-geometry/torus-geometry.mjs +0 -26
  155. package/esm2020/geometries/lib/torus-knot-geometry/torus-knot-geometry.mjs +0 -26
  156. package/esm2020/geometries/lib/tube-geometry/tube-geometry.mjs +0 -26
  157. package/esm2020/geometries/lib/wireframe-geometry/wireframe-geometry.mjs +0 -26
  158. package/esm2020/helpers/angular-three-helpers.mjs +0 -5
  159. package/esm2020/helpers/index.mjs +0 -15
  160. package/esm2020/helpers/lib/arrow-helper/arrow-helper.mjs +0 -26
  161. package/esm2020/helpers/lib/axes-helper/axes-helper.mjs +0 -26
  162. package/esm2020/helpers/lib/box-helper/box-helper.mjs +0 -36
  163. package/esm2020/helpers/lib/box3-helper/box3-helper.mjs +0 -36
  164. package/esm2020/helpers/lib/camera-helper/camera-helper.mjs +0 -36
  165. package/esm2020/helpers/lib/common.mjs +0 -13
  166. package/esm2020/helpers/lib/directional-light-helper/directional-light-helper.mjs +0 -36
  167. package/esm2020/helpers/lib/grid-helper/grid-helper.mjs +0 -26
  168. package/esm2020/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.mjs +0 -36
  169. package/esm2020/helpers/lib/plane-helper/plane-helper.mjs +0 -36
  170. package/esm2020/helpers/lib/point-light-helper/point-light-helper.mjs +0 -36
  171. package/esm2020/helpers/lib/polar-grid-helper/polar-grid-helper.mjs +0 -26
  172. package/esm2020/helpers/lib/skeleton-helper/skeleton-helper.mjs +0 -36
  173. package/esm2020/helpers/lib/spot-light-helper/spot-light-helper.mjs +0 -36
  174. package/esm2020/lib/di/resize.mjs +0 -19
  175. package/esm2020/lib/di/window.mjs +0 -13
  176. package/esm2020/lib/directives/cursor.mjs +0 -35
  177. package/esm2020/lib/instance.mjs +0 -368
  178. package/esm2020/lib/pipes/math.mjs +0 -15
  179. package/esm2020/lib/pipes/pi.mjs +0 -14
  180. package/esm2020/lib/pipes/radian.mjs +0 -14
  181. package/esm2020/lib/pipes/side.mjs +0 -22
  182. package/esm2020/lib/ref.mjs +0 -15
  183. package/esm2020/lib/services/loader.mjs +0 -45
  184. package/esm2020/lib/services/resize.mjs +0 -127
  185. package/esm2020/lib/stores/component-store.mjs +0 -137
  186. package/esm2020/lib/utils/build-graph.mjs +0 -15
  187. package/esm2020/lib/utils/camera.mjs +0 -28
  188. package/esm2020/lib/utils/capitalize.mjs +0 -4
  189. package/esm2020/lib/utils/check-update.mjs +0 -22
  190. package/esm2020/lib/utils/events.mjs +0 -353
  191. package/esm2020/lib/utils/get-instance-local-state.mjs +0 -6
  192. package/esm2020/lib/utils/inject.mjs +0 -18
  193. package/esm2020/lib/utils/loop.mjs +0 -139
  194. package/esm2020/lib/utils/mutate.mjs +0 -24
  195. package/esm2020/lib/utils/proxy.mjs +0 -99
  196. package/esm2020/lib/utils/renderer.mjs +0 -15
  197. package/esm2020/lights/angular-three-lights.mjs +0 -5
  198. package/esm2020/lights/index.mjs +0 -11
  199. package/esm2020/lights/lib/ambient-light/ambient-light.mjs +0 -30
  200. package/esm2020/lights/lib/ambient-light-probe/ambient-light-probe.mjs +0 -30
  201. package/esm2020/lights/lib/common.mjs +0 -54
  202. package/esm2020/lights/lib/directional-light/directional-light.mjs +0 -30
  203. package/esm2020/lights/lib/hemisphere-light/hemisphere-light.mjs +0 -30
  204. package/esm2020/lights/lib/hemisphere-light-probe/hemisphere-light-probe.mjs +0 -30
  205. package/esm2020/lights/lib/light-probe/light-probe.mjs +0 -30
  206. package/esm2020/lights/lib/point-light/point-light.mjs +0 -30
  207. package/esm2020/lights/lib/rect-area-light/rect-area-light.mjs +0 -30
  208. package/esm2020/lights/lib/spot-light/spot-light.mjs +0 -42
  209. package/esm2020/materials/angular-three-materials.mjs +0 -5
  210. package/esm2020/materials/index.mjs +0 -19
  211. package/esm2020/materials/lib/common.mjs +0 -13
  212. package/esm2020/materials/lib/line-basic-material/line-basic-material.mjs +0 -77
  213. package/esm2020/materials/lib/line-dashed-material/line-dashed-material.mjs +0 -80
  214. package/esm2020/materials/lib/mesh-basic-material/mesh-basic-material.mjs +0 -89
  215. package/esm2020/materials/lib/mesh-depth-material/mesh-depth-material.mjs +0 -80
  216. package/esm2020/materials/lib/mesh-distance-material/mesh-distance-material.mjs +0 -80
  217. package/esm2020/materials/lib/mesh-lambert-material/mesh-lambert-material.mjs +0 -100
  218. package/esm2020/materials/lib/mesh-matcap-material/mesh-matcap-material.mjs +0 -86
  219. package/esm2020/materials/lib/mesh-normal-material/mesh-normal-material.mjs +0 -83
  220. package/esm2020/materials/lib/mesh-phong-material/mesh-phong-material.mjs +0 -103
  221. package/esm2020/materials/lib/mesh-physical-material/mesh-physical-material.mjs +0 -119
  222. package/esm2020/materials/lib/mesh-standard-material/mesh-standard-material.mjs +0 -100
  223. package/esm2020/materials/lib/mesh-toon-material/mesh-toon-material.mjs +0 -96
  224. package/esm2020/materials/lib/points-material/points-material.mjs +0 -78
  225. package/esm2020/materials/lib/raw-shader-material/raw-shader-material.mjs +0 -83
  226. package/esm2020/materials/lib/shader-material/shader-material.mjs +0 -83
  227. package/esm2020/materials/lib/shadow-material/shadow-material.mjs +0 -74
  228. package/esm2020/materials/lib/sprite-material/sprite-material.mjs +0 -78
  229. package/esm2020/objects/angular-three-objects.mjs +0 -5
  230. package/esm2020/objects/index.mjs +0 -14
  231. package/esm2020/objects/lib/bone/bone.mjs +0 -27
  232. package/esm2020/objects/lib/common.mjs +0 -54
  233. package/esm2020/objects/lib/group/group.mjs +0 -27
  234. package/esm2020/objects/lib/instanced-mesh/instanced-mesh.mjs +0 -40
  235. package/esm2020/objects/lib/line/line.mjs +0 -30
  236. package/esm2020/objects/lib/line-loop/line-loop.mjs +0 -30
  237. package/esm2020/objects/lib/line-segments/line-segments.mjs +0 -30
  238. package/esm2020/objects/lib/lod/lod.mjs +0 -30
  239. package/esm2020/objects/lib/mesh/mesh.mjs +0 -30
  240. package/esm2020/objects/lib/points/points.mjs +0 -30
  241. package/esm2020/objects/lib/skeleton/skeleton.mjs +0 -41
  242. package/esm2020/objects/lib/skinned-mesh/skinned-mesh.mjs +0 -39
  243. package/esm2020/objects/lib/sprite/sprite.mjs +0 -30
  244. package/esm2020/primitives/angular-three-primitives.mjs +0 -5
  245. package/esm2020/primitives/index.mjs +0 -3
  246. package/esm2020/primitives/lib/common.mjs +0 -54
  247. package/esm2020/primitives/lib/object-primitive/object-primitive.mjs +0 -27
  248. package/esm2020/primitives/lib/primitive/primitive.mjs +0 -38
  249. package/esm2020/stats/angular-three-stats.mjs +0 -5
  250. package/esm2020/stats/index.mjs +0 -2
  251. package/esm2020/stats/lib/stats/stats.mjs +0 -54
  252. package/esm2020/textures/angular-three-textures.mjs +0 -5
  253. package/esm2020/textures/index.mjs +0 -12
  254. package/esm2020/textures/lib/canvas-texture/canvas-texture.mjs +0 -26
  255. package/esm2020/textures/lib/common.mjs +0 -13
  256. package/esm2020/textures/lib/compressed-array-texture/compressed-array-texture.mjs +0 -26
  257. package/esm2020/textures/lib/compressed-texture/compressed-texture.mjs +0 -26
  258. package/esm2020/textures/lib/cube-texture/cube-texture.mjs +0 -26
  259. package/esm2020/textures/lib/data-array-texture/data-array-texture.mjs +0 -26
  260. package/esm2020/textures/lib/data-texture/data-texture.mjs +0 -26
  261. package/esm2020/textures/lib/data3-dtexture/data3-dtexture.mjs +0 -26
  262. package/esm2020/textures/lib/depth-texture/depth-texture.mjs +0 -26
  263. package/esm2020/textures/lib/framebuffer-texture/framebuffer-texture.mjs +0 -26
  264. package/esm2020/textures/lib/video-texture/video-texture.mjs +0 -26
  265. package/fesm2015/angular-three-attributes.mjs +0 -475
  266. package/fesm2015/angular-three-attributes.mjs.map +0 -1
  267. package/fesm2015/angular-three-audios.mjs +0 -179
  268. package/fesm2015/angular-three-audios.mjs.map +0 -1
  269. package/fesm2015/angular-three-cameras.mjs +0 -236
  270. package/fesm2015/angular-three-cameras.mjs.map +0 -1
  271. package/fesm2015/angular-three-geometries.mjs +0 -488
  272. package/fesm2015/angular-three-geometries.mjs.map +0 -1
  273. package/fesm2015/angular-three-helpers.mjs +0 -378
  274. package/fesm2015/angular-three-helpers.mjs.map +0 -1
  275. package/fesm2015/angular-three-lights.mjs +0 -297
  276. package/fesm2015/angular-three-lights.mjs.map +0 -1
  277. package/fesm2015/angular-three-materials.mjs +0 -1415
  278. package/fesm2015/angular-three-materials.mjs.map +0 -1
  279. package/fesm2015/angular-three-objects.mjs +0 -381
  280. package/fesm2015/angular-three-objects.mjs.map +0 -1
  281. package/fesm2015/angular-three-primitives.mjs +0 -120
  282. package/fesm2015/angular-three-primitives.mjs.map +0 -1
  283. package/fesm2015/angular-three-stats.mjs +0 -62
  284. package/fesm2015/angular-three-stats.mjs.map +0 -1
  285. package/fesm2015/angular-three-textures.mjs +0 -228
  286. package/fesm2015/angular-three-textures.mjs.map +0 -1
  287. package/fesm2020/angular-three-attributes.mjs +0 -475
  288. package/fesm2020/angular-three-attributes.mjs.map +0 -1
  289. package/fesm2020/angular-three-audios.mjs +0 -179
  290. package/fesm2020/angular-three-audios.mjs.map +0 -1
  291. package/fesm2020/angular-three-cameras.mjs +0 -236
  292. package/fesm2020/angular-three-cameras.mjs.map +0 -1
  293. package/fesm2020/angular-three-geometries.mjs +0 -488
  294. package/fesm2020/angular-three-geometries.mjs.map +0 -1
  295. package/fesm2020/angular-three-helpers.mjs +0 -378
  296. package/fesm2020/angular-three-helpers.mjs.map +0 -1
  297. package/fesm2020/angular-three-lights.mjs +0 -297
  298. package/fesm2020/angular-three-lights.mjs.map +0 -1
  299. package/fesm2020/angular-three-materials.mjs +0 -1415
  300. package/fesm2020/angular-three-materials.mjs.map +0 -1
  301. package/fesm2020/angular-three-objects.mjs +0 -381
  302. package/fesm2020/angular-three-objects.mjs.map +0 -1
  303. package/fesm2020/angular-three-primitives.mjs +0 -120
  304. package/fesm2020/angular-three-primitives.mjs.map +0 -1
  305. package/fesm2020/angular-three-stats.mjs +0 -62
  306. package/fesm2020/angular-three-stats.mjs.map +0 -1
  307. package/fesm2020/angular-three-textures.mjs +0 -228
  308. package/fesm2020/angular-three-textures.mjs.map +0 -1
  309. package/geometries/README.md +0 -3
  310. package/geometries/index.d.ts +0 -23
  311. package/geometries/lib/box-geometry/box-geometry.d.ts +0 -8
  312. package/geometries/lib/buffer-geometry/buffer-geometry.d.ts +0 -8
  313. package/geometries/lib/capsule-geometry/capsule-geometry.d.ts +0 -8
  314. package/geometries/lib/circle-geometry/circle-geometry.d.ts +0 -8
  315. package/geometries/lib/common.d.ts +0 -1
  316. package/geometries/lib/cone-geometry/cone-geometry.d.ts +0 -8
  317. package/geometries/lib/cylinder-geometry/cylinder-geometry.d.ts +0 -8
  318. package/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.d.ts +0 -8
  319. package/geometries/lib/edges-geometry/edges-geometry.d.ts +0 -8
  320. package/geometries/lib/extrude-geometry/extrude-geometry.d.ts +0 -8
  321. package/geometries/lib/icosahedron-geometry/icosahedron-geometry.d.ts +0 -8
  322. package/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.d.ts +0 -8
  323. package/geometries/lib/lathe-geometry/lathe-geometry.d.ts +0 -8
  324. package/geometries/lib/octahedron-geometry/octahedron-geometry.d.ts +0 -8
  325. package/geometries/lib/plane-geometry/plane-geometry.d.ts +0 -8
  326. package/geometries/lib/polyhedron-geometry/polyhedron-geometry.d.ts +0 -8
  327. package/geometries/lib/ring-geometry/ring-geometry.d.ts +0 -8
  328. package/geometries/lib/shape-geometry/shape-geometry.d.ts +0 -8
  329. package/geometries/lib/sphere-geometry/sphere-geometry.d.ts +0 -8
  330. package/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.d.ts +0 -8
  331. package/geometries/lib/torus-geometry/torus-geometry.d.ts +0 -8
  332. package/geometries/lib/torus-knot-geometry/torus-knot-geometry.d.ts +0 -8
  333. package/geometries/lib/tube-geometry/tube-geometry.d.ts +0 -8
  334. package/geometries/lib/wireframe-geometry/wireframe-geometry.d.ts +0 -8
  335. package/helpers/README.md +0 -3
  336. package/helpers/index.d.ts +0 -13
  337. package/helpers/lib/arrow-helper/arrow-helper.d.ts +0 -8
  338. package/helpers/lib/axes-helper/axes-helper.d.ts +0 -8
  339. package/helpers/lib/box-helper/box-helper.d.ts +0 -8
  340. package/helpers/lib/box3-helper/box3-helper.d.ts +0 -8
  341. package/helpers/lib/camera-helper/camera-helper.d.ts +0 -8
  342. package/helpers/lib/common.d.ts +0 -1
  343. package/helpers/lib/directional-light-helper/directional-light-helper.d.ts +0 -8
  344. package/helpers/lib/grid-helper/grid-helper.d.ts +0 -8
  345. package/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.d.ts +0 -8
  346. package/helpers/lib/plane-helper/plane-helper.d.ts +0 -8
  347. package/helpers/lib/point-light-helper/point-light-helper.d.ts +0 -8
  348. package/helpers/lib/polar-grid-helper/polar-grid-helper.d.ts +0 -8
  349. package/helpers/lib/skeleton-helper/skeleton-helper.d.ts +0 -8
  350. package/helpers/lib/spot-light-helper/spot-light-helper.d.ts +0 -8
  351. package/lib/di/resize.d.ts +0 -12
  352. package/lib/di/window.d.ts +0 -1
  353. package/lib/directives/cursor.d.ts +0 -7
  354. package/lib/instance.d.ts +0 -81
  355. package/lib/pipes/math.d.ts +0 -7
  356. package/lib/pipes/pi.d.ts +0 -7
  357. package/lib/pipes/radian.d.ts +0 -7
  358. package/lib/pipes/side.d.ts +0 -8
  359. package/lib/ref.d.ts +0 -5
  360. package/lib/services/loader.d.ts +0 -11
  361. package/lib/services/resize.d.ts +0 -19
  362. package/lib/stores/component-store.d.ts +0 -69
  363. package/lib/utils/build-graph.d.ts +0 -3
  364. package/lib/utils/camera.d.ts +0 -4
  365. package/lib/utils/capitalize.d.ts +0 -1
  366. package/lib/utils/check-update.d.ts +0 -2
  367. package/lib/utils/events.d.ts +0 -6
  368. package/lib/utils/get-instance-local-state.d.ts +0 -2
  369. package/lib/utils/inject.d.ts +0 -9
  370. package/lib/utils/mutate.d.ts +0 -2
  371. package/lib/utils/proxy.d.ts +0 -7
  372. package/lib/utils/renderer.d.ts +0 -3
  373. package/lights/README.md +0 -3
  374. package/lights/index.d.ts +0 -9
  375. package/lights/lib/ambient-light/ambient-light.d.ts +0 -39
  376. package/lights/lib/ambient-light-probe/ambient-light-probe.d.ts +0 -40
  377. package/lights/lib/common.d.ts +0 -3
  378. package/lights/lib/directional-light/directional-light.d.ts +0 -40
  379. package/lights/lib/hemisphere-light/hemisphere-light.d.ts +0 -41
  380. package/lights/lib/hemisphere-light-probe/hemisphere-light-probe.d.ts +0 -42
  381. package/lights/lib/light-probe/light-probe.d.ts +0 -40
  382. package/lights/lib/point-light/point-light.d.ts +0 -42
  383. package/lights/lib/rect-area-light/rect-area-light.d.ts +0 -42
  384. package/lights/lib/spot-light/spot-light.d.ts +0 -45
  385. package/materials/README.md +0 -3
  386. package/materials/index.d.ts +0 -17
  387. package/materials/lib/common.d.ts +0 -1
  388. package/materials/lib/line-basic-material/line-basic-material.d.ts +0 -55
  389. package/materials/lib/line-dashed-material/line-dashed-material.d.ts +0 -58
  390. package/materials/lib/mesh-basic-material/mesh-basic-material.d.ts +0 -67
  391. package/materials/lib/mesh-depth-material/mesh-depth-material.d.ts +0 -58
  392. package/materials/lib/mesh-distance-material/mesh-distance-material.d.ts +0 -58
  393. package/materials/lib/mesh-lambert-material/mesh-lambert-material.d.ts +0 -78
  394. package/materials/lib/mesh-matcap-material/mesh-matcap-material.d.ts +0 -64
  395. package/materials/lib/mesh-normal-material/mesh-normal-material.d.ts +0 -61
  396. package/materials/lib/mesh-phong-material/mesh-phong-material.d.ts +0 -81
  397. package/materials/lib/mesh-physical-material/mesh-physical-material.d.ts +0 -97
  398. package/materials/lib/mesh-standard-material/mesh-standard-material.d.ts +0 -78
  399. package/materials/lib/mesh-toon-material/mesh-toon-material.d.ts +0 -74
  400. package/materials/lib/points-material/points-material.d.ts +0 -56
  401. package/materials/lib/raw-shader-material/raw-shader-material.d.ts +0 -68
  402. package/materials/lib/shader-material/shader-material.d.ts +0 -68
  403. package/materials/lib/shadow-material/shadow-material.d.ts +0 -52
  404. package/materials/lib/sprite-material/sprite-material.d.ts +0 -56
  405. package/objects/README.md +0 -3
  406. package/objects/index.d.ts +0 -12
  407. package/objects/lib/bone/bone.d.ts +0 -35
  408. package/objects/lib/common.d.ts +0 -3
  409. package/objects/lib/group/group.d.ts +0 -35
  410. package/objects/lib/instanced-mesh/instanced-mesh.d.ts +0 -44
  411. package/objects/lib/line/line.d.ts +0 -41
  412. package/objects/lib/line-loop/line-loop.d.ts +0 -41
  413. package/objects/lib/line-segments/line-segments.d.ts +0 -41
  414. package/objects/lib/lod/lod.d.ts +0 -40
  415. package/objects/lib/mesh/mesh.d.ts +0 -41
  416. package/objects/lib/points/points.d.ts +0 -41
  417. package/objects/lib/skeleton/skeleton.d.ts +0 -16
  418. package/objects/lib/skinned-mesh/skinned-mesh.d.ts +0 -45
  419. package/objects/lib/sprite/sprite.d.ts +0 -38
  420. package/primitives/README.md +0 -3
  421. package/primitives/index.d.ts +0 -2
  422. package/primitives/lib/common.d.ts +0 -3
  423. package/primitives/lib/object-primitive/object-primitive.d.ts +0 -35
  424. package/primitives/lib/primitive/primitive.d.ts +0 -10
  425. package/schematics/README.md +0 -11
  426. package/stats/README.md +0 -3
  427. package/stats/index.d.ts +0 -1
  428. package/stats/lib/stats/stats.d.ts +0 -16
  429. package/textures/README.md +0 -3
  430. package/textures/index.d.ts +0 -10
  431. package/textures/lib/canvas-texture/canvas-texture.d.ts +0 -8
  432. package/textures/lib/common.d.ts +0 -1
  433. package/textures/lib/compressed-array-texture/compressed-array-texture.d.ts +0 -8
  434. package/textures/lib/compressed-texture/compressed-texture.d.ts +0 -8
  435. package/textures/lib/cube-texture/cube-texture.d.ts +0 -8
  436. package/textures/lib/data-array-texture/data-array-texture.d.ts +0 -8
  437. package/textures/lib/data-texture/data-texture.d.ts +0 -8
  438. package/textures/lib/data3-dtexture/data3-dtexture.d.ts +0 -8
  439. package/textures/lib/depth-texture/depth-texture.d.ts +0 -8
  440. package/textures/lib/framebuffer-texture/framebuffer-texture.d.ts +0 -8
  441. package/textures/lib/video-texture/video-texture.d.ts +0 -8
@@ -2,4 +2,4 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItdGhyZWUvc3JjL2FuZ3VsYXItdGhyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS9zcmMvYW5ndWxhci10aHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
package/esm2020/index.mjs CHANGED
@@ -1,39 +1,6 @@
1
- /**
2
- * main exports
3
- */
4
1
  export * from './lib/canvas';
5
2
  export * from './lib/types';
6
- export * from './lib/instance';
7
- /**
8
- * services
9
- */
10
- export * from './lib/services/loader';
11
- export * from './lib/services/resize';
12
- /**
13
- * stores
14
- */
15
- export * from './lib/stores/store';
16
- export * from './lib/stores/component-store';
17
- /**
18
- * directives
19
- */
3
+ export * from './lib/di/catalogue';
20
4
  export * from './lib/directives/args';
21
- export * from './lib/directives/cursor';
22
5
  export * from './lib/directives/repeat';
23
- /**
24
- * pipes
25
- */
26
- export * from './lib/pipes/pi';
27
- export * from './lib/pipes/math';
28
- export * from './lib/pipes/radian';
29
- export * from './lib/pipes/side';
30
- /**
31
- * utilities
32
- */
33
- export * from './lib/utils/proxy';
34
- export * from './lib/utils/loop';
35
- /**
36
- * resize
37
- */
38
- export * from './lib/di/resize';
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRocmVlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0I7O0dBRUc7QUFDSCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEM7O0dBRUc7QUFDSCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsOEJBQThCLENBQUM7QUFDN0M7O0dBRUc7QUFDSCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4Qzs7R0FFRztBQUNILGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakM7O0dBRUc7QUFDSCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakM7O0dBRUc7QUFDSCxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBtYWluIGV4cG9ydHNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FudmFzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2luc3RhbmNlJztcbi8qKlxuICogc2VydmljZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbG9hZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3Jlc2l6ZSc7XG4vKipcbiAqIHN0b3Jlc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yZXMvc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmVzL2NvbXBvbmVudC1zdG9yZSc7XG4vKipcbiAqIGRpcmVjdGl2ZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9hcmdzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvY3Vyc29yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcmVwZWF0Jztcbi8qKlxuICogcGlwZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvbWF0aCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9yYWRpYW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvc2lkZSc7XG4vKipcbiAqIHV0aWxpdGllc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9wcm94eSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9sb29wJztcbi8qKlxuICogcmVzaXplXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpL3Jlc2l6ZSc7XG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2FudmFzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpL2NhdGFsb2d1ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2FyZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yZXBlYXQnO1xuIl19
@@ -1,192 +1,205 @@
1
- import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, HostBinding, inject, Input, NgZone, Output, TemplateRef, ViewChild, } from '@angular/core';
3
- import { createPointerEvents } from './events';
4
- import { provideInstanceRef } from './instance';
5
- import { NgtResize } from './services/resize';
6
- import { NgtComponentStore } from './stores/component-store';
1
+ import { ChangeDetectorRef, Component, createEnvironmentInjector, ElementRef, EnvironmentInjector, EventEmitter, HostBinding, inject, Input, Output, Type, ViewChild, ViewContainerRef, } from '@angular/core';
2
+ import { injectNgxResize, provideNgxResizeOptions } from 'ngx-resize';
3
+ import { filter } from 'rxjs';
4
+ import { provideNgtRenderer } from './renderer/provider';
5
+ import { NgtRxStore } from './stores/rx-store';
7
6
  import { NgtStore, rootStateMap } from './stores/store';
8
- import { NgtLoader } from './services/loader';
7
+ import { is } from './utils/is';
8
+ import { createPointerEvents } from './web/events';
9
+ import { injectNgtLoader } from './loader';
9
10
  import * as i0 from "@angular/core";
10
11
  export class NgtCanvasContainer {
11
12
  constructor() {
12
- this.resize = inject(NgtResize);
13
+ this.canvasResize = injectNgxResize();
13
14
  }
14
15
  }
15
- NgtCanvasContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtCanvasContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- NgtCanvasContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: NgtCanvasContainer, isStandalone: true, selector: "ngt-canvas-container", outputs: { resize: "resize" }, providers: [NgtResize], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block;height:100%;width:100%}\n"] });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtCanvasContainer, decorators: [{
16
+ NgtCanvasContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtCanvasContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ NgtCanvasContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: NgtCanvasContainer, isStandalone: true, selector: "ngt-canvas-container", outputs: { canvasResize: "canvasResize" }, providers: [provideNgxResizeOptions({ emitInZone: false })], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block;width:100%;height:100%}\n"] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtCanvasContainer, decorators: [{
18
19
  type: Component,
19
- args: [{ selector: 'ngt-canvas-container', standalone: true, template: '<ng-content></ng-content>', providers: [NgtResize], styles: [":host{display:block;height:100%;width:100%}\n"] }]
20
- }], propDecorators: { resize: [{
20
+ args: [{ selector: 'ngt-canvas-container', standalone: true, template: '<ng-content />', providers: [provideNgxResizeOptions({ emitInZone: false })], styles: [":host{display:block;width:100%;height:100%}\n"] }]
21
+ }], propDecorators: { canvasResize: [{
21
22
  type: Output
22
23
  }] } });
23
- export class NgtCanvas extends NgtComponentStore {
24
+ export class NgtCanvas extends NgtRxStore {
24
25
  constructor() {
25
26
  super(...arguments);
27
+ this.cdr = inject(ChangeDetectorRef);
28
+ this.envInjector = inject(EnvironmentInjector);
29
+ this.host = inject(ElementRef);
30
+ this.store = inject(NgtStore);
26
31
  this.hostClass = true;
32
+ this.compoundPrefixes = [];
27
33
  this.created = new EventEmitter();
28
- this.canvasPointerMissed = new EventEmitter();
29
- this.zone = inject(NgZone);
30
- this.loader = inject(NgtLoader);
31
- this.store = inject(NgtStore, { self: true });
32
- this.host = inject(ElementRef);
34
+ this.pointerMissed = new EventEmitter();
35
+ }
36
+ initialize() {
37
+ super.initialize();
38
+ this.set({
39
+ shadows: false,
40
+ linear: false,
41
+ flat: false,
42
+ legacy: false,
43
+ orthographic: false,
44
+ frameloop: 'always',
45
+ dpr: [1, 2],
46
+ events: createPointerEvents,
47
+ });
33
48
  }
34
49
  get pointerEvents() {
35
- return this.read((s) => s.eventSource) !== this.host.nativeElement ? 'none' : 'auto';
50
+ return this.get('eventSource') !== this.host.nativeElement ? 'none' : 'auto';
36
51
  }
37
52
  set linear(linear) {
38
- this.write({ linear });
53
+ this.set({ linear });
39
54
  }
40
55
  set legacy(legacy) {
41
- this.write({ legacy });
56
+ this.set({ legacy });
42
57
  }
43
58
  set flat(flat) {
44
- this.write({ flat });
59
+ this.set({ flat });
45
60
  }
46
61
  set orthographic(orthographic) {
47
- this.write({ orthographic });
62
+ this.set({ orthographic });
48
63
  }
49
64
  set frameloop(frameloop) {
50
- this.write({ frameloop });
65
+ this.set({ frameloop });
51
66
  }
52
67
  set dpr(dpr) {
53
- this.write({ dpr });
68
+ this.set({ dpr });
54
69
  }
55
70
  set raycaster(raycaster) {
56
- this.write({ raycaster });
71
+ this.set({ raycaster });
57
72
  }
58
73
  set shadows(shadows) {
59
- this.write({
74
+ this.set({
60
75
  shadows: typeof shadows === 'object' ? shadows : shadows,
61
76
  });
62
77
  }
63
78
  set camera(camera) {
64
- this.write({ camera });
79
+ this.set({ camera });
65
80
  }
66
81
  set gl(gl) {
67
- this.write({ gl });
82
+ this.set({ gl });
68
83
  }
69
84
  set eventSource(eventSource) {
70
- this.write({ eventSource });
85
+ this.set({ eventSource });
71
86
  }
72
87
  set eventPrefix(eventPrefix) {
73
- this.write({ eventPrefix });
88
+ this.set({ eventPrefix });
74
89
  }
75
90
  set lookAt(lookAt) {
76
- this.write({ lookAt });
91
+ this.set({ lookAt });
77
92
  }
78
93
  set performance(performance) {
79
- this.write({ performance });
80
- }
81
- get sceneRef() {
82
- return this.store.read((s) => s.sceneRef);
83
- }
84
- get isConfigured() {
85
- return this.store.isConfigured;
86
- }
87
- initialize() {
88
- super.initialize();
89
- this.write({
90
- shadows: false,
91
- linear: false,
92
- flat: false,
93
- legacy: false,
94
- orthographic: false,
95
- frameloop: 'always',
96
- dpr: [1, 2],
97
- events: createPointerEvents,
98
- });
94
+ this.set({ performance });
99
95
  }
100
96
  ngOnInit() {
101
- this.zone.runOutsideAngular(() => {
102
- if (!this.eventSource) {
103
- this.eventSource = this.host.nativeElement;
104
- }
105
- if (this.canvasPointerMissed.observed) {
106
- // update pointerMissed event
107
- this.store.write({
108
- onPointerMissed: (event) => {
109
- // go back into angular zone
110
- this.zone.run(() => {
111
- this.canvasPointerMissed.emit(event);
112
- });
113
- },
114
- });
115
- }
116
- // set rootStateMap
117
- rootStateMap.set(this.glCanvas.nativeElement, this.store.read);
118
- // setup canvas state
119
- this.store.init();
120
- this.store.onReady(() => {
121
- const state = this.store.read();
122
- const inputs = this.read();
123
- // canvas is ready
124
- this.store.write((s) => ({ internal: { ...s.internal, active: true } }));
125
- // Connect to eventsource
126
- state.events.connect?.(inputs.eventSource instanceof ElementRef ? inputs.eventSource.nativeElement : inputs.eventSource);
127
- // Set up compute function
128
- if (inputs.eventPrefix) {
129
- state.setEvents({
130
- compute: (event, stateGetter) => {
131
- const innerState = stateGetter();
132
- const x = event[(inputs.eventPrefix + 'X')];
133
- const y = event[(inputs.eventPrefix + 'Y')];
134
- innerState.pointer.set((x / innerState.size.width) * 2 - 1, -(y / innerState.size.height) * 2 + 1);
135
- innerState.raycaster.setFromCamera(innerState.pointer, innerState.camera);
136
- },
137
- });
138
- }
139
- if (this.created.observed) {
140
- this.zone.run(() => {
141
- requestAnimationFrame(() => {
142
- this.created.emit(this.store.read());
143
- });
144
- });
145
- }
97
+ if (!this.get('eventSource')) {
98
+ // set default event source to the host element
99
+ this.eventSource = this.host.nativeElement;
100
+ }
101
+ if (this.pointerMissed.observed) {
102
+ this.store.set({
103
+ onPointerMissed: (event) => {
104
+ this.pointerMissed.emit(event);
105
+ this.cdr.detectChanges();
106
+ },
146
107
  });
108
+ }
109
+ // setup NgtStore
110
+ this.store.init();
111
+ // set rootStateMap
112
+ rootStateMap.set(this.glCanvas.nativeElement, this.store);
113
+ // subscribe to store to listen for ready state
114
+ this.hold(this.store.select('ready').pipe(filter((ready) => ready)), () => {
115
+ this.storeReady();
147
116
  });
148
117
  }
149
- onResize(resizeResult) {
150
- this.zone.runOutsideAngular(() => {
151
- const { width, height } = resizeResult;
152
- if (width > 0 && height > 0) {
153
- if (!this.store.isInit) {
154
- this.store.init();
155
- }
156
- this.store.configure(this.read(), this.glCanvas.nativeElement);
157
- }
118
+ onResize({ width, height }) {
119
+ if (width > 0 && height > 0) {
120
+ if (!this.store.isInit)
121
+ this.store.init();
122
+ this.store.configure(this.get(), this.glCanvas.nativeElement);
123
+ }
124
+ }
125
+ storeReady() {
126
+ // canvas is ready, let's activate the loop
127
+ this.store.set((state) => ({ internal: { ...state.internal, active: true } }));
128
+ const inputs = this.get();
129
+ const state = this.store.get();
130
+ // connect to event source
131
+ state.events.connect?.(is.ref(inputs.eventSource) ? inputs.eventSource.nativeElement : inputs.eventSource);
132
+ // setup compute function for events
133
+ if (inputs.eventPrefix) {
134
+ state.setEvents({
135
+ compute: (event, store) => {
136
+ const innerState = store.get();
137
+ const x = event[(inputs.eventPrefix + 'X')];
138
+ const y = event[(inputs.eventPrefix + 'Y')];
139
+ innerState.pointer.set((x / innerState.size.width) * 2 - 1, -(y / innerState.size.height) * 2 + 1);
140
+ innerState.raycaster.setFromCamera(innerState.pointer, innerState.camera);
141
+ },
142
+ });
143
+ }
144
+ // emit created event if observed
145
+ if (this.created.observed) {
146
+ this.created.emit(this.store.get());
147
+ this.cdr.detectChanges();
148
+ }
149
+ // render
150
+ if (this.glRef) {
151
+ this.glRef.destroy();
152
+ }
153
+ requestAnimationFrame(() => {
154
+ this.glEnvInjector = createEnvironmentInjector([
155
+ provideNgtRenderer({
156
+ store: this.store,
157
+ changeDetectorRef: this.cdr,
158
+ compoundPrefixes: this.compoundPrefixes,
159
+ }),
160
+ ], this.envInjector);
161
+ this.glRef = this.glAnchor.createComponent(this.scene, { environmentInjector: this.glEnvInjector });
162
+ this.glRef.changeDetectorRef.detectChanges();
163
+ this.glRef.changeDetectorRef.detach();
164
+ this.cdr.detectChanges();
158
165
  });
159
166
  }
160
167
  ngOnDestroy() {
161
- this.loader.destroy();
168
+ if (this.glRef) {
169
+ this.glRef.destroy();
170
+ }
171
+ if (this.glEnvInjector) {
172
+ this.glEnvInjector.destroy();
173
+ }
174
+ injectNgtLoader.destroy();
162
175
  super.ngOnDestroy();
163
176
  }
164
177
  }
165
- NgtCanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtCanvas, deps: null, target: i0.ɵɵFactoryTarget.Component });
166
- NgtCanvas.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", canvasPointerMissed: "canvasPointerMissed" }, host: { properties: { "class.ngt-canvas": "this.hostClass", "style.pointerEvents": "this.pointerEvents" } }, providers: [NgtStore, provideInstanceRef(NgtCanvas, (canvas) => canvas.sceneRef)], queries: [{ propertyName: "canvasContent", first: true, predicate: TemplateRef, descendants: true, static: true }], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
167
- <ngt-canvas-container (resize)="onResize($event)">
168
- <canvas #glCanvas style="display: block">
169
- <ng-container *ngIf="isConfigured" [ngTemplateOutlet]="canvasContent"></ng-container>
170
- <ng-content></ng-content>
171
- </canvas>
178
+ NgtCanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtCanvas, deps: null, target: i0.ɵɵFactoryTarget.Component });
179
+ NgtCanvas.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { scene: "scene", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { properties: { "class.ngt-canvas": "this.hostClass", "style.pointerEvents": "this.pointerEvents" } }, providers: [NgtStore], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["glAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `
180
+ <ngt-canvas-container (canvasResize)="onResize($event)">
181
+ <canvas #glCanvas style="display: block;"></canvas>
182
+ <ng-container #glAnchor />
172
183
  </ngt-canvas-container>
173
- `, isInline: true, styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "component", type: NgtCanvasContainer, selector: "ngt-canvas-container", outputs: ["resize"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtCanvas, decorators: [{
184
+ `, isInline: true, styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "component", type: NgtCanvasContainer, selector: "ngt-canvas-container", outputs: ["canvasResize"] }] });
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtCanvas, decorators: [{
175
186
  type: Component,
176
187
  args: [{ selector: 'ngt-canvas', standalone: true, template: `
177
- <ngt-canvas-container (resize)="onResize($event)">
178
- <canvas #glCanvas style="display: block">
179
- <ng-container *ngIf="isConfigured" [ngTemplateOutlet]="canvasContent"></ng-container>
180
- <ng-content></ng-content>
181
- </canvas>
188
+ <ngt-canvas-container (canvasResize)="onResize($event)">
189
+ <canvas #glCanvas style="display: block;"></canvas>
190
+ <ng-container #glAnchor />
182
191
  </ngt-canvas-container>
183
- `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgtCanvasContainer, NgIf, NgTemplateOutlet, AsyncPipe], providers: [NgtStore, provideInstanceRef(NgtCanvas, (canvas) => canvas.sceneRef)], styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"] }]
192
+ `, imports: [NgtCanvasContainer], providers: [NgtStore], styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"] }]
184
193
  }], propDecorators: { hostClass: [{
185
194
  type: HostBinding,
186
195
  args: ['class.ngt-canvas']
187
196
  }], pointerEvents: [{
188
197
  type: HostBinding,
189
198
  args: ['style.pointerEvents']
199
+ }], scene: [{
200
+ type: Input
201
+ }], compoundPrefixes: [{
202
+ type: Input
190
203
  }], linear: [{
191
204
  type: Input
192
205
  }], legacy: [{
@@ -217,13 +230,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
217
230
  type: Input
218
231
  }], created: [{
219
232
  type: Output
220
- }], canvasPointerMissed: [{
233
+ }], pointerMissed: [{
221
234
  type: Output
222
235
  }], glCanvas: [{
223
236
  type: ViewChild,
224
237
  args: ['glCanvas', { static: true }]
225
- }], canvasContent: [{
226
- type: ContentChild,
227
- args: [TemplateRef, { static: true }]
238
+ }], glAnchor: [{
239
+ type: ViewChild,
240
+ args: ['glAnchor', { static: true, read: ViewContainerRef }]
228
241
  }] } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci10aHJlZS9zcmMvbGliL2NhbnZhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBaUI5QyxNQUFNLE9BQU8sa0JBQWtCO0lBZi9CO1FBZ0JjLFdBQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFnQyxDQUFDO0tBQ3ZFOzsrR0FGWSxrQkFBa0I7bUdBQWxCLGtCQUFrQixrR0FYaEIsQ0FBQyxTQUFTLENBQUMsMEJBRFosMkJBQTJCOzJGQVk1QixrQkFBa0I7a0JBZjlCLFNBQVM7K0JBQ0ksc0JBQXNCLGNBQ3BCLElBQUksWUFDTiwyQkFBMkIsYUFDMUIsQ0FBQyxTQUFTLENBQUM7OEJBWVosTUFBTTtzQkFBZixNQUFNOztBQTZCWCxNQUFNLE9BQU8sU0FBVSxT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T0FBTztzQkFBbkIsS0FBSztnQkFNTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLEVBQUU7c0JBQWQsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUdQLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl2QyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgY3JlYXRlUG9pbnRlckV2ZW50cyB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IHByb3ZpZGVJbnN0YW5jZVJlZiB9IGZyb20gJy4vaW5zdGFuY2UnO1xuaW1wb3J0IHsgTmd0UmVzaXplLCBOZ3RSZXNpemVSZXN1bHQgfSBmcm9tICcuL3NlcnZpY2VzL3Jlc2l6ZSc7XG5pbXBvcnQgeyBOZ3RDb21wb25lbnRTdG9yZSB9IGZyb20gJy4vc3RvcmVzL2NvbXBvbmVudC1zdG9yZSc7XG5pbXBvcnQgeyBOZ3RTdG9yZSwgcm9vdFN0YXRlTWFwIH0gZnJvbSAnLi9zdG9yZXMvc3RvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RDYW52YXNJbnB1dHMsIE5ndERvbUV2ZW50LCBOZ3REcHIsIE5ndE9ic2VydmFibGVJbnB1dCwgTmd0U3RhdGUsIE5ndFZlY3RvcjMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE5ndExvYWRlciB9IGZyb20gJy4vc2VydmljZXMvbG9hZGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtY2FudmFzLWNvbnRhaW5lcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAgIHByb3ZpZGVyczogW05ndFJlc2l6ZV0sXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIDpob3N0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0Q2FudmFzQ29udGFpbmVyIHtcbiAgICBAT3V0cHV0KCkgcmVzaXplID0gaW5qZWN0KE5ndFJlc2l6ZSkgYXMgT2JzZXJ2YWJsZTxOZ3RSZXNpemVSZXN1bHQ+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1jYW52YXMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1jYW52YXMtY29udGFpbmVyIChyZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGNhbnZhcyAjZ2xDYW52YXMgc3R5bGU9XCJkaXNwbGF5OiBibG9ja1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NvbmZpZ3VyZWRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjYW52YXNDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9jYW52YXM+XG4gICAgICAgIDwvbmd0LWNhbnZhcy1jb250YWluZXI+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICBdLFxuICAgIGltcG9ydHM6IFtOZ3RDYW52YXNDb250YWluZXIsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIEFzeW5jUGlwZV0sXG4gICAgcHJvdmlkZXJzOiBbTmd0U3RvcmUsIHByb3ZpZGVJbnN0YW5jZVJlZihOZ3RDYW52YXMsIChjYW52YXMpID0+IGNhbnZhcy5zY2VuZVJlZildLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RDYW52YXMgZXh0ZW5kcyBOZ3RDb21wb25lbnRTdG9yZTxOZ3RDYW52YXNJbnB1dHM+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3Mubmd0LWNhbnZhcycpIHJlYWRvbmx5IGhvc3RDbGFzcyA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvaW50ZXJFdmVudHMnKSBnZXQgcG9pbnRlckV2ZW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZCgocykgPT4gcy5ldmVudFNvdXJjZSkgIT09IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50ID8gJ25vbmUnIDogJ2F1dG8nO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsaW5lYXIobGluZWFyOiBOZ3RPYnNlcnZhYmxlSW5wdXQ8Ym9vbGVhbj4pIHtcbiAgICAgICAgdGhpcy53cml0ZSh7IGxpbmVhciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbGVnYWN5KGxlZ2FjeTogTmd0T2JzZXJ2YWJsZUlucHV0PGJvb2xlYW4+KSB7XG4gICAgICAgIHRoaXMud3JpdGUoeyBsZWdhY3kgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZsYXQoZmxhdDogTmd0T2JzZXJ2YWJsZUlucHV0PGJvb2xlYW4+KSB7XG4gICAgICAgIHRoaXMud3JpdGUoeyBmbGF0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvcnRob2dyYXBoaWMob3J0aG9ncmFwaGljOiBOZ3RPYnNlcnZhYmxlSW5wdXQ8Ym9vbGVhbj4pIHtcbiAgICAgICAgdGhpcy53cml0ZSh7IG9ydGhvZ3JhcGhpYyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZnJhbWVsb29wKGZyYW1lbG9vcDogTmd0T2JzZXJ2YWJsZUlucHV0PCdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInPikge1xuICAgICAgICB0aGlzLndyaXRlKHsgZnJhbWVsb29wIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkcHIoZHByOiBOZ3RPYnNlcnZhYmxlSW5wdXQ8Tmd0RHByPikge1xuICAgICAgICB0aGlzLndyaXRlKHsgZHByIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByYXljYXN0ZXIocmF5Y2FzdGVyOiBQYXJ0aWFsPFRIUkVFLlJheWNhc3Rlcj4pIHtcbiAgICAgICAgdGhpcy53cml0ZSh7IHJheWNhc3RlciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hhZG93cyhzaGFkb3dzOiBib29sZWFuIHwgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD4pIHtcbiAgICAgICAgdGhpcy53cml0ZSh7XG4gICAgICAgICAgICBzaGFkb3dzOiB0eXBlb2Ygc2hhZG93cyA9PT0gJ29iamVjdCcgPyAoc2hhZG93cyBhcyBQYXJ0aWFsPFRIUkVFLldlYkdMU2hhZG93TWFwPikgOiBzaGFkb3dzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY2FtZXJhKGNhbWVyYTogTmd0Q2FudmFzSW5wdXRzWydjYW1lcmEnXSkge1xuICAgICAgICB0aGlzLndyaXRlKHsgY2FtZXJhIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBnbChnbDogTmd0Q2FudmFzSW5wdXRzWydnbCddKSB7XG4gICAgICAgIHRoaXMud3JpdGUoeyBnbCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZXZlbnRTb3VyY2UoZXZlbnRTb3VyY2U6IE5ndENhbnZhc0lucHV0c1snZXZlbnRTb3VyY2UnXSkge1xuICAgICAgICB0aGlzLndyaXRlKHsgZXZlbnRTb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGV2ZW50UHJlZml4KGV2ZW50UHJlZml4OiBOZ3RDYW52YXNJbnB1dHNbJ2V2ZW50UHJlZml4J10pIHtcbiAgICAgICAgdGhpcy53cml0ZSh7IGV2ZW50UHJlZml4IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsb29rQXQobG9va0F0OiBOZ3RPYnNlcnZhYmxlSW5wdXQ8Tmd0VmVjdG9yMz4pIHtcbiAgICAgICAgdGhpcy53cml0ZSh7IGxvb2tBdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcGVyZm9ybWFuY2UocGVyZm9ybWFuY2U6IE5ndENhbnZhc0lucHV0c1sncGVyZm9ybWFuY2UnXSkge1xuICAgICAgICB0aGlzLndyaXRlKHsgcGVyZm9ybWFuY2UgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIGNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFN0YXRlPigpO1xuICAgIEBPdXRwdXQoKSBjYW52YXNQb2ludGVyTWlzc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnZ2xDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGdsQ2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG5cbiAgICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGNhbnZhc0NvbnRlbnQhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGVyID0gaW5qZWN0KE5ndExvYWRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChOZ3RTdG9yZSwgeyBzZWxmOiB0cnVlIH0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWYpIGFzIEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgZ2V0IHNjZW5lUmVmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5yZWFkKChzKSA9PiBzLnNjZW5lUmVmKTtcbiAgICB9XG5cbiAgICBnZXQgaXNDb25maWd1cmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5pc0NvbmZpZ3VyZWQ7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLndyaXRlKHtcbiAgICAgICAgICAgIHNoYWRvd3M6IGZhbHNlLFxuICAgICAgICAgICAgbGluZWFyOiBmYWxzZSxcbiAgICAgICAgICAgIGZsYXQ6IGZhbHNlLFxuICAgICAgICAgICAgbGVnYWN5OiBmYWxzZSxcbiAgICAgICAgICAgIG9ydGhvZ3JhcGhpYzogZmFsc2UsXG4gICAgICAgICAgICBmcmFtZWxvb3A6ICdhbHdheXMnLFxuICAgICAgICAgICAgZHByOiBbMSwgMl0sXG4gICAgICAgICAgICBldmVudHM6IGNyZWF0ZVBvaW50ZXJFdmVudHMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmV2ZW50U291cmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudFNvdXJjZSA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jYW52YXNQb2ludGVyTWlzc2VkLm9ic2VydmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHBvaW50ZXJNaXNzZWQgZXZlbnRcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLndyaXRlKHtcbiAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyTWlzc2VkOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvIGJhY2sgaW50byBhbmd1bGFyIHpvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzUG9pbnRlck1pc3NlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBzZXQgcm9vdFN0YXRlTWFwXG4gICAgICAgICAgICByb290U3RhdGVNYXAuc2V0KHRoaXMuZ2xDYW52YXMubmF0aXZlRWxlbWVudCwgdGhpcy5zdG9yZS5yZWFkKTtcblxuICAgICAgICAgICAgLy8gc2V0dXAgY2FudmFzIHN0YXRlXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmluaXQoKTtcblxuICAgICAgICAgICAgdGhpcy5zdG9yZS5vblJlYWR5KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RvcmUucmVhZCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0cyA9IHRoaXMucmVhZCgpO1xuXG4gICAgICAgICAgICAgICAgLy8gY2FudmFzIGlzIHJlYWR5XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS53cml0ZSgocykgPT4gKHsgaW50ZXJuYWw6IHsgLi4ucy5pbnRlcm5hbCwgYWN0aXZlOiB0cnVlIH0gfSkpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29ubmVjdCB0byBldmVudHNvdXJjZVxuICAgICAgICAgICAgICAgIHN0YXRlLmV2ZW50cy5jb25uZWN0Py4oXG4gICAgICAgICAgICAgICAgICAgIGlucHV0cy5ldmVudFNvdXJjZSBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBpbnB1dHMuZXZlbnRTb3VyY2UubmF0aXZlRWxlbWVudCA6IGlucHV0cy5ldmVudFNvdXJjZVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBTZXQgdXAgY29tcHV0ZSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIGlmIChpbnB1dHMuZXZlbnRQcmVmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuc2V0RXZlbnRzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGU6IChldmVudCwgc3RhdGVHZXR0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbm5lclN0YXRlID0gc3RhdGVHZXR0ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdYJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdZJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lclN0YXRlLnBvaW50ZXIuc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAvIGlubmVyU3RhdGUuc2l6ZS53aWR0aCkgKiAyIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSh5IC8gaW5uZXJTdGF0ZS5zaXplLmhlaWdodCkgKiAyICsgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJTdGF0ZS5yYXljYXN0ZXIuc2V0RnJvbUNhbWVyYShpbm5lclN0YXRlLnBvaW50ZXIsIGlubmVyU3RhdGUuY2FtZXJhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNyZWF0ZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlZC5lbWl0KHRoaXMuc3RvcmUucmVhZCgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25SZXNpemUocmVzaXplUmVzdWx0OiBOZ3RSZXNpemVSZXN1bHQpIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gcmVzaXplUmVzdWx0O1xuICAgICAgICAgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JlLmlzSW5pdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmluaXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5jb25maWd1cmUodGhpcy5yZWFkKCksIHRoaXMuZ2xDYW52YXMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmxvYWRlci5kZXN0cm95KCk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIl19
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBbUIsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQWlCM0MsTUFBTSxPQUFPLGtCQUFrQjtJQWYvQjtRQWdCYyxpQkFBWSxHQUFHLGVBQWUsRUFBRSxDQUFDO0tBQzlDOzsrR0FGWSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw4R0FGaEIsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLDBCQVZqRCxnQkFBZ0I7MkZBWWpCLGtCQUFrQjtrQkFmOUIsU0FBUzsrQkFDSSxzQkFBc0IsY0FDcEIsSUFBSSxZQUNOLGdCQUFn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Y0FDVixJQUFJLFlBQ047Ozs7O0tBS1QsV0FDUSxDQUFDLGtCQUFrQixDQUFDLGFBQ2xCLENBQUMsUUFBUSxDQUFDOzhCQWlDcUIsU0FBUztzQkFBbEQsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ1MsYUFBYTtzQkFBcEQsV0FBVzt1QkFBQyxxQkFBcUI7Z0JBSXpCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLElBQUk7c0JBQWhCLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLEdBQUc7c0JBQWYsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBTU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxFQUFFO3NCQUFkLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRWtDLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDMEIsUUFBUTtzQkFBeEUsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFR5cGUsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd4UmVzaXplLCBOZ3hSZXNpemVSZXN1bHQsIHByb3ZpZGVOZ3hSZXNpemVPcHRpb25zIH0gZnJvbSAnbmd4LXJlc2l6ZSc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHByb3ZpZGVOZ3RSZW5kZXJlciB9IGZyb20gJy4vcmVuZGVyZXIvcHJvdmlkZXInO1xuaW1wb3J0IHsgTmd0UnhTdG9yZSB9IGZyb20gJy4vc3RvcmVzL3J4LXN0b3JlJztcbmltcG9ydCB7IE5ndFN0b3JlLCByb290U3RhdGVNYXAgfSBmcm9tICcuL3N0b3Jlcy9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndENhbnZhc0lucHV0cywgTmd0RG9tRXZlbnQsIE5ndERwciwgTmd0U3RhdGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5pbXBvcnQgeyBjcmVhdGVQb2ludGVyRXZlbnRzIH0gZnJvbSAnLi93ZWIvZXZlbnRzJztcbmltcG9ydCB7IGluamVjdE5ndExvYWRlciB9IGZyb20gJy4vbG9hZGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtY2FudmFzLWNvbnRhaW5lcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50IC8+JyxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW3Byb3ZpZGVOZ3hSZXNpemVPcHRpb25zKHsgZW1pdEluWm9uZTogZmFsc2UgfSldLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RDYW52YXNDb250YWluZXIge1xuICAgIEBPdXRwdXQoKSBjYW52YXNSZXNpemUgPSBpbmplY3ROZ3hSZXNpemUoKTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtY2FudmFzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtY2FudmFzLWNvbnRhaW5lciAoY2FudmFzUmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIj5cbiAgICAgICAgICAgIDxjYW52YXMgI2dsQ2FudmFzIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7XCI+PC9jYW52YXM+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICNnbEFuY2hvciAvPlxuICAgICAgICA8L25ndC1jYW52YXMtY29udGFpbmVyPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05ndENhbnZhc0NvbnRhaW5lcl0sXG4gICAgcHJvdmlkZXJzOiBbTmd0U3RvcmVdLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndENhbnZhcyBleHRlbmRzIE5ndFJ4U3RvcmU8Tmd0Q2FudmFzSW5wdXRzPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbnZJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvc3QgPSBpbmplY3QoRWxlbWVudFJlZikgYXMgRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCkge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIHNoYWRvd3M6IGZhbHNlLFxuICAgICAgICAgICAgbGluZWFyOiBmYWxzZSxcbiAgICAgICAgICAgIGZsYXQ6IGZhbHNlLFxuICAgICAgICAgICAgbGVnYWN5OiBmYWxzZSxcbiAgICAgICAgICAgIG9ydGhvZ3JhcGhpYzogZmFsc2UsXG4gICAgICAgICAgICBmcmFtZWxvb3A6ICdhbHdheXMnLFxuICAgICAgICAgICAgZHByOiBbMSwgMl0sXG4gICAgICAgICAgICBldmVudHM6IGNyZWF0ZVBvaW50ZXJFdmVudHMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3Mubmd0LWNhbnZhcycpIHJlYWRvbmx5IGhvc3RDbGFzcyA9IHRydWU7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb2ludGVyRXZlbnRzJykgZ2V0IHBvaW50ZXJFdmVudHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnZXZlbnRTb3VyY2UnKSAhPT0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQgPyAnbm9uZScgOiAnYXV0byc7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2NlbmUhOiBUeXBlPGFueT47XG4gICAgQElucHV0KCkgY29tcG91bmRQcmVmaXhlczogc3RyaW5nW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCBsaW5lYXIobGluZWFyOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGluZWFyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsZWdhY3kobGVnYWN5OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVnYWN5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmbGF0KGZsYXQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmbGF0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvcnRob2dyYXBoaWMob3J0aG9ncmFwaGljOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgb3J0aG9ncmFwaGljIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmcmFtZWxvb3AoZnJhbWVsb29wOiBOZ3RDYW52YXNJbnB1dHNbJ2ZyYW1lbG9vcCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZnJhbWVsb29wIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkcHIoZHByOiBOZ3REcHIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkcHIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHJheWNhc3RlcihyYXljYXN0ZXI6IFBhcnRpYWw8VEhSRUUuUmF5Y2FzdGVyPikge1xuICAgICAgICB0aGlzLnNldCh7IHJheWNhc3RlciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hhZG93cyhzaGFkb3dzOiBib29sZWFuIHwgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD4pIHtcbiAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgc2hhZG93czogdHlwZW9mIHNoYWRvd3MgPT09ICdvYmplY3QnID8gKHNoYWRvd3MgYXMgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD4pIDogc2hhZG93cyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNhbWVyYShjYW1lcmE6IE5ndENhbnZhc0lucHV0c1snY2FtZXJhJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjYW1lcmEgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGdsKGdsOiBOZ3RDYW52YXNJbnB1dHNbJ2dsJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBnbCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZXZlbnRTb3VyY2UoZXZlbnRTb3VyY2U6IE5ndENhbnZhc0lucHV0c1snZXZlbnRTb3VyY2UnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGV2ZW50U291cmNlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBldmVudFByZWZpeChldmVudFByZWZpeDogTmd0Q2FudmFzSW5wdXRzWydldmVudFByZWZpeCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZXZlbnRQcmVmaXggfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGxvb2tBdChsb29rQXQ6IE5ndENhbnZhc0lucHV0c1snbG9va0F0J10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsb29rQXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBlcmZvcm1hbmNlKHBlcmZvcm1hbmNlOiBOZ3RDYW52YXNJbnB1dHNbJ3BlcmZvcm1hbmNlJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwZXJmb3JtYW5jZSB9KTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0U3RhdGU+KCk7XG4gICAgQE91dHB1dCgpIHBvaW50ZXJNaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdnbENhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIGdsQ2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnZ2xBbmNob3InLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBnbEFuY2hvciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBwcml2YXRlIGdsUmVmPzogQ29tcG9uZW50UmVmPHVua25vd24+O1xuICAgIHByaXZhdGUgZ2xFbnZJbmplY3Rvcj86IEVudmlyb25tZW50SW5qZWN0b3I7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldCgnZXZlbnRTb3VyY2UnKSkge1xuICAgICAgICAgICAgLy8gc2V0IGRlZmF1bHQgZXZlbnQgc291cmNlIHRvIHRoZSBob3N0IGVsZW1lbnRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRTb3VyY2UgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvaW50ZXJNaXNzZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0KHtcbiAgICAgICAgICAgICAgICBvblBvaW50ZXJNaXNzZWQ6IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJNaXNzZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR1cCBOZ3RTdG9yZVxuICAgICAgICB0aGlzLnN0b3JlLmluaXQoKTtcblxuICAgICAgICAvLyBzZXQgcm9vdFN0YXRlTWFwXG4gICAgICAgIHJvb3RTdGF0ZU1hcC5zZXQodGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50LCB0aGlzLnN0b3JlKTtcblxuICAgICAgICAvLyBzdWJzY3JpYmUgdG8gc3RvcmUgdG8gbGlzdGVuIGZvciByZWFkeSBzdGF0ZVxuICAgICAgICB0aGlzLmhvbGQodGhpcy5zdG9yZS5zZWxlY3QoJ3JlYWR5JykucGlwZShmaWx0ZXIoKHJlYWR5KSA9PiByZWFkeSkpLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlUmVhZHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25SZXNpemUoeyB3aWR0aCwgaGVpZ2h0IH06IE5neFJlc2l6ZVJlc3VsdCkge1xuICAgICAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yZS5pc0luaXQpIHRoaXMuc3RvcmUuaW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5jb25maWd1cmUodGhpcy5nZXQoKSwgdGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcmVSZWFkeSgpIHtcbiAgICAgICAgLy8gY2FudmFzIGlzIHJlYWR5LCBsZXQncyBhY3RpdmF0ZSB0aGUgbG9vcFxuICAgICAgICB0aGlzLnN0b3JlLnNldCgoc3RhdGUpID0+ICh7IGludGVybmFsOiB7IC4uLnN0YXRlLmludGVybmFsLCBhY3RpdmU6IHRydWUgfSB9KSk7XG5cbiAgICAgICAgY29uc3QgaW5wdXRzID0gdGhpcy5nZXQoKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0b3JlLmdldCgpO1xuXG4gICAgICAgIC8vIGNvbm5lY3QgdG8gZXZlbnQgc291cmNlXG4gICAgICAgIHN0YXRlLmV2ZW50cy5jb25uZWN0Py4oaXMucmVmKGlucHV0cy5ldmVudFNvdXJjZSkgPyBpbnB1dHMuZXZlbnRTb3VyY2UubmF0aXZlRWxlbWVudCA6IGlucHV0cy5ldmVudFNvdXJjZSk7XG5cbiAgICAgICAgLy8gc2V0dXAgY29tcHV0ZSBmdW5jdGlvbiBmb3IgZXZlbnRzXG4gICAgICAgIGlmIChpbnB1dHMuZXZlbnRQcmVmaXgpIHtcbiAgICAgICAgICAgIHN0YXRlLnNldEV2ZW50cyh7XG4gICAgICAgICAgICAgICAgY29tcHV0ZTogKGV2ZW50LCBzdG9yZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbm5lclN0YXRlID0gc3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHggPSBldmVudFsoaW5wdXRzLmV2ZW50UHJlZml4ICsgJ1gnKSBhcyBrZXlvZiBOZ3REb21FdmVudF0gYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdZJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJTdGF0ZS5wb2ludGVyLnNldCgoeCAvIGlubmVyU3RhdGUuc2l6ZS53aWR0aCkgKiAyIC0gMSwgLSh5IC8gaW5uZXJTdGF0ZS5zaXplLmhlaWdodCkgKiAyICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlubmVyU3RhdGUucmF5Y2FzdGVyLnNldEZyb21DYW1lcmEoaW5uZXJTdGF0ZS5wb2ludGVyLCBpbm5lclN0YXRlLmNhbWVyYSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCBjcmVhdGVkIGV2ZW50IGlmIG9ic2VydmVkXG4gICAgICAgIGlmICh0aGlzLmNyZWF0ZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlZC5lbWl0KHRoaXMuc3RvcmUuZ2V0KCkpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVuZGVyXG4gICAgICAgIGlmICh0aGlzLmdsUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmdsUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdsRW52SW5qZWN0b3IgPSBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yKFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZU5ndFJlbmRlcmVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiB0aGlzLnN0b3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWY6IHRoaXMuY2RyLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG91bmRQcmVmaXhlczogdGhpcy5jb21wb3VuZFByZWZpeGVzLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRoaXMuZW52SW5qZWN0b3JcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdsUmVmID0gdGhpcy5nbEFuY2hvci5jcmVhdGVDb21wb25lbnQodGhpcy5zY2VuZSwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmdsRW52SW5qZWN0b3IgfSk7XG4gICAgICAgICAgICB0aGlzLmdsUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuZ2xSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5nbFJlZikge1xuICAgICAgICAgICAgdGhpcy5nbFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZ2xFbnZJbmplY3Rvcikge1xuICAgICAgICAgICAgdGhpcy5nbEVudkluamVjdG9yLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICBpbmplY3ROZ3RMb2FkZXIuZGVzdHJveSgpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ const catalogue = {};
3
+ export function extend(objects) {
4
+ Object.assign(catalogue, objects);
5
+ }
6
+ export const NGT_CATALOGUE = new InjectionToken('THREE Constructors Catalogue', { factory: () => catalogue });
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZ3VlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGkvY2F0YWxvZ3VlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxTQUFTLEdBQWdELEVBQUUsQ0FBQztBQUVsRSxNQUFNLFVBQVUsTUFBTSxDQUFDLE9BQWU7SUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FDM0MsOEJBQThCLEVBQzlCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgY2F0YWxvZ3VlOiBSZWNvcmQ8c3RyaW5nLCBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+ID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqZWN0czogb2JqZWN0KTogdm9pZCB7XG4gICAgT2JqZWN0LmFzc2lnbihjYXRhbG9ndWUsIG9iamVjdHMpO1xufVxuXG5leHBvcnQgY29uc3QgTkdUX0NBVEFMT0dVRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWNvcmQ8c3RyaW5nLCBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+PihcbiAgICAnVEhSRUUgQ29uc3RydWN0b3JzIENhdGFsb2d1ZScsXG4gICAgeyBmYWN0b3J5OiAoKSA9PiBjYXRhbG9ndWUgfVxuKTtcbiJdfQ==
@@ -1,30 +1,50 @@
1
- import { Directive, inject, InjectionToken, Injector, Input, TemplateRef, ViewContainerRef, } from '@angular/core';
1
+ import { Directive, inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export const NGT_ARGS = new InjectionToken('NgtArgs');
4
- export function injectArgs(options = {}) {
5
- return inject(NGT_ARGS, options);
6
- }
7
3
  export class NgtArgs {
8
4
  constructor() {
9
- this.templateRef = inject(TemplateRef);
10
5
  this.vcr = inject(ViewContainerRef);
6
+ this.template = inject(TemplateRef);
7
+ this.injectedArgs = [];
8
+ this.injected = false;
9
+ const commentNode = this.vcr.element.nativeElement;
10
+ if (commentNode['__ngt_renderer_add_comment__']) {
11
+ commentNode['__ngt_renderer_add_comment__']();
12
+ delete commentNode['__ngt_renderer_add_comment__'];
13
+ }
11
14
  }
12
15
  set args(args) {
13
- if (this.view) {
16
+ if (args == null || !Array.isArray(args))
17
+ return;
18
+ if (args.length === 1 && args[0] === null)
19
+ return;
20
+ this.injected = false;
21
+ this.injectedArgs = args;
22
+ this.createView();
23
+ }
24
+ get args() {
25
+ if (this.validate()) {
26
+ this.injected = true;
27
+ return this.injectedArgs;
28
+ }
29
+ return null;
30
+ }
31
+ validate() {
32
+ return !this.injected && !!this.injectedArgs.length;
33
+ }
34
+ createView() {
35
+ if (this.view && !this.view.destroyed) {
14
36
  this.view.destroy();
15
37
  }
16
- this.view = this.vcr.createEmbeddedView(this.templateRef, {}, { injector: Injector.create({ providers: [{ provide: NGT_ARGS, useValue: args }] }) });
38
+ this.view = this.vcr.createEmbeddedView(this.template);
39
+ this.view.detectChanges();
17
40
  }
18
41
  }
19
- NgtArgs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive });
20
- NgtArgs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, ngImport: i0 });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtArgs, decorators: [{
42
+ NgtArgs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive });
43
+ NgtArgs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, ngImport: i0 });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtArgs, decorators: [{
22
45
  type: Directive,
23
- args: [{
24
- selector: '[args]',
25
- standalone: true,
26
- }]
27
- }], propDecorators: { args: [{
46
+ args: [{ selector: '[args]', standalone: true }]
47
+ }], ctorParameters: function () { return []; }, propDecorators: { args: [{
28
48
  type: Input
29
49
  }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9kaXJlY3RpdmVzL2FyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxNQUFNLEVBQ04sY0FBYyxFQUVkLFFBQVEsRUFDUixLQUFLLEVBQ0wsV0FBVyxFQUNYLGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQzs7QUFHdkIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFZLFNBQVMsQ0FBQyxDQUFDO0FBU2pFLE1BQU0sVUFBVSxVQUFVLENBQXdDLFVBQXlCLEVBQUU7SUFDekYsT0FBTyxNQUFNLENBQStCLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBTUQsTUFBTSxPQUFPLE9BQU87SUFKcEI7UUFLcUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBZW5EO0lBWEcsSUFBYSxJQUFJLENBQUMsSUFBZTtRQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUNuQyxJQUFJLENBQUMsV0FBVyxFQUNoQixFQUFFLEVBQ0YsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDeEYsQ0FBQztJQUNOLENBQUM7O29HQWhCUSxPQUFPO3dGQUFQLE9BQU87MkZBQVAsT0FBTztrQkFKbkIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQU9nQixJQUFJO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbmplY3RPcHRpb25zLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QW55Q3RvciB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IE5HVF9BUkdTID0gbmV3IEluamVjdGlvblRva2VuPHVua25vd25bXT4oJ05ndEFyZ3MnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEFyZ3M8VEN0b3IgZXh0ZW5kcyBOZ3RBbnlDdG9yID0gTmd0QW55Q3Rvcj4oKTogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPFRDdG9yPjtcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBcmdzPFRDdG9yIGV4dGVuZHMgTmd0QW55Q3RvciA9IE5ndEFueUN0b3I+KFxuICAgIG9wdGlvbnM6IEluamVjdE9wdGlvbnMgJiB7IG9wdGlvbmFsPzogZmFsc2UgfVxuKTogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPFRDdG9yPjtcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBcmdzPFRDdG9yIGV4dGVuZHMgTmd0QW55Q3RvciA9IE5ndEFueUN0b3I+KFxuICAgIG9wdGlvbnM6IEluamVjdE9wdGlvbnMgJiB7IG9wdGlvbmFsPzogdHJ1ZSB9XG4pOiBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VEN0b3I+IHwgbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBcmdzPFRDdG9yIGV4dGVuZHMgTmd0QW55Q3RvciA9IE5ndEFueUN0b3I+KG9wdGlvbnM6IEluamVjdE9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBpbmplY3Q8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPFRDdG9yPj4oTkdUX0FSR1MsIG9wdGlvbnMpO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1thcmdzXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0QXJncyB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2Y3IgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICBwcml2YXRlIHZpZXc/OiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIHNldCBhcmdzKGFyZ3M6IHVua25vd25bXSkge1xuICAgICAgICBpZiAodGhpcy52aWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXcuZGVzdHJveSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52aWV3ID0gdGhpcy52Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVJlZixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgeyBpbmplY3RvcjogSW5qZWN0b3IuY3JlYXRlKHsgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOR1RfQVJHUywgdXNlVmFsdWU6IGFyZ3MgfV0gfSkgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS9zcmMvbGliL2RpcmVjdGl2ZXMvYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHekcsTUFBTSxPQUFPLE9BQU87SUFJaEI7UUFIaUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9CLGFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFVeEMsaUJBQVksR0FBVSxFQUFFLENBQUM7UUFDekIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVJyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDbkQsSUFBSSxXQUFXLENBQUMsOEJBQThCLENBQUMsRUFBRTtZQUM3QyxXQUFXLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDO1lBQzlDLE9BQU8sV0FBVyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDdEQ7SUFDTCxDQUFDO0lBTUQsSUFBYSxJQUFJLENBQUMsSUFBa0I7UUFDaEMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPO1FBQ2pELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUk7WUFBRSxPQUFPO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDeEQsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7O29HQTFDUSxPQUFPO3dGQUFQLE9BQU87MkZBQVAsT0FBTztrQkFEbkIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTswRUFpQmxDLElBQUk7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgaW5qZWN0LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2FyZ3NdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndEFyZ3Mge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGUgPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gdGhpcy52Y3IuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoY29tbWVudE5vZGVbJ19fbmd0X3JlbmRlcmVyX2FkZF9jb21tZW50X18nXSkge1xuICAgICAgICAgICAgY29tbWVudE5vZGVbJ19fbmd0X3JlbmRlcmVyX2FkZF9jb21tZW50X18nXSgpO1xuICAgICAgICAgICAgZGVsZXRlIGNvbW1lbnROb2RlWydfX25ndF9yZW5kZXJlcl9hZGRfY29tbWVudF9fJ107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluamVjdGVkQXJnczogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIGluamVjdGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSB2aWV3PzogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+O1xuXG4gICAgQElucHV0KCkgc2V0IGFyZ3MoYXJnczogYW55W10gfCBudWxsKSB7XG4gICAgICAgIGlmIChhcmdzID09IG51bGwgfHwgIUFycmF5LmlzQXJyYXkoYXJncykpIHJldHVybjtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIGFyZ3NbMF0gPT09IG51bGwpIHJldHVybjtcbiAgICAgICAgdGhpcy5pbmplY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmluamVjdGVkQXJncyA9IGFyZ3M7XG4gICAgICAgIHRoaXMuY3JlYXRlVmlldygpO1xuICAgIH1cblxuICAgIGdldCBhcmdzKCkge1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmluamVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluamVjdGVkQXJncztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmluamVjdGVkICYmICEhdGhpcy5pbmplY3RlZEFyZ3MubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVmlldygpIHtcbiAgICAgICAgaWYgKHRoaXMudmlldyAmJiAhdGhpcy52aWV3LmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdGhpcy52aWV3LmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpZXcgPSB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk7XG4gICAgICAgIHRoaXMudmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIl19
@@ -6,15 +6,12 @@ export class NgtRepeat extends NgForOf {
6
6
  this.ngForOf = Number.isInteger(count) ? Array.from({ length: count }, (_, i) => i) : [];
7
7
  }
8
8
  }
9
- NgtRepeat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive });
10
- NgtRepeat.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtRepeat, decorators: [{
9
+ NgtRepeat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive });
10
+ NgtRepeat.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtRepeat, decorators: [{
12
12
  type: Directive,
13
- args: [{
14
- selector: '[ngFor][ngForRepeat]',
15
- standalone: true,
16
- }]
13
+ args: [{ selector: '[ngFor][ngForRepeat]', standalone: true }]
17
14
  }], propDecorators: { ngForRepeat: [{
18
15
  type: Input
19
16
  }] } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci10aHJlZS9zcmMvbGliL2RpcmVjdGl2ZXMvcmVwZWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNakQsTUFBTSxPQUFPLFNBQVUsU0FBUSxPQUFlO0lBQzFDLElBQWEsV0FBVyxDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3RixDQUFDOztzR0FIUSxTQUFTOzBGQUFULFNBQVM7MkZBQVQsU0FBUztrQkFKckIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBRWdCLFdBQVc7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0Zvck9mIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbmdGb3JdW25nRm9yUmVwZWF0XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UmVwZWF0IGV4dGVuZHMgTmdGb3JPZjxudW1iZXI+IHtcbiAgICBASW5wdXQoKSBzZXQgbmdGb3JSZXBlYXQoY291bnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLm5nRm9yT2YgPSBOdW1iZXIuaXNJbnRlZ2VyKGNvdW50KSA/IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sIChfLCBpKSA9PiBpKSA6IFtdO1xuICAgIH1cbn1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGlyZWN0aXZlcy9yZXBlYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUdqRCxNQUFNLE9BQU8sU0FBVSxTQUFRLE9BQWU7SUFDMUMsSUFBYSxXQUFXLENBQUMsS0FBYTtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzdGLENBQUM7O3NHQUhRLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQURyQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7OEJBRWhELFdBQVc7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0Zvck9mIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25nRm9yXVtuZ0ZvclJlcGVhdF0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0UmVwZWF0IGV4dGVuZHMgTmdGb3JPZjxudW1iZXI+IHtcbiAgICBASW5wdXQoKSBzZXQgbmdGb3JSZXBlYXQoY291bnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLm5nRm9yT2YgPSBOdW1iZXIuaXNJbnRlZ2VyKGNvdW50KSA/IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sIChfLCBpKSA9PiBpKSA6IFtdO1xuICAgIH1cbn1cbiJdfQ==