angular-three 0.0.2 → 0.0.3

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 (388) hide show
  1. package/attributes/README.md +3 -0
  2. package/attributes/index.d.ts +22 -0
  3. package/attributes/lib/buffer-attribute/buffer-attribute.d.ts +8 -0
  4. package/attributes/lib/color-attribute/color-attribute.d.ts +8 -0
  5. package/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.d.ts +8 -0
  6. package/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.d.ts +8 -0
  7. package/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.d.ts +8 -0
  8. package/attributes/lib/fog-attribute/fog-attribute.d.ts +8 -0
  9. package/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.d.ts +8 -0
  10. package/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.d.ts +8 -0
  11. package/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.d.ts +8 -0
  12. package/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.d.ts +8 -0
  13. package/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.d.ts +8 -0
  14. package/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.d.ts +8 -0
  15. package/attributes/lib/matrix3-attribute/matrix3-attribute.d.ts +8 -0
  16. package/attributes/lib/matrix4-attribute/matrix4-attribute.d.ts +8 -0
  17. package/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.d.ts +8 -0
  18. package/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.d.ts +8 -0
  19. package/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.d.ts +8 -0
  20. package/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.d.ts +8 -0
  21. package/attributes/lib/value-attribute/value-attribute.d.ts +8 -0
  22. package/attributes/lib/vector2-attribute/vector2-attribute.d.ts +8 -0
  23. package/attributes/lib/vector3-attribute/vector3-attribute.d.ts +8 -0
  24. package/attributes/lib/vector4-attribute/vector4-attribute.d.ts +8 -0
  25. package/audios/README.md +3 -0
  26. package/audios/index.d.ts +3 -0
  27. package/audios/lib/audio/audio.d.ts +49 -0
  28. package/audios/lib/audio-listener/audio-listener.d.ts +35 -0
  29. package/audios/lib/positional-audio/positional-audio.d.ts +49 -0
  30. package/cameras/README.md +3 -0
  31. package/cameras/index.d.ts +5 -0
  32. package/cameras/lib/array-camera/array-camera.d.ts +56 -0
  33. package/cameras/lib/cube-camera/cube-camera.d.ts +36 -0
  34. package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +54 -0
  35. package/cameras/lib/perspective-camera/perspective-camera.d.ts +55 -0
  36. package/cameras/lib/stereo-camera/stereo-camera.d.ts +42 -0
  37. package/esm2020/attributes/angular-three-attributes.mjs +5 -0
  38. package/esm2020/attributes/index.mjs +24 -0
  39. package/esm2020/attributes/lib/buffer-attribute/buffer-attribute.mjs +25 -0
  40. package/esm2020/attributes/lib/color-attribute/color-attribute.mjs +25 -0
  41. package/esm2020/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.mjs +25 -0
  42. package/esm2020/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.mjs +25 -0
  43. package/esm2020/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.mjs +25 -0
  44. package/esm2020/attributes/lib/fog-attribute/fog-attribute.mjs +25 -0
  45. package/esm2020/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.mjs +25 -0
  46. package/esm2020/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.mjs +25 -0
  47. package/esm2020/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.mjs +25 -0
  48. package/esm2020/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.mjs +25 -0
  49. package/esm2020/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.mjs +25 -0
  50. package/esm2020/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.mjs +29 -0
  51. package/esm2020/attributes/lib/matrix3-attribute/matrix3-attribute.mjs +25 -0
  52. package/esm2020/attributes/lib/matrix4-attribute/matrix4-attribute.mjs +25 -0
  53. package/esm2020/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.mjs +25 -0
  54. package/esm2020/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.mjs +25 -0
  55. package/esm2020/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.mjs +25 -0
  56. package/esm2020/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.mjs +25 -0
  57. package/esm2020/attributes/lib/value-attribute/value-attribute.mjs +27 -0
  58. package/esm2020/attributes/lib/vector2-attribute/vector2-attribute.mjs +25 -0
  59. package/esm2020/attributes/lib/vector3-attribute/vector3-attribute.mjs +25 -0
  60. package/esm2020/attributes/lib/vector4-attribute/vector4-attribute.mjs +25 -0
  61. package/esm2020/audios/angular-three-audios.mjs +5 -0
  62. package/esm2020/audios/index.mjs +5 -0
  63. package/esm2020/audios/lib/audio/audio.mjs +68 -0
  64. package/esm2020/audios/lib/audio-listener/audio-listener.mjs +65 -0
  65. package/esm2020/audios/lib/positional-audio/positional-audio.mjs +68 -0
  66. package/esm2020/cameras/angular-three-cameras.mjs +5 -0
  67. package/esm2020/cameras/index.mjs +7 -0
  68. package/esm2020/cameras/lib/array-camera/array-camera.mjs +67 -0
  69. package/esm2020/cameras/lib/cube-camera/cube-camera.mjs +55 -0
  70. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +65 -0
  71. package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +66 -0
  72. package/esm2020/cameras/lib/stereo-camera/stereo-camera.mjs +61 -0
  73. package/esm2020/geometries/angular-three-geometries.mjs +5 -0
  74. package/esm2020/geometries/index.mjs +25 -0
  75. package/esm2020/geometries/lib/box-geometry/box-geometry.mjs +25 -0
  76. package/esm2020/geometries/lib/buffer-geometry/buffer-geometry.mjs +25 -0
  77. package/esm2020/geometries/lib/capsule-geometry/capsule-geometry.mjs +25 -0
  78. package/esm2020/geometries/lib/circle-geometry/circle-geometry.mjs +25 -0
  79. package/esm2020/geometries/lib/cone-geometry/cone-geometry.mjs +25 -0
  80. package/esm2020/geometries/lib/cylinder-geometry/cylinder-geometry.mjs +25 -0
  81. package/esm2020/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.mjs +25 -0
  82. package/esm2020/geometries/lib/edges-geometry/edges-geometry.mjs +25 -0
  83. package/esm2020/geometries/lib/extrude-geometry/extrude-geometry.mjs +25 -0
  84. package/esm2020/geometries/lib/icosahedron-geometry/icosahedron-geometry.mjs +25 -0
  85. package/esm2020/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.mjs +25 -0
  86. package/esm2020/geometries/lib/lathe-geometry/lathe-geometry.mjs +25 -0
  87. package/esm2020/geometries/lib/octahedron-geometry/octahedron-geometry.mjs +25 -0
  88. package/esm2020/geometries/lib/plane-geometry/plane-geometry.mjs +25 -0
  89. package/esm2020/geometries/lib/polyhedron-geometry/polyhedron-geometry.mjs +25 -0
  90. package/esm2020/geometries/lib/ring-geometry/ring-geometry.mjs +25 -0
  91. package/esm2020/geometries/lib/shape-geometry/shape-geometry.mjs +25 -0
  92. package/esm2020/geometries/lib/sphere-geometry/sphere-geometry.mjs +25 -0
  93. package/esm2020/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.mjs +25 -0
  94. package/esm2020/geometries/lib/torus-geometry/torus-geometry.mjs +25 -0
  95. package/esm2020/geometries/lib/torus-knot-geometry/torus-knot-geometry.mjs +25 -0
  96. package/esm2020/geometries/lib/tube-geometry/tube-geometry.mjs +25 -0
  97. package/esm2020/geometries/lib/wireframe-geometry/wireframe-geometry.mjs +25 -0
  98. package/esm2020/helpers/angular-three-helpers.mjs +5 -0
  99. package/esm2020/helpers/index.mjs +15 -0
  100. package/esm2020/helpers/lib/arrow-helper/arrow-helper.mjs +25 -0
  101. package/esm2020/helpers/lib/axes-helper/axes-helper.mjs +25 -0
  102. package/esm2020/helpers/lib/box-helper/box-helper.mjs +35 -0
  103. package/esm2020/helpers/lib/box3-helper/box3-helper.mjs +35 -0
  104. package/esm2020/helpers/lib/camera-helper/camera-helper.mjs +35 -0
  105. package/esm2020/helpers/lib/directional-light-helper/directional-light-helper.mjs +35 -0
  106. package/esm2020/helpers/lib/grid-helper/grid-helper.mjs +25 -0
  107. package/esm2020/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.mjs +35 -0
  108. package/esm2020/helpers/lib/plane-helper/plane-helper.mjs +35 -0
  109. package/esm2020/helpers/lib/point-light-helper/point-light-helper.mjs +35 -0
  110. package/esm2020/helpers/lib/polar-grid-helper/polar-grid-helper.mjs +25 -0
  111. package/esm2020/helpers/lib/skeleton-helper/skeleton-helper.mjs +35 -0
  112. package/esm2020/helpers/lib/spot-light-helper/spot-light-helper.mjs +35 -0
  113. package/esm2020/index.mjs +12 -2
  114. package/esm2020/lib/canvas.mjs +227 -0
  115. package/esm2020/lib/di/resize.mjs +19 -0
  116. package/esm2020/lib/di/window.mjs +13 -0
  117. package/esm2020/lib/directives/args.mjs +30 -0
  118. package/esm2020/lib/events.mjs +53 -0
  119. package/esm2020/lib/instance.mjs +358 -0
  120. package/esm2020/lib/ref.mjs +15 -0
  121. package/esm2020/lib/services/loader.mjs +45 -0
  122. package/esm2020/lib/services/resize.mjs +127 -0
  123. package/esm2020/lib/stores/component-store.mjs +137 -0
  124. package/esm2020/lib/stores/store.mjs +433 -0
  125. package/esm2020/lib/types.mjs +2 -0
  126. package/esm2020/lib/utils/apply-props.mjs +135 -0
  127. package/esm2020/lib/utils/build-graph.mjs +15 -0
  128. package/esm2020/lib/utils/camera.mjs +28 -0
  129. package/esm2020/lib/utils/capitalize.mjs +4 -0
  130. package/esm2020/lib/utils/check-update.mjs +22 -0
  131. package/esm2020/lib/utils/events.mjs +353 -0
  132. package/esm2020/lib/utils/get-instance-local-state.mjs +6 -0
  133. package/esm2020/lib/utils/inject.mjs +18 -0
  134. package/esm2020/lib/utils/instance.mjs +35 -0
  135. package/esm2020/lib/utils/is.mjs +54 -0
  136. package/esm2020/lib/utils/loop.mjs +139 -0
  137. package/esm2020/lib/utils/make.mjs +30 -0
  138. package/esm2020/lib/utils/mutate.mjs +24 -0
  139. package/esm2020/lib/utils/proxy.mjs +99 -0
  140. package/esm2020/lib/utils/renderer.mjs +15 -0
  141. package/esm2020/lights/angular-three-lights.mjs +5 -0
  142. package/esm2020/lights/index.mjs +11 -0
  143. package/esm2020/lights/lib/ambient-light/ambient-light.mjs +68 -0
  144. package/esm2020/lights/lib/ambient-light-probe/ambient-light-probe.mjs +69 -0
  145. package/esm2020/lights/lib/directional-light/directional-light.mjs +69 -0
  146. package/esm2020/lights/lib/hemisphere-light/hemisphere-light.mjs +70 -0
  147. package/esm2020/lights/lib/hemisphere-light-probe/hemisphere-light-probe.mjs +71 -0
  148. package/esm2020/lights/lib/light-probe/light-probe.mjs +69 -0
  149. package/esm2020/lights/lib/point-light/point-light.mjs +71 -0
  150. package/esm2020/lights/lib/rect-area-light/rect-area-light.mjs +71 -0
  151. package/esm2020/lights/lib/spot-light/spot-light.mjs +74 -0
  152. package/esm2020/materials/angular-three-materials.mjs +5 -0
  153. package/esm2020/materials/index.mjs +19 -0
  154. package/esm2020/materials/lib/line-basic-material/line-basic-material.mjs +76 -0
  155. package/esm2020/materials/lib/line-dashed-material/line-dashed-material.mjs +79 -0
  156. package/esm2020/materials/lib/mesh-basic-material/mesh-basic-material.mjs +88 -0
  157. package/esm2020/materials/lib/mesh-depth-material/mesh-depth-material.mjs +79 -0
  158. package/esm2020/materials/lib/mesh-distance-material/mesh-distance-material.mjs +79 -0
  159. package/esm2020/materials/lib/mesh-lambert-material/mesh-lambert-material.mjs +99 -0
  160. package/esm2020/materials/lib/mesh-matcap-material/mesh-matcap-material.mjs +85 -0
  161. package/esm2020/materials/lib/mesh-normal-material/mesh-normal-material.mjs +82 -0
  162. package/esm2020/materials/lib/mesh-phong-material/mesh-phong-material.mjs +102 -0
  163. package/esm2020/materials/lib/mesh-physical-material/mesh-physical-material.mjs +118 -0
  164. package/esm2020/materials/lib/mesh-standard-material/mesh-standard-material.mjs +99 -0
  165. package/esm2020/materials/lib/mesh-toon-material/mesh-toon-material.mjs +95 -0
  166. package/esm2020/materials/lib/points-material/points-material.mjs +77 -0
  167. package/esm2020/materials/lib/raw-shader-material/raw-shader-material.mjs +82 -0
  168. package/esm2020/materials/lib/shader-material/shader-material.mjs +82 -0
  169. package/esm2020/materials/lib/shadow-material/shadow-material.mjs +73 -0
  170. package/esm2020/materials/lib/sprite-material/sprite-material.mjs +77 -0
  171. package/esm2020/objects/angular-three-objects.mjs +5 -0
  172. package/esm2020/objects/index.mjs +14 -0
  173. package/esm2020/objects/lib/bone/bone.mjs +54 -0
  174. package/esm2020/objects/lib/group/group.mjs +54 -0
  175. package/esm2020/objects/lib/instanced-mesh/instanced-mesh.mjs +63 -0
  176. package/esm2020/objects/lib/line/line.mjs +58 -0
  177. package/esm2020/objects/lib/line-loop/line-loop.mjs +58 -0
  178. package/esm2020/objects/lib/line-segments/line-segments.mjs +58 -0
  179. package/esm2020/objects/lib/lod/lod.mjs +57 -0
  180. package/esm2020/objects/lib/mesh/mesh.mjs +58 -0
  181. package/esm2020/objects/lib/points/points.mjs +58 -0
  182. package/esm2020/objects/lib/skeleton/skeleton.mjs +49 -0
  183. package/esm2020/objects/lib/skinned-mesh/skinned-mesh.mjs +62 -0
  184. package/esm2020/objects/lib/sprite/sprite.mjs +57 -0
  185. package/esm2020/primitives/angular-three-primitives.mjs +5 -0
  186. package/esm2020/primitives/index.mjs +3 -0
  187. package/esm2020/primitives/lib/object-primitive/object-primitive.mjs +54 -0
  188. package/esm2020/primitives/lib/primitive/primitive.mjs +37 -0
  189. package/esm2020/stats/angular-three-stats.mjs +5 -0
  190. package/esm2020/stats/index.mjs +2 -0
  191. package/esm2020/stats/lib/stats/stats.mjs +54 -0
  192. package/esm2020/textures/angular-three-textures.mjs +5 -0
  193. package/esm2020/textures/index.mjs +12 -0
  194. package/esm2020/textures/lib/canvas-texture/canvas-texture.mjs +25 -0
  195. package/esm2020/textures/lib/compressed-array-texture/compressed-array-texture.mjs +25 -0
  196. package/esm2020/textures/lib/compressed-texture/compressed-texture.mjs +25 -0
  197. package/esm2020/textures/lib/cube-texture/cube-texture.mjs +25 -0
  198. package/esm2020/textures/lib/data-array-texture/data-array-texture.mjs +25 -0
  199. package/esm2020/textures/lib/data-texture/data-texture.mjs +25 -0
  200. package/esm2020/textures/lib/data3-dtexture/data3-dtexture.mjs +25 -0
  201. package/esm2020/textures/lib/depth-texture/depth-texture.mjs +25 -0
  202. package/esm2020/textures/lib/framebuffer-texture/framebuffer-texture.mjs +25 -0
  203. package/esm2020/textures/lib/video-texture/video-texture.mjs +25 -0
  204. package/fesm2015/angular-three-attributes.mjs +462 -0
  205. package/fesm2015/angular-three-attributes.mjs.map +1 -0
  206. package/fesm2015/angular-three-audios.mjs +200 -0
  207. package/fesm2015/angular-three-audios.mjs.map +1 -0
  208. package/fesm2015/angular-three-cameras.mjs +304 -0
  209. package/fesm2015/angular-three-cameras.mjs.map +1 -0
  210. package/fesm2015/angular-three-geometries.mjs +475 -0
  211. package/fesm2015/angular-three-geometries.mjs.map +1 -0
  212. package/fesm2015/angular-three-helpers.mjs +365 -0
  213. package/fesm2015/angular-three-helpers.mjs.map +1 -0
  214. package/fesm2015/angular-three-lights.mjs +602 -0
  215. package/fesm2015/angular-three-lights.mjs.map +1 -0
  216. package/fesm2015/angular-three-materials.mjs +1402 -0
  217. package/fesm2015/angular-three-materials.mjs.map +1 -0
  218. package/fesm2015/angular-three-objects.mjs +641 -0
  219. package/fesm2015/angular-three-objects.mjs.map +1 -0
  220. package/fesm2015/angular-three-primitives.mjs +95 -0
  221. package/fesm2015/angular-three-primitives.mjs.map +1 -0
  222. package/fesm2015/angular-three-stats.mjs +62 -0
  223. package/fesm2015/angular-three-stats.mjs.map +1 -0
  224. package/fesm2015/angular-three-textures.mjs +215 -0
  225. package/fesm2015/angular-three-textures.mjs.map +1 -0
  226. package/fesm2015/angular-three.mjs +2327 -10
  227. package/fesm2015/angular-three.mjs.map +1 -1
  228. package/fesm2020/angular-three-attributes.mjs +462 -0
  229. package/fesm2020/angular-three-attributes.mjs.map +1 -0
  230. package/fesm2020/angular-three-audios.mjs +200 -0
  231. package/fesm2020/angular-three-audios.mjs.map +1 -0
  232. package/fesm2020/angular-three-cameras.mjs +304 -0
  233. package/fesm2020/angular-three-cameras.mjs.map +1 -0
  234. package/fesm2020/angular-three-geometries.mjs +475 -0
  235. package/fesm2020/angular-three-geometries.mjs.map +1 -0
  236. package/fesm2020/angular-three-helpers.mjs +365 -0
  237. package/fesm2020/angular-three-helpers.mjs.map +1 -0
  238. package/fesm2020/angular-three-lights.mjs +602 -0
  239. package/fesm2020/angular-three-lights.mjs.map +1 -0
  240. package/fesm2020/angular-three-materials.mjs +1402 -0
  241. package/fesm2020/angular-three-materials.mjs.map +1 -0
  242. package/fesm2020/angular-three-objects.mjs +641 -0
  243. package/fesm2020/angular-three-objects.mjs.map +1 -0
  244. package/fesm2020/angular-three-primitives.mjs +95 -0
  245. package/fesm2020/angular-three-primitives.mjs.map +1 -0
  246. package/fesm2020/angular-three-stats.mjs +62 -0
  247. package/fesm2020/angular-three-stats.mjs.map +1 -0
  248. package/fesm2020/angular-three-textures.mjs +215 -0
  249. package/fesm2020/angular-three-textures.mjs.map +1 -0
  250. package/fesm2020/angular-three.mjs +2344 -10
  251. package/fesm2020/angular-three.mjs.map +1 -1
  252. package/geometries/README.md +3 -0
  253. package/geometries/index.d.ts +23 -0
  254. package/geometries/lib/box-geometry/box-geometry.d.ts +8 -0
  255. package/geometries/lib/buffer-geometry/buffer-geometry.d.ts +8 -0
  256. package/geometries/lib/capsule-geometry/capsule-geometry.d.ts +8 -0
  257. package/geometries/lib/circle-geometry/circle-geometry.d.ts +8 -0
  258. package/geometries/lib/cone-geometry/cone-geometry.d.ts +8 -0
  259. package/geometries/lib/cylinder-geometry/cylinder-geometry.d.ts +8 -0
  260. package/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.d.ts +8 -0
  261. package/geometries/lib/edges-geometry/edges-geometry.d.ts +8 -0
  262. package/geometries/lib/extrude-geometry/extrude-geometry.d.ts +8 -0
  263. package/geometries/lib/icosahedron-geometry/icosahedron-geometry.d.ts +8 -0
  264. package/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.d.ts +8 -0
  265. package/geometries/lib/lathe-geometry/lathe-geometry.d.ts +8 -0
  266. package/geometries/lib/octahedron-geometry/octahedron-geometry.d.ts +8 -0
  267. package/geometries/lib/plane-geometry/plane-geometry.d.ts +8 -0
  268. package/geometries/lib/polyhedron-geometry/polyhedron-geometry.d.ts +8 -0
  269. package/geometries/lib/ring-geometry/ring-geometry.d.ts +8 -0
  270. package/geometries/lib/shape-geometry/shape-geometry.d.ts +8 -0
  271. package/geometries/lib/sphere-geometry/sphere-geometry.d.ts +8 -0
  272. package/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.d.ts +8 -0
  273. package/geometries/lib/torus-geometry/torus-geometry.d.ts +8 -0
  274. package/geometries/lib/torus-knot-geometry/torus-knot-geometry.d.ts +8 -0
  275. package/geometries/lib/tube-geometry/tube-geometry.d.ts +8 -0
  276. package/geometries/lib/wireframe-geometry/wireframe-geometry.d.ts +8 -0
  277. package/helpers/README.md +3 -0
  278. package/helpers/index.d.ts +13 -0
  279. package/helpers/lib/arrow-helper/arrow-helper.d.ts +8 -0
  280. package/helpers/lib/axes-helper/axes-helper.d.ts +8 -0
  281. package/helpers/lib/box-helper/box-helper.d.ts +8 -0
  282. package/helpers/lib/box3-helper/box3-helper.d.ts +8 -0
  283. package/helpers/lib/camera-helper/camera-helper.d.ts +8 -0
  284. package/helpers/lib/directional-light-helper/directional-light-helper.d.ts +8 -0
  285. package/helpers/lib/grid-helper/grid-helper.d.ts +8 -0
  286. package/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.d.ts +8 -0
  287. package/helpers/lib/plane-helper/plane-helper.d.ts +8 -0
  288. package/helpers/lib/point-light-helper/point-light-helper.d.ts +8 -0
  289. package/helpers/lib/polar-grid-helper/polar-grid-helper.d.ts +8 -0
  290. package/helpers/lib/skeleton-helper/skeleton-helper.d.ts +8 -0
  291. package/helpers/lib/spot-light-helper/spot-light-helper.d.ts +8 -0
  292. package/index.d.ts +11 -1
  293. package/lib/canvas.d.ts +46 -0
  294. package/lib/di/resize.d.ts +12 -0
  295. package/lib/di/window.d.ts +1 -0
  296. package/lib/directives/args.d.ts +19 -0
  297. package/lib/events.d.ts +2 -0
  298. package/lib/instance.d.ts +81 -0
  299. package/lib/ref.d.ts +5 -0
  300. package/lib/services/loader.d.ts +11 -0
  301. package/lib/services/resize.d.ts +19 -0
  302. package/lib/stores/component-store.d.ts +69 -0
  303. package/lib/stores/store.d.ts +32 -0
  304. package/lib/types.d.ts +358 -0
  305. package/lib/utils/apply-props.d.ts +6 -0
  306. package/lib/utils/build-graph.d.ts +3 -0
  307. package/lib/utils/camera.d.ts +4 -0
  308. package/lib/utils/capitalize.d.ts +1 -0
  309. package/lib/utils/check-update.d.ts +2 -0
  310. package/lib/utils/events.d.ts +6 -0
  311. package/lib/utils/get-instance-local-state.d.ts +2 -0
  312. package/lib/utils/inject.d.ts +9 -0
  313. package/lib/utils/instance.d.ts +4 -0
  314. package/lib/utils/is.d.ts +21 -0
  315. package/lib/utils/loop.d.ts +32 -0
  316. package/lib/utils/make.d.ts +4 -0
  317. package/lib/utils/mutate.d.ts +2 -0
  318. package/lib/utils/proxy.d.ts +7 -0
  319. package/lib/utils/renderer.d.ts +3 -0
  320. package/lights/README.md +3 -0
  321. package/lights/index.d.ts +9 -0
  322. package/lights/lib/ambient-light/ambient-light.d.ts +49 -0
  323. package/lights/lib/ambient-light-probe/ambient-light-probe.d.ts +50 -0
  324. package/lights/lib/directional-light/directional-light.d.ts +50 -0
  325. package/lights/lib/hemisphere-light/hemisphere-light.d.ts +51 -0
  326. package/lights/lib/hemisphere-light-probe/hemisphere-light-probe.d.ts +52 -0
  327. package/lights/lib/light-probe/light-probe.d.ts +50 -0
  328. package/lights/lib/point-light/point-light.d.ts +52 -0
  329. package/lights/lib/rect-area-light/rect-area-light.d.ts +52 -0
  330. package/lights/lib/spot-light/spot-light.d.ts +55 -0
  331. package/materials/README.md +3 -0
  332. package/materials/index.d.ts +17 -0
  333. package/materials/lib/line-basic-material/line-basic-material.d.ts +55 -0
  334. package/materials/lib/line-dashed-material/line-dashed-material.d.ts +58 -0
  335. package/materials/lib/mesh-basic-material/mesh-basic-material.d.ts +67 -0
  336. package/materials/lib/mesh-depth-material/mesh-depth-material.d.ts +58 -0
  337. package/materials/lib/mesh-distance-material/mesh-distance-material.d.ts +58 -0
  338. package/materials/lib/mesh-lambert-material/mesh-lambert-material.d.ts +78 -0
  339. package/materials/lib/mesh-matcap-material/mesh-matcap-material.d.ts +64 -0
  340. package/materials/lib/mesh-normal-material/mesh-normal-material.d.ts +61 -0
  341. package/materials/lib/mesh-phong-material/mesh-phong-material.d.ts +81 -0
  342. package/materials/lib/mesh-physical-material/mesh-physical-material.d.ts +97 -0
  343. package/materials/lib/mesh-standard-material/mesh-standard-material.d.ts +78 -0
  344. package/materials/lib/mesh-toon-material/mesh-toon-material.d.ts +74 -0
  345. package/materials/lib/points-material/points-material.d.ts +56 -0
  346. package/materials/lib/raw-shader-material/raw-shader-material.d.ts +68 -0
  347. package/materials/lib/shader-material/shader-material.d.ts +68 -0
  348. package/materials/lib/shadow-material/shadow-material.d.ts +52 -0
  349. package/materials/lib/sprite-material/sprite-material.d.ts +56 -0
  350. package/objects/README.md +3 -0
  351. package/objects/index.d.ts +12 -0
  352. package/objects/lib/bone/bone.d.ts +35 -0
  353. package/objects/lib/group/group.d.ts +35 -0
  354. package/objects/lib/instanced-mesh/instanced-mesh.d.ts +44 -0
  355. package/objects/lib/line/line.d.ts +41 -0
  356. package/objects/lib/line-loop/line-loop.d.ts +41 -0
  357. package/objects/lib/line-segments/line-segments.d.ts +41 -0
  358. package/objects/lib/lod/lod.d.ts +41 -0
  359. package/objects/lib/mesh/mesh.d.ts +41 -0
  360. package/objects/lib/points/points.d.ts +41 -0
  361. package/objects/lib/skeleton/skeleton.d.ts +17 -0
  362. package/objects/lib/skinned-mesh/skinned-mesh.d.ts +45 -0
  363. package/objects/lib/sprite/sprite.d.ts +38 -0
  364. package/package.json +93 -2
  365. package/primitives/README.md +3 -0
  366. package/primitives/index.d.ts +2 -0
  367. package/primitives/lib/object-primitive/object-primitive.d.ts +35 -0
  368. package/primitives/lib/primitive/primitive.d.ts +10 -0
  369. package/schematics/src/generators/init/generator.d.ts +1 -1
  370. package/schematics/src/generators/init/generator.js +4 -4
  371. package/schematics/src/generators/init/generator.js.map +1 -1
  372. package/stats/README.md +3 -0
  373. package/stats/index.d.ts +1 -0
  374. package/stats/lib/stats/stats.d.ts +16 -0
  375. package/textures/README.md +3 -0
  376. package/textures/index.d.ts +10 -0
  377. package/textures/lib/canvas-texture/canvas-texture.d.ts +8 -0
  378. package/textures/lib/compressed-array-texture/compressed-array-texture.d.ts +8 -0
  379. package/textures/lib/compressed-texture/compressed-texture.d.ts +8 -0
  380. package/textures/lib/cube-texture/cube-texture.d.ts +8 -0
  381. package/textures/lib/data-array-texture/data-array-texture.d.ts +8 -0
  382. package/textures/lib/data-texture/data-texture.d.ts +8 -0
  383. package/textures/lib/data3-dtexture/data3-dtexture.d.ts +8 -0
  384. package/textures/lib/depth-texture/depth-texture.d.ts +8 -0
  385. package/textures/lib/framebuffer-texture/framebuffer-texture.d.ts +8 -0
  386. package/textures/lib/video-texture/video-texture.d.ts +8 -0
  387. package/esm2020/lib/angular-three.module.mjs +0 -15
  388. package/lib/angular-three.module.d.ts +0 -7
