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
@@ -1,368 +0,0 @@
1
- import { Directive, EventEmitter, inject, InjectionToken, Input, NgZone, Output, } from '@angular/core';
2
- import { filter, tap } from 'rxjs';
3
- import { NgtRef } from './ref';
4
- import { NgtComponentStore, tapEffect } from './stores/component-store';
5
- import { NgtStore } from './stores/store';
6
- import { applyProps } from './utils/apply-props';
7
- import { removeInteractivity } from './utils/events';
8
- import { getInstanceLocalState } from './utils/get-instance-local-state';
9
- import { invalidateInstance } from './utils/instance';
10
- import { is } from './utils/is';
11
- import { mutate } from './utils/mutate';
12
- import * as i0 from "@angular/core";
13
- export const NGT_PROXY_INSTANCE = Symbol.for('__ngt__proxy__instance__');
14
- export const NGT_INSTANCE_REF_FACTORY = new InjectionToken('NgtInstance[instanceRef] factory');
15
- export function provideInstanceRef(ctor, factory) {
16
- return {
17
- provide: NGT_INSTANCE_REF_FACTORY,
18
- useFactory: (instance) => {
19
- if (factory) {
20
- return () => factory(instance);
21
- }
22
- return () => instance['instanceRef'] || instance['instance']['instanceRef'];
23
- },
24
- deps: [ctor],
25
- };
26
- }
27
- export function injectInstanceRef(options = {}) {
28
- return inject(NGT_INSTANCE_REF_FACTORY, options);
29
- }
30
- export function injectInstance(options = {}) {
31
- return inject(NgtInstance, options);
32
- }
33
- const supportedEvents = [
34
- 'click',
35
- 'contextmenu',
36
- 'dblclick',
37
- 'pointerup',
38
- 'pointerdown',
39
- 'pointerover',
40
- 'pointerout',
41
- 'pointerenter',
42
- 'pointerleave',
43
- 'pointermove',
44
- 'pointermissed',
45
- 'pointercancel',
46
- 'wheel',
47
- ];
48
- export class NgtInstance extends NgtComponentStore {
49
- constructor() {
50
- super(...arguments);
51
- this.priority = 0;
52
- this.click = new EventEmitter();
53
- this.contextmenu = new EventEmitter();
54
- this.dblclick = new EventEmitter();
55
- this.pointerup = new EventEmitter();
56
- this.pointerdown = new EventEmitter();
57
- this.pointerover = new EventEmitter();
58
- this.pointerout = new EventEmitter();
59
- this.pointerenter = new EventEmitter();
60
- this.pointerleave = new EventEmitter();
61
- this.pointermove = new EventEmitter();
62
- this.pointermissed = new EventEmitter();
63
- this.pointercancel = new EventEmitter();
64
- this.wheel = new EventEmitter();
65
- this.zone = inject(NgZone);
66
- this.store = inject(NgtStore);
67
- this.parentRef = injectInstanceRef({ skipSelf: true, optional: true });
68
- this._isRaw = false;
69
- this.hasEmittedAlready = false;
70
- this.instanceReady = this.effect(tapEffect(() => {
71
- this.handleEvents();
72
- let attachToParentSubscription;
73
- if (this.parentRef) {
74
- attachToParentSubscription = this.attachToParent(this.parent.pipe(filter((parent) => !!parent)));
75
- const { noAttach, skipWrapper } = this.read();
76
- if (!noAttach && !skipWrapper) {
77
- const parentInstanceNode = getInstanceLocalState(getInstanceLocalState(this.instanceValue)?.parentRef?.value);
78
- if (parentInstanceNode) {
79
- const collections = is.object3d(this.instanceValue)
80
- ? parentInstanceNode.objectsRefs
81
- : parentInstanceNode.instancesRefs;
82
- collections.set((s) => [...s, this.instanceRef]);
83
- }
84
- }
85
- }
86
- let beforeRenderCleanUp;
87
- if (this.beforeRender && is.object3d(this.instanceValue) && is.object3d(this.proxyInstance)) {
88
- beforeRenderCleanUp = this.store
89
- .read((s) => s.internal)
90
- .subscribe((state, object) => this.beforeRender(state, object), this.priority, this.store.read, this.proxyInstance);
91
- }
92
- if (this.readyCallback)
93
- this.readyCallback(this.instanceValue);
94
- return () => {
95
- beforeRenderCleanUp?.();
96
- attachToParentSubscription?.unsubscribe();
97
- };
98
- }));
99
- this.handleEvents = this.effect(tapEffect(() => {
100
- if (this.instanceValue && is.object3d(this.instanceValue)) {
101
- const observedEvents = supportedEvents.reduce((result, event) => {
102
- const controllerEvent = this[event].observed ? this[event] : null;
103
- if (controllerEvent) {
104
- result.handlers[event] = this.eventNameToHandler(controllerEvent);
105
- result.eventCount += 1;
106
- }
107
- return result;
108
- }, { handlers: {}, eventCount: 0 });
109
- // patch __ngt__ with events
110
- applyProps(this.__ngt__, observedEvents);
111
- // add as an interaction if there are events observed
112
- if (observedEvents.eventCount > 0) {
113
- getInstanceLocalState(this.instanceValue)?.rootFactory().addInteraction(this.instanceValue);
114
- }
115
- }
116
- return () => {
117
- if (is.object3d(this.instanceValue) && this.__ngt__.eventCount > 0) {
118
- getInstanceLocalState(this.instanceValue)?.rootFactory().removeInteraction(this.instanceValue.uuid);
119
- }
120
- };
121
- }));
122
- this.attachToParent = this.effect(tap(() => {
123
- const attach = this.read((s) => s.attach);
124
- let parentInstanceRef = this.__ngt__?.parentRef;
125
- // if no parentInstance, try re-run the factory due to late init
126
- if (!parentInstanceRef || !parentInstanceRef.value) {
127
- // return early if failed to retrieve
128
- if (!this.parent?.value)
129
- return;
130
- // reassign on instance internal state
131
- if (this.__ngt__) {
132
- this.__ngt__.parentRef = this.parent;
133
- }
134
- parentInstanceRef = this.parent;
135
- }
136
- if (typeof attach === 'function') {
137
- const attachCleanUp = attach(parentInstanceRef, this.instanceRef, this.store.read);
138
- if (attachCleanUp) {
139
- this.__ngt__.attach = attachCleanUp;
140
- }
141
- }
142
- else {
143
- const propertyToAttach = [...attach];
144
- // if propertyToAttach is empty
145
- if (propertyToAttach.length === 0) {
146
- // this might be the case where we are attaching an object3D to the parent object3D
147
- if (is.object3d(this.instanceValue) &&
148
- is.object3d(this.proxyInstance) &&
149
- is.object3d(this.parent?.value)) {
150
- this.parent?.value.add(this.proxyInstance);
151
- }
152
- }
153
- else {
154
- // array material handling
155
- if (propertyToAttach[0] === 'material' &&
156
- propertyToAttach[1] &&
157
- typeof Number(propertyToAttach[1]) === 'number' &&
158
- is.material(this.instanceValue)) {
159
- if (!Array.isArray(parentInstanceRef.value.material)) {
160
- parentInstanceRef.value.material = [];
161
- }
162
- }
163
- // retrieve the current value on the parentInstance, so we can reset it later
164
- if (this.__ngt__) {
165
- this.__ngt__.attachValue = propertyToAttach.reduce((value, property) => value[property], parentInstanceRef.value);
166
- }
167
- // attach the instance value on the parent
168
- mutate(parentInstanceRef.value, this.proxyInstance, propertyToAttach);
169
- }
170
- // validate on the instance
171
- invalidateInstance(this.instanceValue);
172
- // validate on the parent
173
- if (getInstanceLocalState(parentInstanceRef.value)) {
174
- invalidateInstance(parentInstanceRef.value);
175
- }
176
- // save the attach
177
- if (this.__ngt__) {
178
- this.__ngt__.attach = propertyToAttach;
179
- }
180
- this.write({ attach: propertyToAttach });
181
- }
182
- }));
183
- }
184
- set ref(instance) {
185
- this.write({ instanceRef: is.ref(instance) ? instance : new NgtRef(instance) });
186
- }
187
- set skipWrapper(skipWrapper) {
188
- this.write({ skipWrapper });
189
- this.write({ skipWrapperExplicit: true });
190
- }
191
- set skipInit(skipInit) {
192
- this.write({ skipInit });
193
- this.write({ skipInitExplicit: true });
194
- }
195
- set noAttach(noAttach) {
196
- this.write({ noAttach });
197
- this.write({ noAttachExplicit: true });
198
- }
199
- set attach(value) {
200
- if (value) {
201
- const attach = typeof value === 'function'
202
- ? value
203
- : Array.isArray(value)
204
- ? value.map((item) => (typeof item === 'number' ? item.toString() : item))
205
- : [value];
206
- this.write({ attach, attachExplicit: true });
207
- }
208
- }
209
- set isRaw(val) {
210
- this._isRaw = val;
211
- }
212
- initialize() {
213
- super.initialize();
214
- this.write({
215
- instanceRef: new NgtRef(null),
216
- attach: [],
217
- noAttach: false,
218
- skipWrapper: false,
219
- skipInit: false,
220
- });
221
- }
222
- ngOnInit() {
223
- this.zone.runOutsideAngular(() => {
224
- this.store.onReady(() => {
225
- this.instanceReady(this.instanceRef.pipe(filter((instance) => !!instance)));
226
- });
227
- });
228
- }
229
- get instanceRef() {
230
- return this.read((s) => s.instanceRef);
231
- }
232
- get instanceValue() {
233
- if (!this.instanceRef.value)
234
- return this.instanceRef.value;
235
- return this._isRaw ? this.instanceRef.value?.valueOf() : this.instanceRef.value;
236
- }
237
- get proxyInstance() {
238
- return this.instanceValue?.[NGT_PROXY_INSTANCE];
239
- }
240
- get __ngt__() {
241
- return getInstanceLocalState(this._isRaw ? this.instanceRef.value : this.instanceValue);
242
- }
243
- get parent() {
244
- return this.parentRef?.();
245
- }
246
- ngOnDestroy() {
247
- this.zone.runOutsideAngular(() => {
248
- this.destroy();
249
- });
250
- super.ngOnDestroy();
251
- }
252
- destroy() {
253
- if (this.instanceValue) {
254
- if (is.object3d(this.instanceValue)) {
255
- const parentInstance = this.parent;
256
- if (parentInstance && is.object3d(parentInstance.value)) {
257
- removeInteractivity(this.__ngt__.stateFactory.bind(this.__ngt__), this.instanceValue);
258
- parentInstance.value.remove(this.instanceValue);
259
- invalidateInstance(parentInstance.value);
260
- }
261
- if (this.instanceValue.clear != null) {
262
- this.instanceValue.clear();
263
- }
264
- }
265
- else {
266
- if (this.__ngt__) {
267
- // non-scene objects
268
- const previousAttach = this.__ngt__.attach;
269
- if (previousAttach != null) {
270
- if (typeof previousAttach === 'function') {
271
- previousAttach();
272
- }
273
- else {
274
- const previousAttachValue = this.__ngt__.attachValue;
275
- if (this.__ngt__.parentRef && this.__ngt__.parentRef.value) {
276
- mutate(this.__ngt__.parentRef.value, previousAttachValue, previousAttach);
277
- }
278
- }
279
- if (this.__ngt__.parentRef && this.__ngt__.parentRef.value) {
280
- invalidateInstance(this.__ngt__.parentRef.value);
281
- }
282
- }
283
- }
284
- }
285
- const dispose = this.instanceValue['dispose'];
286
- if (dispose && typeof dispose === 'function') {
287
- dispose.apply(this.instanceValue);
288
- }
289
- }
290
- this.write({ attach: [] });
291
- this.instanceRef.complete();
292
- }
293
- eventNameToHandler(controllerEvent) {
294
- return (event) => {
295
- // go back into Angular Zone so that state updates on these events trigger CD
296
- this.zone.run(() => {
297
- controllerEvent.emit(event);
298
- });
299
- };
300
- }
301
- }
302
- NgtInstance.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtInstance, deps: null, target: i0.ɵɵFactoryTarget.Directive });
303
- NgtInstance.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0", type: NgtInstance, isStandalone: true, selector: "[ngtInstance]", inputs: { ref: "ref", skipWrapper: "skipWrapper", skipInit: "skipInit", noAttach: "noAttach", attach: "attach", priority: "priority", beforeRender: "beforeRender", readyCallback: "readyCallback", updateCallback: "updateCallback" }, outputs: { click: "click", contextmenu: "contextmenu", dblclick: "dblclick", pointerup: "pointerup", pointerdown: "pointerdown", pointerover: "pointerover", pointerout: "pointerout", pointerenter: "pointerenter", pointerleave: "pointerleave", pointermove: "pointermove", pointermissed: "pointermissed", pointercancel: "pointercancel", wheel: "wheel" }, exportAs: ["ngtInstance"], usesInheritance: true, ngImport: i0 });
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtInstance, decorators: [{
305
- type: Directive,
306
- args: [{
307
- selector: '[ngtInstance]',
308
- exportAs: 'ngtInstance',
309
- standalone: true,
310
- }]
311
- }], propDecorators: { ref: [{
312
- type: Input
313
- }], skipWrapper: [{
314
- type: Input
315
- }], skipInit: [{
316
- type: Input
317
- }], noAttach: [{
318
- type: Input
319
- }], attach: [{
320
- type: Input
321
- }], priority: [{
322
- type: Input
323
- }], beforeRender: [{
324
- type: Input
325
- }], readyCallback: [{
326
- type: Input
327
- }], updateCallback: [{
328
- type: Input
329
- }], click: [{
330
- type: Output
331
- }], contextmenu: [{
332
- type: Output
333
- }], dblclick: [{
334
- type: Output
335
- }], pointerup: [{
336
- type: Output
337
- }], pointerdown: [{
338
- type: Output
339
- }], pointerover: [{
340
- type: Output
341
- }], pointerout: [{
342
- type: Output
343
- }], pointerenter: [{
344
- type: Output
345
- }], pointerleave: [{
346
- type: Output
347
- }], pointermove: [{
348
- type: Output
349
- }], pointermissed: [{
350
- type: Output
351
- }], pointercancel: [{
352
- type: Output
353
- }], wheel: [{
354
- type: Output
355
- }] } });
356
- export const NGT_INSTANCE_INPUTS = [
357
- 'ref',
358
- 'attach',
359
- 'skipWrapper',
360
- 'skipInit',
361
- 'noAttach',
362
- 'beforeRender',
363
- 'priority',
364
- 'updateCallback',
365
- 'readyCallback',
366
- ];
367
- export const NGT_INSTANCE_OUTPUTS = [...supportedEvents];
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRocmVlL3NyYy9saWIvaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFFZCxLQUFLLEVBQ0wsTUFBTSxFQUdOLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFnQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBWTFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFeEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUF5QixrQ0FBa0MsQ0FBQyxDQUFDO0FBQ3ZILE1BQU0sVUFBVSxrQkFBa0IsQ0FHaEMsSUFBVyxFQUFFLE9BQW1EO0lBQzlELE9BQU87UUFDSCxPQUFP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bnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbmplY3RPcHRpb25zLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIFN1YnNjcmlwdGlvbiwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ3RSZWYgfSBmcm9tICcuL3JlZic7XG5pbXBvcnQgeyBOZ3RDb21wb25lbnRTdG9yZSwgdGFwRWZmZWN0IH0gZnJvbSAnLi9zdG9yZXMvY29tcG9uZW50LXN0b3JlJztcbmltcG9ydCB7IE5ndFN0b3JlIH0gZnJvbSAnLi9zdG9yZXMvc3RvcmUnO1xuaW1wb3J0IHR5cGUge1xuICAgIE5ndEFueUN0b3IsXG4gICAgTmd0QW55RnVuY3Rpb24sXG4gICAgTmd0QW55UmVjb3JkLFxuICAgIE5ndEF0dGFjaEZ1bmN0aW9uLFxuICAgIE5ndEJlZm9yZVJlbmRlckNhbGxiYWNrLFxuICAgIE5ndEV2ZW50SGFuZGxlcnMsXG4gICAgTmd0SW5zdGFuY2VMb2NhbFN0YXRlLFxuICAgIE5ndE9ic2VydmFibGVJbnB1dCxcbiAgICBOZ3RUaHJlZUV2ZW50LFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGFwcGx5UHJvcHMgfSBmcm9tICcuL3V0aWxzL2FwcGx5LXByb3BzJztcbmltcG9ydCB7IHJlbW92ZUludGVyYWN0aXZpdHkgfSBmcm9tICcuL3V0aWxzL2V2ZW50cyc7XG5pbXBvcnQgeyBnZXRJbnN0YW5jZUxvY2FsU3RhdGUgfSBmcm9tICcuL3V0aWxzL2dldC1pbnN0YW5jZS1sb2NhbC1zdGF0ZSc7XG5pbXBvcnQgeyBpbnZhbGlkYXRlSW5zdGFuY2UgfSBmcm9tICcuL3V0aWxzL2luc3RhbmNlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5pbXBvcnQgeyBtdXRhdGUgfSBmcm9tICcuL3V0aWxzL211dGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBOR1RfUFJPWFlfSU5TVEFOQ0UgPSBTeW1ib2wuZm9yKCdfX25ndF9fcHJveHlfX2luc3RhbmNlX18nKTtcblxuZXhwb3J0IGNvbnN0IE5HVF9JTlNUQU5DRV9SRUZfRkFDVE9SWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3RBbnlGdW5jdGlvbjxOZ3RSZWY+PignTmd0SW5zdGFuY2VbaW5zdGFuY2VSZWZdIGZhY3RvcnknKTtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSW5zdGFuY2VSZWY8XG4gICAgVEluc3RhbmNlVHlwZSBleHRlbmRzIG9iamVjdCA9IGFueSxcbiAgICBUQ3RvciBleHRlbmRzIE5ndEFueUN0b3I8VEluc3RhbmNlVHlwZT4gPSBOZ3RBbnlDdG9yPFRJbnN0YW5jZVR5cGU+XG4+KGN0b3I6IFRDdG9yLCBmYWN0b3J5PzogKGluc3RhbmNlOiBJbnN0YW5jZVR5cGU8VEN0b3I+KSA9PiBOZ3RSZWYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBOR1RfSU5TVEFOQ0VfUkVGX0ZBQ1RPUlksXG4gICAgICAgIHVzZUZhY3Rvcnk6IChpbnN0YW5jZTogSW5zdGFuY2VUeXBlPFRDdG9yPikgPT4ge1xuICAgICAgICAgICAgaWYgKGZhY3RvcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gZmFjdG9yeShpbnN0YW5jZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PlxuICAgICAgICAgICAgICAgIChpbnN0YW5jZSBhcyBOZ3RBbnlSZWNvcmQpWydpbnN0YW5jZVJlZiddIHx8IChpbnN0YW5jZSBhcyBOZ3RBbnlSZWNvcmQpWydpbnN0YW5jZSddWydpbnN0YW5jZVJlZiddO1xuICAgICAgICB9LFxuICAgICAgICBkZXBzOiBbY3Rvcl0sXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJbnN0YW5jZVJlZigpOiBOZ3RBbnlGdW5jdGlvbjxOZ3RSZWY+O1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEluc3RhbmNlUmVmKG9wdGlvbnM6IEluamVjdE9wdGlvbnMgJiB7IG9wdGlvbmFsPzogZmFsc2UgfSk6IE5ndEFueUZ1bmN0aW9uPE5ndFJlZj47XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SW5zdGFuY2VSZWYob3B0aW9uczogSW5qZWN0T3B0aW9ucyAmIHsgb3B0aW9uYWw/OiB0cnVlIH0pOiBOZ3RBbnlGdW5jdGlvbjxOZ3RSZWY+IHwgbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJbnN0YW5jZVJlZihvcHRpb25zOiBJbmplY3RPcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gaW5qZWN0KE5HVF9JTlNUQU5DRV9SRUZfRkFDVE9SWSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0SW5zdGFuY2VTdGF0ZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3QgPSBOZ3RBbnlSZWNvcmQ+IHtcbiAgICBpbnN0YW5jZVJlZjogTmd0UmVmPFRJbnN0YW5jZT47XG4gICAgaW5zdGFuY2VBcmdzOiB1bmtub3duW107XG4gICAgYXR0YWNoOiBzdHJpbmdbXSB8IE5ndEF0dGFjaEZ1bmN0aW9uO1xuICAgIG5vQXR0YWNoOiBib29sZWFuO1xuICAgIHNraXBXcmFwcGVyOiBib29sZWFuO1xuICAgIHNraXBJbml0OiBib29sZWFuO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEluc3RhbmNlPFQgZXh0ZW5kcyBvYmplY3Q+KCk6IE5ndEluc3RhbmNlPFQ+O1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEluc3RhbmNlPFQgZXh0ZW5kcyBvYmplY3Q+KG9wdGlvbnM6IEluamVjdE9wdGlvbnMgJiB7IG9wdGlvbmFsPzogZmFsc2UgfSk6IE5ndEluc3RhbmNlPFQ+O1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEluc3RhbmNlPFQgZXh0ZW5kcyBvYmplY3Q+KG9wdGlvbnM6IEluamVjdE9wdGlvbnMgJiB7IG9wdGlvbmFsPzogdHJ1ZSB9KTogTmd0SW5zdGFuY2U8VD4gfCBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEluc3RhbmNlKG9wdGlvbnM6IEluamVjdE9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBpbmplY3QoTmd0SW5zdGFuY2UsIG9wdGlvbnMpO1xufVxuXG5jb25zdCBzdXBwb3J0ZWRFdmVudHMgPSBbXG4gICAgJ2NsaWNrJyxcbiAgICAnY29udGV4dG1lbnUnLFxuICAgICdkYmxjbGljaycsXG4gICAgJ3BvaW50ZXJ1cCcsXG4gICAgJ3BvaW50ZXJkb3duJyxcbiAgICAncG9pbnRlcm92ZXInLFxuICAgICdwb2ludGVyb3V0JyxcbiAgICAncG9pbnRlcmVudGVyJyxcbiAgICAncG9pbnRlcmxlYXZlJyxcbiAgICAncG9pbnRlcm1vdmUnLFxuICAgICdwb2ludGVybWlzc2VkJyxcbiAgICAncG9pbnRlcmNhbmNlbCcsXG4gICAgJ3doZWVsJyxcbl0gYXMgY29uc3Q7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW25ndEluc3RhbmNlXScsXG4gICAgZXhwb3J0QXM6ICduZ3RJbnN0YW5jZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0SW5zdGFuY2U8XG4gICAgICAgIFRJbnN0YW5jZSBleHRlbmRzIG9iamVjdCA9IGFueSxcbiAgICAgICAgVEluc3RhbmNlU3RhdGUgZXh0ZW5kcyBOZ3RJbnN0YW5jZVN0YXRlPFRJbnN0YW5jZT4gPSBOZ3RJbnN0YW5jZVN0YXRlPFRJbnN0YW5jZT5cbiAgICA+XG4gICAgZXh0ZW5kcyBOZ3RDb21wb25lbnRTdG9yZTxUSW5zdGFuY2VTdGF0ZT5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gICAgQElucHV0KCkgc2V0IHJlZihpbnN0YW5jZTogVEluc3RhbmNlIHwgTmd0UmVmPFRJbnN0YW5jZT4pIHtcbiAgICAgICAgdGhpcy53cml0ZSh7IGluc3RhbmNlUmVmOiBpcy5yZWYoaW5zdGFuY2UpID8gaW5zdGFuY2UgOiBuZXcgTmd0UmVmKGluc3RhbmNlKSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2tpcFdyYXBwZXIoc2tpcFdyYXBwZXI6IE5ndE9ic2VydmFibGVJbnB1dDxib29sZWFuPikge1xuICAgICAgICB0aGlzLndyaXRlKHsgc2tpcFdyYXBwZXIgfSk7XG4gICAgICAgIHRoaXMud3JpdGUoeyBza2lwV3JhcHBlckV4cGxpY2l0OiB0cnVlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBza2lwSW5pdChza2lwSW5pdDogTmd0T2JzZXJ2YWJsZUlucHV0PGJvb2xlYW4+KSB7XG4gICAgICAgIHRoaXMud3JpdGUoeyBza2lwSW5pdCB9KTtcbiAgICAgICAgdGhpcy53cml0ZSh7IHNraXBJbml0RXhwbGljaXQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG5vQXR0YWNoKG5vQXR0YWNoOiBOZ3RPYnNlcnZhYmxlSW5wdXQ8Ym9vbGVhbj4pIHtcbiAgICAgICAgdGhpcy53cml0ZSh7IG5vQXR0YWNoIH0pO1xuICAgICAgICB0aGlzLndyaXRlKHsgbm9BdHRhY2hFeHBsaWNpdDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYXR0YWNoKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IFtzdHJpbmcsIC4uLihzdHJpbmcgfCBudW1iZXIpW11dIHwgTmd0QXR0YWNoRnVuY3Rpb24gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRhY2ggPVxuICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgPyB2YWx1ZS5tYXAoKGl0ZW0pID0+ICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBpdGVtLnRvU3RyaW5nKCkgOiBpdGVtKSlcbiAgICAgICAgICAgICAgICAgICAgOiBbdmFsdWVdO1xuXG4gICAgICAgICAgICB0aGlzLndyaXRlKHsgYXR0YWNoLCBhdHRhY2hFeHBsaWNpdDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIHByaW9yaXR5ID0gMDtcbiAgICBASW5wdXQoKSBiZWZvcmVSZW5kZXI/OiBOZ3RCZWZvcmVSZW5kZXJDYWxsYmFjazxUSW5zdGFuY2U+O1xuXG4gICAgQElucHV0KCkgcmVhZHlDYWxsYmFjaz86ICgoaW5zdGFuY2U6IFRJbnN0YW5jZSkgPT4gdm9pZCkgfCAoKCkgPT4gdm9pZCk7XG4gICAgQElucHV0KCkgdXBkYXRlQ2FsbGJhY2s/OiAoKGluc3RhbmNlOiBUSW5zdGFuY2UpID0+IHZvaWQpIHwgKCgpID0+IHZvaWQpO1xuXG4gICAgQE91dHB1dCgpIGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxOZ3RUaHJlZUV2ZW50PE1vdXNlRXZlbnQ+PigpO1xuICAgIEBPdXRwdXQoKSBjb250ZXh0bWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50Pj4oKTtcbiAgICBAT3V0cHV0KCkgZGJsY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4+KCk7XG4gICAgQE91dHB1dCgpIHBvaW50ZXJ1cCA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+PigpO1xuICAgIEBPdXRwdXQoKSBwb2ludGVyZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+PigpO1xuICAgIEBPdXRwdXQoKSBwb2ludGVyb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+PigpO1xuICAgIEBPdXRwdXQoKSBwb2ludGVyb3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4+KCk7XG4gICAgQE91dHB1dCgpIHBvaW50ZXJlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+PigpO1xuICAgIEBPdXRwdXQoKSBwb2ludGVybGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50Pj4oKTtcbiAgICBAT3V0cHV0KCkgcG9pbnRlcm1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50Pj4oKTtcbiAgICBAT3V0cHV0KCkgcG9pbnRlcm1pc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+PigpO1xuICAgIEBPdXRwdXQoKSBwb2ludGVyY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4+KCk7XG4gICAgQE91dHB1dCgpIHdoZWVsID0gbmV3IEV2ZW50RW1pdHRlcjxOZ3RUaHJlZUV2ZW50PFdoZWVsRXZlbnQ+PigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudFJlZiA9IGluamVjdEluc3RhbmNlUmVmKHsgc2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgX2lzUmF3ID0gZmFsc2U7XG5cbiAgICBzZXQgaXNSYXcodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzUmF3ID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzRW1pdHRlZEFscmVhZHkgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VSZWFkeSA9IHRoaXMuZWZmZWN0KFxuICAgICAgICB0YXBFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFdmVudHMoKTtcblxuICAgICAgICAgICAgbGV0IGF0dGFjaFRvUGFyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnRSZWYpIHtcbiAgICAgICAgICAgICAgICBhdHRhY2hUb1BhcmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuYXR0YWNoVG9QYXJlbnQodGhpcy5wYXJlbnQhLnBpcGUoZmlsdGVyKChwYXJlbnQpID0+ICEhcGFyZW50KSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbm9BdHRhY2gsIHNraXBXcmFwcGVyIH0gPSB0aGlzLnJlYWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5vQXR0YWNoICYmICFza2lwV3JhcHBlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRJbnN0YW5jZU5vZGUgPSBnZXRJbnN0YW5jZUxvY2FsU3RhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRJbnN0YW5jZUxvY2FsU3RhdGUodGhpcy5pbnN0YW5jZVZhbHVlKT8ucGFyZW50UmVmPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRJbnN0YW5jZU5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gaXMub2JqZWN0M2QodGhpcy5pbnN0YW5jZVZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyZW50SW5zdGFuY2VOb2RlLm9iamVjdHNSZWZzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYXJlbnRJbnN0YW5jZU5vZGUuaW5zdGFuY2VzUmVmcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25zLnNldCgocykgPT4gWy4uLnMsIHRoaXMuaW5zdGFuY2VSZWZdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGJlZm9yZVJlbmRlckNsZWFuVXA6ICgpID0+IHZvaWQ7XG4gICAgICAgICAgICBpZiAodGhpcy5iZWZvcmVSZW5kZXIgJiYgaXMub2JqZWN0M2QodGhpcy5pbnN0YW5jZVZhbHVlKSAmJiBpcy5vYmplY3QzZCh0aGlzLnByb3h5SW5zdGFuY2UpKSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlUmVuZGVyQ2xlYW5VcCA9IHRoaXMuc3RvcmVcbiAgICAgICAgICAgICAgICAgICAgLnJlYWQoKHMpID0+IHMuaW50ZXJuYWwpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUsIG9iamVjdCkgPT4gdGhpcy5iZWZvcmVSZW5kZXIhKHN0YXRlLCBvYmplY3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmlvcml0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucmVhZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJveHlJbnN0YW5jZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkeUNhbGxiYWNrKSB0aGlzLnJlYWR5Q2FsbGJhY2sodGhpcy5pbnN0YW5jZVZhbHVlKTtcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBiZWZvcmVSZW5kZXJDbGVhblVwPy4oKTtcbiAgICAgICAgICAgICAgICBhdHRhY2hUb1BhcmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHByaXZhdGUgaGFuZGxlRXZlbnRzID0gdGhpcy5lZmZlY3Q8dm9pZD4oXG4gICAgICAgIHRhcEVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZVZhbHVlICYmIGlzLm9iamVjdDNkKHRoaXMuaW5zdGFuY2VWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvYnNlcnZlZEV2ZW50cyA9IHN1cHBvcnRlZEV2ZW50cy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQsIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sbGVyRXZlbnQgPSB0aGlzW2V2ZW50XS5vYnNlcnZlZCA/IHRoaXNbZXZlbnRdIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sbGVyRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaGFuZGxlcnNbZXZlbnRdID0gdGhpcy5ldmVudE5hbWVUb0hhbmRsZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJFdmVudCBhcyBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxhbnk+PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmV2ZW50Q291bnQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaGFuZGxlcnM6IHt9LCBldmVudENvdW50OiAwIH0gYXMge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IE5ndEV2ZW50SGFuZGxlcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudENvdW50OiBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgLy8gcGF0Y2ggX19uZ3RfXyB3aXRoIGV2ZW50c1xuICAgICAgICAgICAgICAgIGFwcGx5UHJvcHModGhpcy5fX25ndF9fLCBvYnNlcnZlZEV2ZW50cyk7XG5cbiAgICAgICAgICAgICAgICAvLyBhZGQgYXMgYW4gaW50ZXJhY3Rpb24gaWYgdGhlcmUgYXJlIGV2ZW50cyBvYnNlcnZlZFxuICAgICAgICAgICAgICAgIGlmIChvYnNlcnZlZEV2ZW50cy5ldmVudENvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRJbnN0YW5jZUxvY2FsU3RhdGUodGhpcy5pbnN0YW5jZVZhbHVlKT8ucm9vdEZhY3RvcnkoKS5hZGRJbnRlcmFjdGlvbih0aGlzLmluc3RhbmNlVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzLm9iamVjdDNkKHRoaXMuaW5zdGFuY2VWYWx1ZSkgJiYgdGhpcy5fX25ndF9fLmV2ZW50Q291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldEluc3RhbmNlTG9jYWxTdGF0ZSh0aGlzLmluc3RhbmNlVmFsdWUpPy5yb290RmFjdG9yeSgpLnJlbW92ZUludGVyYWN0aW9uKHRoaXMuaW5zdGFuY2VWYWx1ZS51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGF0dGFjaFRvUGFyZW50ID0gdGhpcy5lZmZlY3QoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhdHRhY2ggPSB0aGlzLnJlYWQoKHMpID0+IHMuYXR0YWNoKTtcblxuICAgICAgICAgICAgbGV0IHBhcmVudEluc3RhbmNlUmVmID0gdGhpcy5fX25ndF9fPy5wYXJlbnRSZWY7XG5cbiAgICAgICAgICAgIC8vIGlmIG5vIHBhcmVudEluc3RhbmNlLCB0cnkgcmUtcnVuIHRoZSBmYWN0b3J5IGR1ZSB0byBsYXRlIGluaXRcbiAgICAgICAgICAgIGlmICghcGFyZW50SW5zdGFuY2VSZWYgfHwgIXBhcmVudEluc3RhbmNlUmVmLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIGVhcmx5IGlmIGZhaWxlZCB0byByZXRyaWV2ZVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYXJlbnQ/LnZhbHVlKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAvLyByZWFzc2lnbiBvbiBpbnN0YW5jZSBpbnRlcm5hbCBzdGF0ZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fbmd0X18pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fX25ndF9fLnBhcmVudFJlZiA9IHRoaXMucGFyZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXJlbnRJbnN0YW5jZVJlZiA9IHRoaXMucGFyZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGF0dGFjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dGFjaENsZWFuVXAgPSBhdHRhY2gocGFyZW50SW5zdGFuY2VSZWYsIHRoaXMuaW5zdGFuY2VSZWYsIHRoaXMuc3RvcmUucmVhZCk7XG4gICAgICAgICAgICAgICAgaWYgKGF0dGFjaENsZWFuVXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fX25ndF9fLmF0dGFjaCA9IGF0dGFjaENsZWFuVXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVRvQXR0YWNoID0gWy4uLmF0dGFjaF07XG5cbiAgICAgICAgICAgICAgICAvLyBpZiBwcm9wZXJ0eVRvQXR0YWNoIGlzIGVtcHR5XG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5VG9BdHRhY2gubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgbWlnaHQgYmUgdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIGF0dGFjaGluZyBhbiBvYmplY3QzRCB0byB0aGUgcGFyZW50IG9iamVjdDNEXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm9iamVjdDNkKHRoaXMuaW5zdGFuY2VWYWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm9iamVjdDNkKHRoaXMucHJveHlJbnN0YW5jZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm9iamVjdDNkKHRoaXMucGFyZW50Py52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudD8udmFsdWUuYWRkKHRoaXMucHJveHlJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBhcnJheSBtYXRlcmlhbCBoYW5kbGluZ1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVRvQXR0YWNoWzBdID09PSAnbWF0ZXJpYWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVRvQXR0YWNoWzFdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgTnVtYmVyKHByb3BlcnR5VG9BdHRhY2hbMV0pID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaXMubWF0ZXJpYWwodGhpcy5pbnN0YW5jZVZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXJlbnRJbnN0YW5jZVJlZi52YWx1ZS5tYXRlcmlhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJbnN0YW5jZVJlZi52YWx1ZS5tYXRlcmlhbCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb24gdGhlIHBhcmVudEluc3RhbmNlLCBzbyB3ZSBjYW4gcmVzZXQgaXQgbGF0ZXJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX19uZ3RfXykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fX25ndF9fLmF0dGFjaFZhbHVlID0gcHJvcGVydHlUb0F0dGFjaC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlLCBwcm9wZXJ0eSkgPT4gdmFsdWVbcHJvcGVydHldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEluc3RhbmNlUmVmLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gYXR0YWNoIHRoZSBpbnN0YW5jZSB2YWx1ZSBvbiB0aGUgcGFyZW50XG4gICAgICAgICAgICAgICAgICAgIG11dGF0ZShwYXJlbnRJbnN0YW5jZVJlZi52YWx1ZSwgdGhpcy5wcm94eUluc3RhbmNlLCBwcm9wZXJ0eVRvQXR0YWNoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0ZSBvbiB0aGUgaW5zdGFuY2VcbiAgICAgICAgICAgICAgICBpbnZhbGlkYXRlSW5zdGFuY2UodGhpcy5pbnN0YW5jZVZhbHVlKTtcblxuICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRlIG9uIHRoZSBwYXJlbnRcbiAgICAgICAgICAgICAgICBpZiAoZ2V0SW5zdGFuY2VMb2NhbFN0YXRlKHBhcmVudEluc3RhbmNlUmVmLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlSW5zdGFuY2UocGFyZW50SW5zdGFuY2VSZWYudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIHNhdmUgdGhlIGF0dGFjaFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fbmd0X18pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fX25ndF9fLmF0dGFjaCA9IHByb3BlcnR5VG9BdHRhY2g7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGUoeyBhdHRhY2g6IHByb3BlcnR5VG9BdHRhY2ggfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy53cml0ZSh7XG4gICAgICAgICAgICBpbnN0YW5jZVJlZjogbmV3IE5ndFJlZihudWxsKSxcbiAgICAgICAgICAgIGF0dGFjaDogW10sXG4gICAgICAgICAgICBub0F0dGFjaDogZmFsc2UsXG4gICAgICAgICAgICBza2lwV3JhcHBlcjogZmFsc2UsXG4gICAgICAgICAgICBza2lwSW5pdDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5vblJlYWR5KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlUmVhZHkodGhpcy5pbnN0YW5jZVJlZi5waXBlKGZpbHRlcigoaW5zdGFuY2UpID0+ICEhaW5zdGFuY2UpKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGluc3RhbmNlUmVmKCk6IE5ndFJlZjxUSW5zdGFuY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZCgocykgPT4gcy5pbnN0YW5jZVJlZik7XG4gICAgfVxuXG4gICAgZ2V0IGluc3RhbmNlVmFsdWUoKTogVEluc3RhbmNlIHtcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbmNlUmVmLnZhbHVlKSByZXR1cm4gdGhpcy5pbnN0YW5jZVJlZi52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmF3ID8gKHRoaXMuaW5zdGFuY2VSZWYudmFsdWU/LnZhbHVlT2YoKSBhcyBUSW5zdGFuY2UpIDogdGhpcy5pbnN0YW5jZVJlZi52YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgcHJveHlJbnN0YW5jZSgpOiBUSW5zdGFuY2Uge1xuICAgICAgICByZXR1cm4gKHRoaXMuaW5zdGFuY2VWYWx1ZSBhcyBhbnkpPy5bTkdUX1BST1hZX0lOU1RBTkNFXTtcbiAgICB9XG5cbiAgICBnZXQgX19uZ3RfXygpOiBOZ3RJbnN0YW5jZUxvY2FsU3RhdGUge1xuICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2VMb2NhbFN0YXRlKFxuICAgICAgICAgICAgdGhpcy5faXNSYXcgPyB0aGlzLmluc3RhbmNlUmVmLnZhbHVlIDogdGhpcy5pbnN0YW5jZVZhbHVlXG4gICAgICAgICkgYXMgTmd0SW5zdGFuY2VMb2NhbFN0YXRlO1xuICAgIH1cblxuICAgIGdldCBwYXJlbnQoKTogTmd0UmVmIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50UmVmPy4oKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlVmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChpcy5vYmplY3QzZCh0aGlzLmluc3RhbmNlVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50SW5zdGFuY2UgPSB0aGlzLnBhcmVudDtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50SW5zdGFuY2UgJiYgaXMub2JqZWN0M2QocGFyZW50SW5zdGFuY2UudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUludGVyYWN0aXZpdHkodGhpcy5fX25ndF9fLnN0YXRlRmFjdG9yeS5iaW5kKHRoaXMuX19uZ3RfXyksIHRoaXMuaW5zdGFuY2VWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudEluc3RhbmNlLnZhbHVlLnJlbW92ZSh0aGlzLmluc3RhbmNlVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlSW5zdGFuY2UocGFyZW50SW5zdGFuY2UudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluc3RhbmNlVmFsdWUuY2xlYXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlVmFsdWUuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9fbmd0X18pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm9uLXNjZW5lIG9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNBdHRhY2ggPSB0aGlzLl9fbmd0X18uYXR0YWNoO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNBdHRhY2ggIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcmV2aW91c0F0dGFjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzQXR0YWNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQXR0YWNoVmFsdWUgPSB0aGlzLl9fbmd0X18uYXR0YWNoVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX19uZ3RfXy5wYXJlbnRSZWYgJiYgdGhpcy5fX25ndF9fLnBhcmVudFJlZi52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGUodGhpcy5fX25ndF9fLnBhcmVudFJlZi52YWx1ZSwgcHJldmlvdXNBdHRhY2hWYWx1ZSwgcHJldmlvdXNBdHRhY2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX19uZ3RfXy5wYXJlbnRSZWYgJiYgdGhpcy5fX25ndF9fLnBhcmVudFJlZi52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRhdGVJbnN0YW5jZSh0aGlzLl9fbmd0X18ucGFyZW50UmVmLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGlzcG9zZSA9ICh0aGlzLmluc3RhbmNlVmFsdWUgYXMgTmd0QW55UmVjb3JkKVsnZGlzcG9zZSddO1xuICAgICAgICAgICAgaWYgKGRpc3Bvc2UgJiYgdHlwZW9mIGRpc3Bvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBkaXNwb3NlLmFwcGx5KHRoaXMuaW5zdGFuY2VWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLndyaXRlKHsgYXR0YWNoOiBbXSB9KTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZVJlZi5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXZlbnROYW1lVG9IYW5kbGVyKFxuICAgICAgICBjb250cm9sbGVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4+IHwgRXZlbnRFbWl0dGVyPE5ndFRocmVlRXZlbnQ8V2hlZWxFdmVudD4+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiAoZXZlbnQ6IFBhcmFtZXRlcnM8RXhjbHVkZTxOZ3RFdmVudEhhbmRsZXJzW3R5cGVvZiBzdXBwb3J0ZWRFdmVudHNbbnVtYmVyXV0sIHVuZGVmaW5lZD4+WzBdKSA9PiB7XG4gICAgICAgICAgICAvLyBnbyBiYWNrIGludG8gQW5ndWxhciBab25lIHNvIHRoYXQgc3RhdGUgdXBkYXRlcyBvbiB0aGVzZSBldmVudHMgdHJpZ2dlciBDRFxuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlckV2ZW50LmVtaXQoZXZlbnQgYXMgTmd0VGhyZWVFdmVudDxhbnk+KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IE5HVF9JTlNUQU5DRV9JTlBVVFMgPSBbXG4gICAgJ3JlZicsXG4gICAgJ2F0dGFjaCcsXG4gICAgJ3NraXBXcmFwcGVyJyxcbiAgICAnc2tpcEluaXQnLFxuICAgICdub0F0dGFjaCcsXG4gICAgJ2JlZm9yZVJlbmRlcicsXG4gICAgJ3ByaW9yaXR5JyxcbiAgICAndXBkYXRlQ2FsbGJhY2snLFxuICAgICdyZWFkeUNhbGxiYWNrJyxcbl07XG5cbmV4cG9ydCBjb25zdCBOR1RfSU5TVEFOQ0VfT1VUUFVUUyA9IFsuLi5zdXBwb3J0ZWRFdmVudHNdO1xuIl19
@@ -1,15 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class NgtMathPipe {
4
- transform(value, keyOfMath) {
5
- const params = Array.isArray(value) ? value : [value];
6
- return Math[keyOfMath](...params);
7
- }
8
- }
9
- NgtMathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtMathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- NgtMathPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0", ngImport: i0, type: NgtMathPipe, isStandalone: true, name: "math" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtMathPipe, decorators: [{
12
- type: Pipe,
13
- args: [{ name: 'math', standalone: true }]
14
- }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9waXBlcy9tYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUdwRCxNQUFNLE9BQU8sV0FBVztJQUNwQixTQUFTLENBQ0wsS0FBd0IsRUFDeEIsU0FBOEc7UUFFOUcsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE9BQVEsSUFBSSxDQUFDLFNBQVMsQ0FBOEMsQ0FBQyxHQUFHLE1BQU0sQ0FFN0UsQ0FBQztJQUNOLENBQUM7O3dHQVRRLFdBQVc7c0dBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7IG5hbWU6ICdtYXRoJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndE1hdGhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKFxuICAgICAgICB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10sXG4gICAgICAgIGtleU9mTWF0aDoga2V5b2YgT21pdDxNYXRoLCAnUEknIHwgJ0UnIHwgJ0xOMicgfCAnTE9HMkUnIHwgJ0xOMTAnIHwgJ0xPRzEwRScgfCAnU1FSVDFfMicgfCAnU1FSVDInIHwgJ3JhbmRvbSc+XG4gICAgKTogUmV0dXJuVHlwZTxFeHRyYWN0PE1hdGhbdHlwZW9mIGtleU9mTWF0aF0sICdzdHJpbmcnPj4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICAgICAgcmV0dXJuIChNYXRoW2tleU9mTWF0aF0gYXMgdW5rbm93biBhcyAoLi4uYXJnczogbnVtYmVyW10pID0+IG51bWJlcikoLi4ucGFyYW1zKSBhcyBSZXR1cm5UeXBlPFxuICAgICAgICAgICAgRXh0cmFjdDxNYXRoW3R5cGVvZiBrZXlPZk1hdGhdLCAnc3RyaW5nJz5cbiAgICAgICAgPjtcbiAgICB9XG59XG4iXX0=
@@ -1,14 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class NgtPiPipe {
4
- transform(value) {
5
- return value * Math.PI;
6
- }
7
- }
8
- NgtPiPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtPiPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
9
- NgtPiPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0", ngImport: i0, type: NgtPiPipe, isStandalone: true, name: "pi" });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtPiPipe, decorators: [{
11
- type: Pipe,
12
- args: [{ name: 'pi', standalone: true }]
13
- }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRocmVlL3NyYy9saWIvcGlwZXMvcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBR3BELE1BQU0sT0FBTyxTQUFTO0lBQ2xCLFNBQVMsQ0FBQyxLQUFhO1FBQ25CLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7c0dBSFEsU0FBUztvR0FBVCxTQUFTOzJGQUFULFNBQVM7a0JBRHJCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHsgbmFtZTogJ3BpJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndFBpUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICogTWF0aC5QSTtcbiAgICB9XG59XG4iXX0=
@@ -1,14 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class NgtRadianPipe {
4
- transform(degree) {
5
- return (degree * Math.PI) / 180;
6
- }
7
- }
8
- NgtRadianPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtRadianPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
9
- NgtRadianPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0", ngImport: i0, type: NgtRadianPipe, isStandalone: true, name: "radian" });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtRadianPipe, decorators: [{
11
- type: Pipe,
12
- args: [{ name: 'radian', standalone: true }]
13
- }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaWFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci10aHJlZS9zcmMvbGliL3BpcGVzL3JhZGlhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFHcEQsTUFBTSxPQUFPLGFBQWE7SUFDdEIsU0FBUyxDQUFDLE1BQWM7UUFDcEIsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3BDLENBQUM7OzBHQUhRLGFBQWE7d0dBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUR6QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7IG5hbWU6ICdyYWRpYW4nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0UmFkaWFuUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkZWdyZWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoZGVncmVlICogTWF0aC5QSSkgLyAxODA7XG4gICAgfVxufVxuIl19
@@ -1,22 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as THREE from 'three';
3
- import * as i0 from "@angular/core";
4
- export class NgtSidePipe {
5
- transform(side) {
6
- switch (side) {
7
- case 'front':
8
- return THREE.FrontSide;
9
- case 'back':
10
- return THREE.BackSide;
11
- case 'double':
12
- return THREE.DoubleSide;
13
- }
14
- }
15
- }
16
- NgtSidePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtSidePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
17
- NgtSidePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0", ngImport: i0, type: NgtSidePipe, isStandalone: true, name: "side" });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtSidePipe, decorators: [{
19
- type: Pipe,
20
- args: [{ name: 'side', standalone: true }]
21
- }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9waXBlcy9zaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQUcvQixNQUFNLE9BQU8sV0FBVztJQUNwQixTQUFTLENBQUMsSUFBaUM7UUFDdkMsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzNCLEtBQUssTUFBTTtnQkFDUCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDMUIsS0FBSyxRQUFRO2dCQUNULE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQztTQUMvQjtJQUNMLENBQUM7O3dHQVZRLFdBQVc7c0dBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5AUGlwZSh7IG5hbWU6ICdzaWRlJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndFNpZGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHNpZGU6ICdmcm9udCcgfCAnYmFjaycgfCAnZG91YmxlJyk6IFRIUkVFLlNpZGUge1xuICAgICAgICBzd2l0Y2ggKHNpZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Zyb250JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gVEhSRUUuRnJvbnRTaWRlO1xuICAgICAgICAgICAgY2FzZSAnYmFjayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRIUkVFLkJhY2tTaWRlO1xuICAgICAgICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gVEhSRUUuRG91YmxlU2lkZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { BehaviorSubject } from 'rxjs';
2
- export class NgtRef extends BehaviorSubject {
3
- constructor(value) {
4
- super(value ? value : null);
5
- }
6
- set(valueOrFactory) {
7
- if (typeof valueOrFactory === 'function') {
8
- this.next(valueOrFactory(this.value));
9
- }
10
- else {
11
- this.next(valueOrFactory);
12
- }
13
- }
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci10aHJlZS9zcmMvbGliL3JlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE1BQU0sT0FBTyxNQUFnQixTQUFRLGVBQWtCO0lBQ25ELFlBQVksS0FBZ0I7UUFDeEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUFDLGNBQXdDO1FBQ3hDLElBQUksT0FBTyxjQUFjLEtBQUssVUFBVSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUUsY0FBcUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNqRTthQUFNO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM3QjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgTmd0UmVmPFQgPSBhbnk+IGV4dGVuZHMgQmVoYXZpb3JTdWJqZWN0PFQ+IHtcbiAgICBjb25zdHJ1Y3Rvcih2YWx1ZT86IFQgfCBudWxsKSB7XG4gICAgICAgIHN1cGVyKHZhbHVlID8gdmFsdWUgOiBudWxsISk7XG4gICAgfVxuXG4gICAgc2V0KHZhbHVlT3JGYWN0b3J5OiBUIHwgKChwcmV2aW91czogVCkgPT4gVCkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZU9yRmFjdG9yeSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5uZXh0KCh2YWx1ZU9yRmFjdG9yeSBhcyAocHJldmlvdXM6IFQpID0+IFQpKHRoaXMudmFsdWUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmV4dCh2YWx1ZU9yRmFjdG9yeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,45 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { catchError, forkJoin, from, map, of, ReplaySubject, retry, share, tap } from 'rxjs';
3
- import { buildGraph } from '../utils/build-graph';
4
- import * as i0 from "@angular/core";
5
- export class NgtLoader {
6
- constructor() {
7
- this.cached = new Map();
8
- }
9
- use(loadConstructor, input, extensions, onProgress) {
10
- const urls = Array.isArray(input) ? input : [input];
11
- const loader = new loadConstructor();
12
- if (extensions) {
13
- extensions(loader);
14
- }
15
- const observables$ = urls.map((url) => {
16
- if (!this.cached.has(url)) {
17
- this.cached.set(url, from(loader.loadAsync(url, onProgress)).pipe(tap((data) => {
18
- if (data.scene) {
19
- Object.assign(data, buildGraph(data.scene));
20
- }
21
- }), retry(2), catchError((err) => {
22
- console.error(`[NgtLoader]: Error loading ${url}: ${err.message}`);
23
- return of(null);
24
- }), share({
25
- connector: () => new ReplaySubject(1),
26
- resetOnComplete: true,
27
- resetOnRefCountZero: true,
28
- resetOnError: true,
29
- })));
30
- }
31
- return this.cached.get(url);
32
- });
33
- return forkJoin(observables$).pipe(map((results) => (Array.isArray(input) ? results : results[0])));
34
- }
35
- destroy() {
36
- this.cached.clear();
37
- }
38
- }
39
- NgtLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
- NgtLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtLoader, providedIn: 'root' });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtLoader, decorators: [{
42
- type: Injectable,
43
- args: [{ providedIn: 'root' }]
44
- }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci10aHJlZS9zcmMvbGliL3NlcnZpY2VzL2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVN6RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBR2xELE1BQU0sT0FBTyxTQUFTO0lBRHRCO1FBRXFCLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0tBa0R2QztJQWhERyxHQUFHLENBQ0MsZUFBZ0UsRUFDaEUsS0FBVyxFQUNYLFVBQWdDLEVBQ2hDLFVBQTJDO1FBSTNDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksVUFBVSxFQUFFO1lBQ1osVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3RCO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ1gsR0FBRyxFQUNILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDeEMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO3dCQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztxQkFDL0M7Z0JBQ0wsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEdBQUcsS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztvQkFDbkUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQyxFQUNGLEtBQUssQ0FBQztvQkFDRixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxlQUFlLEVBQUUsSUFBSTtvQkFDckIsbUJBQW1CLEVBQUUsSUFBSTtvQkFDekIsWUFBWSxFQUFFLElBQUk7aUJBQ3JCLENBQUMsQ0FDTCxDQUNKLENBQUM7YUFDTDtZQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDOztzR0FsRFEsU0FBUzswR0FBVCxTQUFTLGNBREksTUFBTTsyRkFDbkIsU0FBUztrQkFEckIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmb3JrSm9pbiwgZnJvbSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCwgcmV0cnksIHNoYXJlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdMVEYgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vbG9hZGVycy9HTFRGTG9hZGVyJztcbmltcG9ydCB0eXBlIHtcbiAgICBOZ3RBbnlDb25zdHJ1Y3RvcixcbiAgICBOZ3RCcmFuY2hpbmdSZXR1cm4sXG4gICAgTmd0TG9hZGVyRXh0ZW5zaW9ucyxcbiAgICBOZ3RMb2FkZXJSZXN1bHQsXG4gICAgTmd0T2JqZWN0TWFwLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBidWlsZEdyYXBoIH0gZnJvbSAnLi4vdXRpbHMvYnVpbGQtZ3JhcGgnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5ndExvYWRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWNoZWQgPSBuZXcgTWFwKCk7XG5cbiAgICB1c2U8VFJldHVyblR5cGUsIFRVcmwgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXT4oXG4gICAgICAgIGxvYWRDb25zdHJ1Y3RvcjogTmd0QW55Q29uc3RydWN0b3I8Tmd0TG9hZGVyUmVzdWx0PFRSZXR1cm5UeXBlPj4sXG4gICAgICAgIGlucHV0OiBUVXJsLFxuICAgICAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9ucyxcbiAgICAgICAgb25Qcm9ncmVzcz86IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4gdm9pZFxuICAgICk6IFRVcmwgZXh0ZW5kcyBzdHJpbmdbXVxuICAgICAgICA/IE9ic2VydmFibGU8QXJyYXk8Tmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm5UeXBlLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPj4+XG4gICAgICAgIDogT2JzZXJ2YWJsZTxOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVyblR5cGUsIEdMVEYsIEdMVEYgJiBOZ3RPYmplY3RNYXA+PiB7XG4gICAgICAgIGNvbnN0IHVybHMgPSBBcnJheS5pc0FycmF5KGlucHV0KSA/IGlucHV0IDogW2lucHV0XTtcbiAgICAgICAgY29uc3QgbG9hZGVyID0gbmV3IGxvYWRDb25zdHJ1Y3RvcigpO1xuICAgICAgICBpZiAoZXh0ZW5zaW9ucykge1xuICAgICAgICAgICAgZXh0ZW5zaW9ucyhsb2FkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMkID0gdXJscy5tYXAoKHVybCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNhY2hlZC5oYXModXJsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVkLnNldChcbiAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICBmcm9tKGxvYWRlci5sb2FkQXN5bmModXJsLCBvblByb2dyZXNzKSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnNjZW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZGF0YSwgYnVpbGRHcmFwaChkYXRhLnNjZW5lKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXRyeSgyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtOZ3RMb2FkZXJdOiBFcnJvciBsb2FkaW5nICR7dXJsfTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3I6ICgpID0+IG5ldyBSZXBsYXlTdWJqZWN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0T25Db21wbGV0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldE9uUmVmQ291bnRaZXJvOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0T25FcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZWQuZ2V0KHVybCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihvYnNlcnZhYmxlcyQpLnBpcGUobWFwKChyZXN1bHRzKSA9PiAoQXJyYXkuaXNBcnJheShpbnB1dCkgPyByZXN1bHRzIDogcmVzdWx0c1swXSkpKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNhY2hlZC5jbGVhcigpO1xuICAgIH1cbn1cbiJdfQ==