@@ -0,0 +1,127 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { ElementRef, inject, Injectable, NgZone } from '@angular/core';
3
+ import { debounceTime, fromEvent, Observable, pipe, ReplaySubject, share, Subject, takeUntil, } from 'rxjs';
4
+ import { injectResizeObserverSupport, injectResizeOptions } from '../di/resize';
5
+ import { injectWindow } from '../di/window';
6
+ import * as i0 from "@angular/core";
7
+ export class NgtResize extends Observable {
8
+ constructor() {
9
+ const { nativeElement } = inject(ElementRef);
10
+ const zone = inject(NgZone);
11
+ const document = inject(DOCUMENT);
12
+ const window = injectWindow();
13
+ const isSupport = injectResizeObserverSupport();
14
+ const { box, offsetSize, scroll, debounce } = injectResizeOptions();
15
+ let observer;
16
+ let lastBounds;
17
+ let lastEntries = [];
18
+ const torndown$ = new Subject();
19
+ const scrollContainers = findScrollContainers(nativeElement, document.body);
20
+ // set actual debounce values early, so effects know if they should react accordingly
21
+ const scrollDebounce = debounce ? (typeof debounce === 'number' ? debounce : debounce.scroll) : null;
22
+ const resizeDebounce = debounce ? (typeof debounce === 'number' ? debounce : debounce.resize) : null;
23
+ const debounceAndDestroy = (debounce) => {
24
+ return pipe(debounceTime(debounce ?? 0), takeUntil(torndown$));
25
+ };
26
+ super((subscriber) => {
27
+ if (!isSupport) {
28
+ subscriber.error('ResizeObserver is not supported in your browser. Please use a polyfill');
29
+ return;
30
+ }
31
+ zone.runOutsideAngular(() => {
32
+ const callback = (entries) => {
33
+ lastEntries = entries;
34
+ const { left, top, width, height, bottom, right, x, y } = nativeElement.getBoundingClientRect();
35
+ const size = {
36
+ left,
37
+ top,
38
+ width,
39
+ height,
40
+ bottom,
41
+ right,
42
+ x,
43
+ y,
44
+ };
45
+ if (nativeElement instanceof HTMLElement && offsetSize) {
46
+ size.height = nativeElement.offsetHeight;
47
+ size.width = nativeElement.offsetWidth;
48
+ }
49
+ Object.freeze(size);
50
+ subscriber.next({
51
+ entries,
52
+ dpr: window.devicePixelRatio,
53
+ ...size,
54
+ });
55
+ if (!areBoundsEqual(lastBounds || {}, size)) {
56
+ lastBounds = size;
57
+ }
58
+ };
59
+ const boundEntriesCallback = () => {
60
+ callback(lastEntries);
61
+ };
62
+ observer = new ResizeObserver(callback);
63
+ observer.observe(nativeElement, { box });
64
+ if (scroll) {
65
+ if (scrollContainers) {
66
+ scrollContainers.forEach((scrollContainer) => {
67
+ fromEvent(scrollContainer, 'scroll', {
68
+ capture: true,
69
+ passive: true,
70
+ })
71
+ .pipe(debounceAndDestroy(scrollDebounce))
72
+ .subscribe(boundEntriesCallback);
73
+ });
74
+ }
75
+ fromEvent(window, 'scroll', {
76
+ capture: true,
77
+ passive: true,
78
+ })
79
+ .pipe(debounceAndDestroy(scrollDebounce))
80
+ .subscribe(boundEntriesCallback);
81
+ }
82
+ fromEvent(window, 'resize').pipe(debounceAndDestroy(resizeDebounce)).subscribe(boundEntriesCallback);
83
+ });
84
+ return () => {
85
+ if (observer) {
86
+ observer.unobserve(nativeElement);
87
+ observer.disconnect();
88
+ }
89
+ torndown$.next();
90
+ torndown$.complete();
91
+ };
92
+ });
93
+ return this.pipe(debounceTime(scrollDebounce || 0), share({
94
+ connector: () => new ReplaySubject(1),
95
+ resetOnRefCountZero: true,
96
+ resetOnComplete: true,
97
+ }));
98
+ }
99
+ }
100
+ NgtResize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtResize, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
101
+ NgtResize.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtResize });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtResize, decorators: [{
103
+ type: Injectable
104
+ }], ctorParameters: function () { return []; } });
105
+ // Returns a list of scroll offsets
106
+ function findScrollContainers(element, documentBody) {
107
+ const result = [];
108
+ if (!element || element === documentBody)
109
+ return result;
110
+ const { overflow, overflowX, overflowY } = window.getComputedStyle(element);
111
+ if ([overflow, overflowX, overflowY].some((prop) => prop === 'auto' || prop === 'scroll'))
112
+ result.push(element);
113
+ return [...result, ...findScrollContainers(element.parentElement, documentBody)];
114
+ }
115
+ // Checks if element boundaries are equal
116
+ const keys = [
117
+ 'x',
118
+ 'y',
119
+ 'top',
120
+ 'bottom',
121
+ 'left',
122
+ 'right',
123
+ 'width',
124
+ 'height',
125
+ ];
126
+ const areBoundsEqual = (a, b) => keys.every((key) => a[key] === b[key]);
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci10aHJlZS9zcmMvbGliL3NlcnZpY2VzL3Jlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQ0gsWUFBWSxFQUNaLFNBQVMsRUFFVCxVQUFVLEVBQ1YsSUFBSSxFQUNKLGFBQWEsRUFDYixLQUFLLEVBQ0wsT0FBTyxFQUNQLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQWdCNUMsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUEyQjtJQUN0RDtRQUNJLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUE0QixDQUFDO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDOUIsTUFBTSxTQUFTLEdBQUcsMkJBQTJCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUVwRSxJQUFJLFFBQXdCLENBQUM7UUFDN0IsSUFBSSxVQUFvRCxDQUFDO1FBQ3pELElBQUksV0FBVyxHQUEwQixFQUFFLENBQUM7UUFFNUMsTUFBTSxT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bUM7QUFDbkMsU0FBUyxvQkFBb0IsQ0FBQyxPQUFnQyxFQUFFLFlBQXlCO0lBQ3JGLE1BQU0sTUFBTSxHQUF1QixFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssWUFBWTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ3hELE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFzQixDQUFDLENBQUM7SUFDM0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLENBQUM7UUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hILE9BQU8sQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLG9CQUFvQixDQUFFLE9BQXVCLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDdEcsQ0FBQztBQUVELHlDQUF5QztBQUN6QyxNQUFNLElBQUksR0FBdUQ7SUFDN0QsR0FBRztJQUNILEdBQUc7SUFDSCxLQUFLO0lBQ0wsUUFBUTtJQUNSLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztJQUNQLFFBQVE7Q0FDWCxDQUFDO0FBQ0YsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUEyQyxFQUFFLENBQTJDLEVBQUUsRUFBRSxDQUNoSCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFbGVtZW50UmVmLCBpbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZnJvbUV2ZW50LFxuICAgIE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbixcbiAgICBPYnNlcnZhYmxlLFxuICAgIHBpcGUsXG4gICAgUmVwbGF5U3ViamVjdCxcbiAgICBzaGFyZSxcbiAgICBTdWJqZWN0LFxuICAgIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpbmplY3RSZXNpemVPYnNlcnZlclN1cHBvcnQsIGluamVjdFJlc2l6ZU9wdGlvbnMgfSBmcm9tICcuLi9kaS9yZXNpemUnO1xuaW1wb3J0IHsgaW5qZWN0V2luZG93IH0gZnJvbSAnLi4vZGkvd2luZG93JztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RSZXNpemVSZXN1bHQge1xuICAgIHJlYWRvbmx5IGVudHJpZXM6IFJlYWRvbmx5QXJyYXk8UmVzaXplT2JzZXJ2ZXJFbnRyeT47XG4gICAgcmVhZG9ubHkgeDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IHk6IG51bWJlcjtcbiAgICByZWFkb25seSB3aWR0aDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGhlaWdodDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IHRvcDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IHJpZ2h0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgYm90dG9tOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgbGVmdDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGRwcjogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd0UmVzaXplIGV4dGVuZHMgT2JzZXJ2YWJsZTxOZ3RSZXNpemVSZXN1bHQ+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgeyBuYXRpdmVFbGVtZW50IH0gPSBpbmplY3QoRWxlbWVudFJlZikgYXMgRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgICAgIGNvbnN0IHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgICAgICBjb25zdCB3aW5kb3cgPSBpbmplY3RXaW5kb3coKTtcbiAgICAgICAgY29uc3QgaXNTdXBwb3J0ID0gaW5qZWN0UmVzaXplT2JzZXJ2ZXJTdXBwb3J0KCk7XG4gICAgICAgIGNvbnN0IHsgYm94LCBvZmZzZXRTaXplLCBzY3JvbGwsIGRlYm91bmNlIH0gPSBpbmplY3RSZXNpemVPcHRpb25zKCk7XG5cbiAgICAgICAgbGV0IG9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcbiAgICAgICAgbGV0IGxhc3RCb3VuZHM6IE9taXQ8Tmd0UmVzaXplUmVzdWx0LCAnZW50cmllcycgfCAnZHByJz47XG4gICAgICAgIGxldCBsYXN0RW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdID0gW107XG5cbiAgICAgICAgY29uc3QgdG9ybmRvd24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyczogSFRNTE9yU1ZHRWxlbWVudFtdIHwgbnVsbCA9IGZpbmRTY3JvbGxDb250YWluZXJzKG5hdGl2ZUVsZW1lbnQsIGRvY3VtZW50LmJvZHkpO1xuXG4gICAgICAgIC8vIHNldCBhY3R1YWwgZGVib3VuY2UgdmFsdWVzIGVhcmx5LCBzbyBlZmZlY3RzIGtub3cgaWYgdGhleSBzaG91bGQgcmVhY3QgYWNjb3JkaW5nbHlcbiAgICAgICAgY29uc3Qgc2Nyb2xsRGVib3VuY2UgPSBkZWJvdW5jZSA/ICh0eXBlb2YgZGVib3VuY2UgPT09ICdudW1iZXInID8gZGVib3VuY2UgOiBkZWJvdW5jZS5zY3JvbGwpIDogbnVsbDtcblxuICAgICAgICBjb25zdCByZXNpemVEZWJvdW5jZSA9IGRlYm91bmNlID8gKHR5cGVvZiBkZWJvdW5jZSA9PT0gJ251bWJlcicgPyBkZWJvdW5jZSA6IGRlYm91bmNlLnJlc2l6ZSkgOiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGRlYm91bmNlQW5kRGVzdHJveSA9IDxUPihkZWJvdW5jZTogbnVtYmVyIHwgbnVsbCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcGlwZShkZWJvdW5jZVRpbWUoZGVib3VuY2UgPz8gMCksIHRha2VVbnRpbCh0b3JuZG93biQpKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdXBlcigoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc1N1cHBvcnQpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKCdSZXNpemVPYnNlcnZlciBpcyBub3Qgc3VwcG9ydGVkIGluIHlvdXIgYnJvd3Nlci4gUGxlYXNlIHVzZSBhIHBvbHlmaWxsJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IChlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdEVudHJpZXMgPSBlbnRyaWVzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCwgYm90dG9tLCByaWdodCwgeCwgeSB9ID0gbmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgeSxcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobmF0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIG9mZnNldFNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUuaGVpZ2h0ID0gbmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoID0gbmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5mcmVlemUoc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHByOiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNpemUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZUJvdW5kc0VxdWFsKGxhc3RCb3VuZHMgfHwge30sIHNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Qm91bmRzID0gc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBib3VuZEVudHJpZXNDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobGFzdEVudHJpZXMpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShuYXRpdmVFbGVtZW50LCB7IGJveCB9KTtcbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxDb250YWluZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxDb250YWluZXJzLmZvckVhY2goKHNjcm9sbENvbnRhaW5lcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21FdmVudChzY3JvbGxDb250YWluZXIgYXMgSFRNTEVsZW1lbnQsICdzY3JvbGwnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VBbmREZXN0cm95KHNjcm9sbERlYm91bmNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShib3VuZEVudHJpZXNDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdzY3JvbGwnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlQW5kRGVzdHJveShzY3JvbGxEZWJvdW5jZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGJvdW5kRW50cmllc0NhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShkZWJvdW5jZUFuZERlc3Ryb3kocmVzaXplRGVib3VuY2UpKS5zdWJzY3JpYmUoYm91bmRFbnRyaWVzQ2FsbGJhY2spO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShuYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b3JuZG93biQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRvcm5kb3duJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZShzY3JvbGxEZWJvdW5jZSB8fCAwKSxcbiAgICAgICAgICAgIHNoYXJlKHtcbiAgICAgICAgICAgICAgICBjb25uZWN0b3I6ICgpID0+IG5ldyBSZXBsYXlTdWJqZWN0KDEpLFxuICAgICAgICAgICAgICAgIHJlc2V0T25SZWZDb3VudFplcm86IHRydWUsXG4gICAgICAgICAgICAgICAgcmVzZXRPbkNvbXBsZXRlOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbi8vIFJldHVybnMgYSBsaXN0IG9mIHNjcm9sbCBvZmZzZXRzXG5mdW5jdGlvbiBmaW5kU2Nyb2xsQ29udGFpbmVycyhlbGVtZW50OiBIVE1MT3JTVkdFbGVtZW50IHwgbnVsbCwgZG9jdW1lbnRCb2R5OiBIVE1MRWxlbWVudCk6IEhUTUxPclNWR0VsZW1lbnRbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBIVE1MT3JTVkdFbGVtZW50W10gPSBbXTtcbiAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudCA9PT0gZG9jdW1lbnRCb2R5KSByZXR1cm4gcmVzdWx0O1xuICAgIGNvbnN0IHsgb3ZlcmZsb3csIG92ZXJmbG93WCwgb3ZlcmZsb3dZIH0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50IGFzIEhUTUxFbGVtZW50KTtcbiAgICBpZiAoW292ZXJmbG93LCBvdmVyZmxvd1gsIG92ZXJmbG93WV0uc29tZSgocHJvcCkgPT4gcHJvcCA9PT0gJ2F1dG8nIHx8IHByb3AgPT09ICdzY3JvbGwnKSkgcmVzdWx0LnB1c2goZWxlbWVudCk7XG4gICAgcmV0dXJuIFsuLi5yZXN1bHQsIC4uLmZpbmRTY3JvbGxDb250YWluZXJzKChlbGVtZW50IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50LCBkb2N1bWVudEJvZHkpXTtcbn1cblxuLy8gQ2hlY2tzIGlmIGVsZW1lbnQgYm91bmRhcmllcyBhcmUgZXF1YWxcbmNvbnN0IGtleXM6IChrZXlvZiBPbWl0PE5ndFJlc2l6ZVJlc3VsdCwgJ2VudHJpZXMnIHwgJ2Rwcic+KVtdID0gW1xuICAgICd4JyxcbiAgICAneScsXG4gICAgJ3RvcCcsXG4gICAgJ2JvdHRvbScsXG4gICAgJ2xlZnQnLFxuICAgICdyaWdodCcsXG4gICAgJ3dpZHRoJyxcbiAgICAnaGVpZ2h0Jyxcbl07XG5jb25zdCBhcmVCb3VuZHNFcXVhbCA9IChhOiBPbWl0PE5ndFJlc2l6ZVJlc3VsdCwgJ2VudHJpZXMnIHwgJ2Rwcic+LCBiOiBPbWl0PE5ndFJlc2l6ZVJlc3VsdCwgJ2VudHJpZXMnIHwgJ2Rwcic+KSA9PlxuICAgIGtleXMuZXZlcnkoKGtleSkgPT4gYVtrZXldID09PSBiW2tleV0pO1xuIl19
@@ -0,0 +1,137 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ComponentStore } from '@ngrx/component-store';
3
+ import { combineLatest, filter, isObservable, noop, tap, } from 'rxjs';
4
+ import { is } from '../utils/is';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * a default Selector that consumers can quickly use for their selectors projector
8
+ */
9
+ export const defaultProjector = () => ({});
10
+ /**
11
+ * A custom operator that skips the first undefined value but allows subsequent undefined values.
12
+ * NgRxComponentStore#select always emits the first value regardless of undefined or not after initialize
13
+ */
14
+ export const skipFirstUndefined = () => filter((value, index) => index > 0 || value !== undefined);
15
+ /**
16
+ * An extended `tap` operator that accepts an `effectFn` which:
17
+ * - runs on every `next` notification from `source$`
18
+ * - can optionally return a `cleanUp` function that
19
+ * invokes from the 2nd `next` notification onward and on `unsubscribe` (destroyed)
20
+ *
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * source$.pipe(
25
+ * tapEffect((sourceValue) = {
26
+ * const cb = () => {
27
+ * doStuff(sourceValue);
28
+ * };
29
+ * addListener('event', cb);
30
+ *
31
+ * return () => {
32
+ * removeListener('event', cb);
33
+ * }
34
+ * })
35
+ * )
36
+ * ```
37
+ */
38
+ export function tapEffect(effectFn) {
39
+ let cleanupFn = noop;
40
+ let firstRun = false;
41
+ let prev = undefined;
42
+ const teardown = (error) => {
43
+ return () => {
44
+ if (cleanupFn) {
45
+ cleanupFn({ prev, complete: true, error });
46
+ }
47
+ };
48
+ };
49
+ return tap({
50
+ next: (value) => {
51
+ if (cleanupFn && firstRun) {
52
+ cleanupFn({ prev, complete: false, error: false });
53
+ }
54
+ const cleanUpOrVoid = effectFn(value);
55
+ if (cleanUpOrVoid) {
56
+ cleanupFn = cleanUpOrVoid;
57
+ }
58
+ prev = value;
59
+ if (!firstRun) {
60
+ firstRun = true;
61
+ }
62
+ },
63
+ complete: teardown(false),
64
+ unsubscribe: teardown(false),
65
+ error: teardown(true),
66
+ });
67
+ }
68
+ export class NgtComponentStore extends ComponentStore {
69
+ constructor() {
70
+ super({});
71
+ // exposing get since THREE is imperative at its core
72
+ // we need to imperatively get state sometimes for usages in Animation Loop
73
+ // we also bind "this" instance, so we don't have to bind it later
74
+ this.read = this.get.bind(this);
75
+ this.initialize();
76
+ }
77
+ /**
78
+ * A custom patchState that allows for:
79
+ * - Partial state updates and Observable of partial state updates like patchState
80
+ * - Pass a Record<string, ObservableInput> to update a specific key with an Observable.
81
+ * This is similar to `RxState.connect()` API
82
+ */
83
+ write(partialStateOrFactory) {
84
+ if (typeof partialStateOrFactory === 'function') {
85
+ return this.write(partialStateOrFactory(this.read()));
86
+ }
87
+ const partialState = partialStateOrFactory;
88
+ if (Object.keys(partialState).length === 0) {
89
+ return;
90
+ }
91
+ if (isObservable(partialState)) {
92
+ return this.patchState(partialState);
93
+ }
94
+ const entries = Object.entries(partialState);
95
+ const hasObservable = entries.some(([_, value]) => isObservable(value) && !is.ref(value));
96
+ if (!hasObservable) {
97
+ return this.patchState(partialState);
98
+ }
99
+ const [rawValues, observableValues] = entries.reduce((result, [key, value]) => {
100
+ if (isObservable(value)) {
101
+ result[1][key] = value;
102
+ }
103
+ else {
104
+ result[0][key] = value;
105
+ }
106
+ return result;
107
+ }, [{}, {}]);
108
+ if (Object.keys(rawValues).length > 0) {
109
+ this.patchState(rawValues);
110
+ }
111
+ if (Object.keys(observableValues).length > 0) {
112
+ this.patchState(combineLatest(observableValues));
113
+ }
114
+ }
115
+ initialize() {
116
+ return;
117
+ }
118
+ /**
119
+ * A utility class method to select a state on the template as Observable
120
+ * - This method always debounce the Observable
121
+ */
122
+ selectKey(key, skipFirst = false) {
123
+ return this.select((s) => s[key], { debounce: true }).pipe(skipFirst ? skipFirstUndefined() : (s) => s);
124
+ }
125
+ /**
126
+ * A utility class method to get a state on the template as imperative Value
127
+ */
128
+ readKey(key) {
129
+ return this.read((s) => s[key]);
130
+ }
131
+ }
132
+ NgtComponentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtComponentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
133
+ NgtComponentStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtComponentStore });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: NgtComponentStore, decorators: [{
135
+ type: Injectable
136
+ }], ctorParameters: function () { return []; } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci10aHJlZS9zcmMvbGliL3N0b3Jlcy9jb21wb25lbnQtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUNILGFBQWEsRUFDYixNQUFNLEVBQ04sWUFBWSxFQUVaLElBQUksRUFHSixHQUFHLEdBQ04sTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUVqQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFM0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBbUMsRUFBRSxDQUNuRSxNQUFNLENBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQztBQU1sRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQVMsUUFBMEI7SUFDeEQsSUFBSSxTQUFTLEdBQTZGLElBQUksQ0FBQztJQUMvRyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxJQUFJLEdBQXVCLFNBQVMsQ0FBQztJQUV6QyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO1FBQ2hDLE9BQU8sR0FBRyxFQUFFO1lBQ1IsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FB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UyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlCO1FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBRVMsVUFBVTtRQUNoQixPQUFPO0lBQ1gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FDTCxHQUFTLEVBQ1QsU0FBUyxHQUFHLEtBQUs7UUFFakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUE2QyxHQUFTO1FBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7OEdBeEZRLGlCQUFpQjtrSEFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZSc7XG5pbXBvcnQge1xuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgZmlsdGVyLFxuICAgIGlzT2JzZXJ2YWJsZSxcbiAgICBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sXG4gICAgbm9vcCxcbiAgICBPYnNlcnZhYmxlLFxuICAgIE9ic2VydmFibGVJbnB1dCxcbiAgICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcblxuLyoqXG4gKiBhIGRlZmF1bHQgU2VsZWN0b3IgdGhhdCBjb25zdW1lcnMgY2FuIHF1aWNrbHkgdXNlIGZvciB0aGVpciBzZWxlY3RvcnMgcHJvamVjdG9yXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0UHJvamVjdG9yID0gKCkgPT4gKHt9KTtcblxuLyoqXG4gKiBBIGN1c3RvbSBvcGVyYXRvciB0aGF0IHNraXBzIHRoZSBmaXJzdCB1bmRlZmluZWQgdmFsdWUgYnV0IGFsbG93cyBzdWJzZXF1ZW50IHVuZGVmaW5lZCB2YWx1ZXMuXG4gKiBOZ1J4Q29tcG9uZW50U3RvcmUjc2VsZWN0IGFsd2F5cyBlbWl0cyB0aGUgZmlyc3QgdmFsdWUgcmVnYXJkbGVzcyBvZiB1bmRlZmluZWQgb3Igbm90IGFmdGVyIGluaXRpYWxpemVcbiAqL1xuZXhwb3J0IGNvbnN0IHNraXBGaXJzdFVuZGVmaW5lZCA9IDxUPigpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4gPT5cbiAgICBmaWx0ZXI8VD4oKHZhbHVlLCBpbmRleCkgPT4gaW5kZXggPiAwIHx8IHZhbHVlICE9PSB1bmRlZmluZWQpO1xuXG50eXBlIEVmZmVjdEZuPFRWYWx1ZT4gPSAoXG4gICAgdmFsdWU6IFRWYWx1ZVxuKSA9PiB2b2lkIHwgdW5kZWZpbmVkIHwgKChjbGVhblVwUGFyYW1zOiB7IHByZXY6IFRWYWx1ZSB8IHVuZGVmaW5lZDsgY29tcGxldGU6IGJvb2xlYW47IGVycm9yOiBib29sZWFuIH0pID0+IHZvaWQpO1xuXG4vKipcbiAqIEFuIGV4dGVuZGVkIGB0YXBgIG9wZXJhdG9yIHRoYXQgYWNjZXB0cyBhbiBgZWZmZWN0Rm5gIHdoaWNoOlxuICogLSBydW5zIG9uIGV2ZXJ5IGBuZXh0YCBub3RpZmljYXRpb24gZnJvbSBgc291cmNlJGBcbiAqIC0gY2FuIG9wdGlvbmFsbHkgcmV0dXJuIGEgYGNsZWFuVXBgIGZ1bmN0aW9uIHRoYXRcbiAqIGludm9rZXMgZnJvbSB0aGUgMm5kIGBuZXh0YCBub3RpZmljYXRpb24gb253YXJkIGFuZCBvbiBgdW5zdWJzY3JpYmVgIChkZXN0cm95ZWQpXG4gKlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzb3VyY2UkLnBpcGUoXG4gKiAgdGFwRWZmZWN0KChzb3VyY2VWYWx1ZSkgPSB7XG4gKiAgICBjb25zdCBjYiA9ICgpID0+IHtcbiAqICAgICAgZG9TdHVmZihzb3VyY2VWYWx1ZSk7XG4gKiAgICB9O1xuICogICAgYWRkTGlzdGVuZXIoJ2V2ZW50JywgY2IpO1xuICpcbiAqICAgIHJldHVybiAoKSA9PiB7XG4gKiAgICAgIHJlbW92ZUxpc3RlbmVyKCdldmVudCcsIGNiKTtcbiAqICAgIH1cbiAqICB9KVxuICogKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YXBFZmZlY3Q8VFZhbHVlPihlZmZlY3RGbjogRWZmZWN0Rm48VFZhbHVlPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUVmFsdWU+IHtcbiAgICBsZXQgY2xlYW51cEZuOiAoY2xlYW5VcFBhcmFtczogeyBwcmV2OiBUVmFsdWUgfCB1bmRlZmluZWQ7IGNvbXBsZXRlOiBib29sZWFuOyBlcnJvcjogYm9vbGVhbiB9KSA9PiB2b2lkID0gbm9vcDtcbiAgICBsZXQgZmlyc3RSdW4gPSBmYWxzZTtcbiAgICBsZXQgcHJldjogVFZhbHVlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgdGVhcmRvd24gPSAoZXJyb3I6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmIChjbGVhbnVwRm4pIHtcbiAgICAgICAgICAgICAgICBjbGVhbnVwRm4oeyBwcmV2LCBjb21wbGV0ZTogdHJ1ZSwgZXJyb3IgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiB0YXA8VFZhbHVlPih7XG4gICAgICAgIG5leHQ6ICh2YWx1ZTogVFZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2xlYW51cEZuICYmIGZpcnN0UnVuKSB7XG4gICAgICAgICAgICAgICAgY2xlYW51cEZuKHsgcHJldiwgY29tcGxldGU6IGZhbHNlLCBlcnJvcjogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNsZWFuVXBPclZvaWQgPSBlZmZlY3RGbih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoY2xlYW5VcE9yVm9pZCkge1xuICAgICAgICAgICAgICAgIGNsZWFudXBGbiA9IGNsZWFuVXBPclZvaWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByZXYgPSB2YWx1ZTtcblxuICAgICAgICAgICAgaWYgKCFmaXJzdFJ1bikge1xuICAgICAgICAgICAgICAgIGZpcnN0UnVuID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IHRlYXJkb3duKGZhbHNlKSxcbiAgICAgICAgdW5zdWJzY3JpYmU6IHRlYXJkb3duKGZhbHNlKSxcbiAgICAgICAgZXJyb3I6IHRlYXJkb3duKHRydWUpLFxuICAgIH0pO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd0Q29tcG9uZW50U3RvcmU8XG4gICAgVFN0YXRlIGV4dGVuZHMgb2JqZWN0ID0gYW55LFxuICAgIFRJbnRlcm5hbFN0YXRlIGV4dGVuZHMgb2JqZWN0ID0gVFN0YXRlICYgTmd0QW55UmVjb3JkXG4+IGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8VEludGVybmFsU3RhdGU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe30gYXMgVEludGVybmFsU3RhdGUpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICB9XG5cbiAgICAvLyBleHBvc2luZyBnZXQgc2luY2UgVEhSRUUgaXMgaW1wZXJhdGl2ZSBhdCBpdHMgY29yZVxuICAgIC8vIHdlIG5lZWQgdG8gaW1wZXJhdGl2ZWx5IGdldCBzdGF0ZSBzb21ldGltZXMgZm9yIHVzYWdlcyBpbiBBbmltYXRpb24gTG9vcFxuICAgIC8vIHdlIGFsc28gYmluZCBcInRoaXNcIiBpbnN0YW5jZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byBiaW5kIGl0IGxhdGVyXG4gICAgcmVhZG9ubHkgcmVhZCA9IHRoaXMuZ2V0LmJpbmQodGhpcyk7XG5cbiAgICAvKipcbiAgICAgKiBBIGN1c3RvbSBwYXRjaFN0YXRlIHRoYXQgYWxsb3dzIGZvcjpcbiAgICAgKiAtIFBhcnRpYWwgc3RhdGUgdXBkYXRlcyBhbmQgT2JzZXJ2YWJsZSBvZiBwYXJ0aWFsIHN0YXRlIHVwZGF0ZXMgbGlrZSBwYXRjaFN0YXRlXG4gICAgICogLSBQYXNzIGEgUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZUlucHV0PiB0byB1cGRhdGUgYSBzcGVjaWZpYyBrZXkgd2l0aCBhbiBPYnNlcnZhYmxlLlxuICAgICAqIFRoaXMgaXMgc2ltaWxhciB0byBgUnhTdGF0ZS5jb25uZWN0KClgIEFQSVxuICAgICAqL1xuICAgIHdyaXRlKFxuICAgICAgICBwYXJ0aWFsU3RhdGVPckZhY3Rvcnk6XG4gICAgICAgICAgICB8ICgoc3RhdGU6IFRJbnRlcm5hbFN0YXRlKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+KVxuICAgICAgICAgICAgfCAoKHN0YXRlOiBUSW50ZXJuYWxTdGF0ZSkgPT4gT2JzZXJ2YWJsZTxQYXJ0aWFsPFRJbnRlcm5hbFN0YXRlPj4pXG4gICAgICAgICAgICB8IE9ic2VydmFibGU8UGFydGlhbDxUSW50ZXJuYWxTdGF0ZT4+XG4gICAgICAgICAgICB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXJ0aWFsU3RhdGVPckZhY3RvcnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlKHBhcnRpYWxTdGF0ZU9yRmFjdG9yeSh0aGlzLnJlYWQoKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFydGlhbFN0YXRlID0gcGFydGlhbFN0YXRlT3JGYWN0b3J5O1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocGFydGlhbFN0YXRlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc09ic2VydmFibGUocGFydGlhbFN0YXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGF0Y2hTdGF0ZShwYXJ0aWFsU3RhdGUgYXMgT2JzZXJ2YWJsZTxQYXJ0aWFsPFRJbnRlcm5hbFN0YXRlPj4pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHBhcnRpYWxTdGF0ZSk7XG4gICAgICAgIGNvbnN0IGhhc09ic2VydmFibGUgPSBlbnRyaWVzLnNvbWUoKFtfLCB2YWx1ZV0pID0+IGlzT2JzZXJ2YWJsZSh2YWx1ZSkgJiYgIWlzLnJlZih2YWx1ZSkpO1xuXG4gICAgICAgIGlmICghaGFzT2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGF0Y2hTdGF0ZShwYXJ0aWFsU3RhdGUgYXMgUGFydGlhbDxUSW50ZXJuYWxTdGF0ZT4pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW3Jhd1ZhbHVlcywgb2JzZXJ2YWJsZVZhbHVlc10gPSBlbnRyaWVzLnJlZHVjZShcbiAgICAgICAgICAgIChyZXN1bHQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc09ic2VydmFibGUodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFsxXVtrZXkgYXMga2V5b2YgVEludGVybmFsU3RhdGVdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzBdW2tleSBhcyBrZXlvZiBUSW50ZXJuYWxTdGF0ZV0gPSB2YWx1ZSBhcyBUSW50ZXJuYWxTdGF0ZVtrZXlvZiBUSW50ZXJuYWxTdGF0ZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW3t9LCB7fV0gYXMgW1BhcnRpYWw8VEludGVybmFsU3RhdGU+LCBSZWNvcmQ8a2V5b2YgVEludGVybmFsU3RhdGUsIE9ic2VydmFibGVJbnB1dDxhbnk+Pl1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMocmF3VmFsdWVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnBhdGNoU3RhdGUocmF3VmFsdWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhvYnNlcnZhYmxlVmFsdWVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnBhdGNoU3RhdGUoY29tYmluZUxhdGVzdChvYnNlcnZhYmxlVmFsdWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgdXRpbGl0eSBjbGFzcyBtZXRob2QgdG8gc2VsZWN0IGEgc3RhdGUgb24gdGhlIHRlbXBsYXRlIGFzIE9ic2VydmFibGVcbiAgICAgKiAtIFRoaXMgbWV0aG9kIGFsd2F5cyBkZWJvdW5jZSB0aGUgT2JzZXJ2YWJsZVxuICAgICAqL1xuICAgIHNlbGVjdEtleTxUS2V5IGV4dGVuZHMga2V5b2YgVEludGVybmFsU3RhdGUgJiBzdHJpbmc+KFxuICAgICAgICBrZXk6IFRLZXksXG4gICAgICAgIHNraXBGaXJzdCA9IGZhbHNlXG4gICAgKTogT2JzZXJ2YWJsZTxUSW50ZXJuYWxTdGF0ZVtUS2V5XT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3QoKHMpID0+IHNba2V5XSwgeyBkZWJvdW5jZTogdHJ1ZSB9KS5waXBlKHNraXBGaXJzdCA/IHNraXBGaXJzdFVuZGVmaW5lZCgpIDogKHMpID0+IHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgdXRpbGl0eSBjbGFzcyBtZXRob2QgdG8gZ2V0IGEgc3RhdGUgb24gdGhlIHRlbXBsYXRlIGFzIGltcGVyYXRpdmUgVmFsdWVcbiAgICAgKi9cbiAgICByZWFkS2V5PFRLZXkgZXh0ZW5kcyBrZXlvZiBUSW50ZXJuYWxTdGF0ZSAmIHN0cmluZz4oa2V5OiBUS2V5KTogVEludGVybmFsU3RhdGVbVEtleV0ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkKChzKSA9PiBzW2tleV0pO1xuICAgIH1cbn1cbiJdfQ==