angular-three 0.0.2 → 0.0.4
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.
- package/attributes/README.md +3 -0
- package/attributes/index.d.ts +22 -0
- package/attributes/lib/buffer-attribute/buffer-attribute.d.ts +8 -0
- package/attributes/lib/color-attribute/color-attribute.d.ts +8 -0
- package/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.d.ts +8 -0
- package/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.d.ts +8 -0
- package/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.d.ts +8 -0
- package/attributes/lib/fog-attribute/fog-attribute.d.ts +8 -0
- package/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.d.ts +8 -0
- package/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.d.ts +8 -0
- package/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.d.ts +8 -0
- package/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.d.ts +8 -0
- package/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.d.ts +8 -0
- package/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.d.ts +8 -0
- package/attributes/lib/matrix3-attribute/matrix3-attribute.d.ts +8 -0
- package/attributes/lib/matrix4-attribute/matrix4-attribute.d.ts +8 -0
- package/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.d.ts +8 -0
- package/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.d.ts +8 -0
- package/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.d.ts +8 -0
- package/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.d.ts +8 -0
- package/attributes/lib/value-attribute/value-attribute.d.ts +8 -0
- package/attributes/lib/vector2-attribute/vector2-attribute.d.ts +8 -0
- package/attributes/lib/vector3-attribute/vector3-attribute.d.ts +8 -0
- package/attributes/lib/vector4-attribute/vector4-attribute.d.ts +8 -0
- package/audios/README.md +3 -0
- package/audios/index.d.ts +3 -0
- package/audios/lib/audio/audio.d.ts +49 -0
- package/audios/lib/audio-listener/audio-listener.d.ts +35 -0
- package/audios/lib/positional-audio/positional-audio.d.ts +49 -0
- package/cameras/README.md +3 -0
- package/cameras/index.d.ts +5 -0
- package/cameras/lib/array-camera/array-camera.d.ts +56 -0
- package/cameras/lib/cube-camera/cube-camera.d.ts +36 -0
- package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +54 -0
- package/cameras/lib/perspective-camera/perspective-camera.d.ts +55 -0
- package/cameras/lib/stereo-camera/stereo-camera.d.ts +42 -0
- package/esm2020/attributes/angular-three-attributes.mjs +5 -0
- package/esm2020/attributes/index.mjs +24 -0
- package/esm2020/attributes/lib/buffer-attribute/buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/color-attribute/color-attribute.mjs +25 -0
- package/esm2020/attributes/lib/float16-buffer-attribute/float16-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/float32-buffer-attribute/float32-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/float64-buffer-attribute/float64-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/fog-attribute/fog-attribute.mjs +25 -0
- package/esm2020/attributes/lib/fog-exp2-attribute/fog-exp2-attribute.mjs +25 -0
- package/esm2020/attributes/lib/instanced-buffer-attribute/instanced-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/int16-buffer-attribute/int16-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/int32-buffer-attribute/int32-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/int8-buffer-attribute/int8-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/interleaved-buffer-attribute/interleaved-buffer-attribute.mjs +29 -0
- package/esm2020/attributes/lib/matrix3-attribute/matrix3-attribute.mjs +25 -0
- package/esm2020/attributes/lib/matrix4-attribute/matrix4-attribute.mjs +25 -0
- package/esm2020/attributes/lib/uint16-buffer-attribute/uint16-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/uint32-buffer-attribute/uint32-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/uint8-buffer-attribute/uint8-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/uint8-clamped-buffer-attribute/uint8-clamped-buffer-attribute.mjs +25 -0
- package/esm2020/attributes/lib/value-attribute/value-attribute.mjs +27 -0
- package/esm2020/attributes/lib/vector2-attribute/vector2-attribute.mjs +25 -0
- package/esm2020/attributes/lib/vector3-attribute/vector3-attribute.mjs +25 -0
- package/esm2020/attributes/lib/vector4-attribute/vector4-attribute.mjs +25 -0
- package/esm2020/audios/angular-three-audios.mjs +5 -0
- package/esm2020/audios/index.mjs +5 -0
- package/esm2020/audios/lib/audio/audio.mjs +68 -0
- package/esm2020/audios/lib/audio-listener/audio-listener.mjs +65 -0
- package/esm2020/audios/lib/positional-audio/positional-audio.mjs +68 -0
- package/esm2020/cameras/angular-three-cameras.mjs +5 -0
- package/esm2020/cameras/index.mjs +7 -0
- package/esm2020/cameras/lib/array-camera/array-camera.mjs +67 -0
- package/esm2020/cameras/lib/cube-camera/cube-camera.mjs +55 -0
- package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +65 -0
- package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +66 -0
- package/esm2020/cameras/lib/stereo-camera/stereo-camera.mjs +61 -0
- package/esm2020/geometries/angular-three-geometries.mjs +5 -0
- package/esm2020/geometries/index.mjs +25 -0
- package/esm2020/geometries/lib/box-geometry/box-geometry.mjs +25 -0
- package/esm2020/geometries/lib/buffer-geometry/buffer-geometry.mjs +25 -0
- package/esm2020/geometries/lib/capsule-geometry/capsule-geometry.mjs +25 -0
- package/esm2020/geometries/lib/circle-geometry/circle-geometry.mjs +25 -0
- package/esm2020/geometries/lib/cone-geometry/cone-geometry.mjs +25 -0
- package/esm2020/geometries/lib/cylinder-geometry/cylinder-geometry.mjs +25 -0
- package/esm2020/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.mjs +25 -0
- package/esm2020/geometries/lib/edges-geometry/edges-geometry.mjs +25 -0
- package/esm2020/geometries/lib/extrude-geometry/extrude-geometry.mjs +25 -0
- package/esm2020/geometries/lib/icosahedron-geometry/icosahedron-geometry.mjs +25 -0
- package/esm2020/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.mjs +25 -0
- package/esm2020/geometries/lib/lathe-geometry/lathe-geometry.mjs +25 -0
- package/esm2020/geometries/lib/octahedron-geometry/octahedron-geometry.mjs +25 -0
- package/esm2020/geometries/lib/plane-geometry/plane-geometry.mjs +25 -0
- package/esm2020/geometries/lib/polyhedron-geometry/polyhedron-geometry.mjs +25 -0
- package/esm2020/geometries/lib/ring-geometry/ring-geometry.mjs +25 -0
- package/esm2020/geometries/lib/shape-geometry/shape-geometry.mjs +25 -0
- package/esm2020/geometries/lib/sphere-geometry/sphere-geometry.mjs +25 -0
- package/esm2020/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.mjs +25 -0
- package/esm2020/geometries/lib/torus-geometry/torus-geometry.mjs +25 -0
- package/esm2020/geometries/lib/torus-knot-geometry/torus-knot-geometry.mjs +25 -0
- package/esm2020/geometries/lib/tube-geometry/tube-geometry.mjs +25 -0
- package/esm2020/geometries/lib/wireframe-geometry/wireframe-geometry.mjs +25 -0
- package/esm2020/helpers/angular-three-helpers.mjs +5 -0
- package/esm2020/helpers/index.mjs +15 -0
- package/esm2020/helpers/lib/arrow-helper/arrow-helper.mjs +25 -0
- package/esm2020/helpers/lib/axes-helper/axes-helper.mjs +25 -0
- package/esm2020/helpers/lib/box-helper/box-helper.mjs +35 -0
- package/esm2020/helpers/lib/box3-helper/box3-helper.mjs +35 -0
- package/esm2020/helpers/lib/camera-helper/camera-helper.mjs +35 -0
- package/esm2020/helpers/lib/directional-light-helper/directional-light-helper.mjs +35 -0
- package/esm2020/helpers/lib/grid-helper/grid-helper.mjs +25 -0
- package/esm2020/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.mjs +35 -0
- package/esm2020/helpers/lib/plane-helper/plane-helper.mjs +35 -0
- package/esm2020/helpers/lib/point-light-helper/point-light-helper.mjs +35 -0
- package/esm2020/helpers/lib/polar-grid-helper/polar-grid-helper.mjs +25 -0
- package/esm2020/helpers/lib/skeleton-helper/skeleton-helper.mjs +35 -0
- package/esm2020/helpers/lib/spot-light-helper/spot-light-helper.mjs +35 -0
- package/esm2020/index.mjs +39 -2
- package/esm2020/lib/canvas.mjs +229 -0
- package/esm2020/lib/di/resize.mjs +19 -0
- package/esm2020/lib/di/window.mjs +13 -0
- package/esm2020/lib/directives/args.mjs +30 -0
- package/esm2020/lib/directives/cursor.mjs +35 -0
- package/esm2020/lib/directives/repeat.mjs +20 -0
- package/esm2020/lib/events.mjs +53 -0
- package/esm2020/lib/instance.mjs +368 -0
- package/esm2020/lib/pipes/math.mjs +15 -0
- package/esm2020/lib/pipes/pi.mjs +14 -0
- package/esm2020/lib/pipes/radian.mjs +14 -0
- package/esm2020/lib/pipes/side.mjs +22 -0
- package/esm2020/lib/ref.mjs +15 -0
- package/esm2020/lib/services/loader.mjs +45 -0
- package/esm2020/lib/services/resize.mjs +127 -0
- package/esm2020/lib/stores/component-store.mjs +137 -0
- package/esm2020/lib/stores/store.mjs +433 -0
- package/esm2020/lib/types.mjs +2 -0
- package/esm2020/lib/utils/apply-props.mjs +135 -0
- package/esm2020/lib/utils/build-graph.mjs +15 -0
- package/esm2020/lib/utils/camera.mjs +28 -0
- package/esm2020/lib/utils/capitalize.mjs +4 -0
- package/esm2020/lib/utils/check-update.mjs +22 -0
- package/esm2020/lib/utils/events.mjs +353 -0
- package/esm2020/lib/utils/get-instance-local-state.mjs +6 -0
- package/esm2020/lib/utils/inject.mjs +18 -0
- package/esm2020/lib/utils/instance.mjs +35 -0
- package/esm2020/lib/utils/is.mjs +54 -0
- package/esm2020/lib/utils/loop.mjs +139 -0
- package/esm2020/lib/utils/make.mjs +30 -0
- package/esm2020/lib/utils/mutate.mjs +24 -0
- package/esm2020/lib/utils/proxy.mjs +99 -0
- package/esm2020/lib/utils/renderer.mjs +15 -0
- package/esm2020/lights/angular-three-lights.mjs +5 -0
- package/esm2020/lights/index.mjs +11 -0
- package/esm2020/lights/lib/ambient-light/ambient-light.mjs +58 -0
- package/esm2020/lights/lib/ambient-light-probe/ambient-light-probe.mjs +59 -0
- package/esm2020/lights/lib/directional-light/directional-light.mjs +59 -0
- package/esm2020/lights/lib/hemisphere-light/hemisphere-light.mjs +60 -0
- package/esm2020/lights/lib/hemisphere-light-probe/hemisphere-light-probe.mjs +61 -0
- package/esm2020/lights/lib/light-probe/light-probe.mjs +59 -0
- package/esm2020/lights/lib/point-light/point-light.mjs +61 -0
- package/esm2020/lights/lib/rect-area-light/rect-area-light.mjs +61 -0
- package/esm2020/lights/lib/spot-light/spot-light.mjs +64 -0
- package/esm2020/materials/angular-three-materials.mjs +5 -0
- package/esm2020/materials/index.mjs +19 -0
- package/esm2020/materials/lib/line-basic-material/line-basic-material.mjs +76 -0
- package/esm2020/materials/lib/line-dashed-material/line-dashed-material.mjs +79 -0
- package/esm2020/materials/lib/mesh-basic-material/mesh-basic-material.mjs +88 -0
- package/esm2020/materials/lib/mesh-depth-material/mesh-depth-material.mjs +79 -0
- package/esm2020/materials/lib/mesh-distance-material/mesh-distance-material.mjs +79 -0
- package/esm2020/materials/lib/mesh-lambert-material/mesh-lambert-material.mjs +99 -0
- package/esm2020/materials/lib/mesh-matcap-material/mesh-matcap-material.mjs +85 -0
- package/esm2020/materials/lib/mesh-normal-material/mesh-normal-material.mjs +82 -0
- package/esm2020/materials/lib/mesh-phong-material/mesh-phong-material.mjs +102 -0
- package/esm2020/materials/lib/mesh-physical-material/mesh-physical-material.mjs +118 -0
- package/esm2020/materials/lib/mesh-standard-material/mesh-standard-material.mjs +99 -0
- package/esm2020/materials/lib/mesh-toon-material/mesh-toon-material.mjs +95 -0
- package/esm2020/materials/lib/points-material/points-material.mjs +77 -0
- package/esm2020/materials/lib/raw-shader-material/raw-shader-material.mjs +82 -0
- package/esm2020/materials/lib/shader-material/shader-material.mjs +82 -0
- package/esm2020/materials/lib/shadow-material/shadow-material.mjs +73 -0
- package/esm2020/materials/lib/sprite-material/sprite-material.mjs +77 -0
- package/esm2020/objects/angular-three-objects.mjs +5 -0
- package/esm2020/objects/index.mjs +14 -0
- package/esm2020/objects/lib/bone/bone.mjs +54 -0
- package/esm2020/objects/lib/group/group.mjs +54 -0
- package/esm2020/objects/lib/instanced-mesh/instanced-mesh.mjs +63 -0
- package/esm2020/objects/lib/line/line.mjs +58 -0
- package/esm2020/objects/lib/line-loop/line-loop.mjs +58 -0
- package/esm2020/objects/lib/line-segments/line-segments.mjs +58 -0
- package/esm2020/objects/lib/lod/lod.mjs +56 -0
- package/esm2020/objects/lib/mesh/mesh.mjs +58 -0
- package/esm2020/objects/lib/points/points.mjs +58 -0
- package/esm2020/objects/lib/skeleton/skeleton.mjs +40 -0
- package/esm2020/objects/lib/skinned-mesh/skinned-mesh.mjs +62 -0
- package/esm2020/objects/lib/sprite/sprite.mjs +57 -0
- package/esm2020/primitives/angular-three-primitives.mjs +5 -0
- package/esm2020/primitives/index.mjs +3 -0
- package/esm2020/primitives/lib/object-primitive/object-primitive.mjs +54 -0
- package/esm2020/primitives/lib/primitive/primitive.mjs +37 -0
- package/esm2020/stats/angular-three-stats.mjs +5 -0
- package/esm2020/stats/index.mjs +2 -0
- package/esm2020/stats/lib/stats/stats.mjs +54 -0
- package/esm2020/textures/angular-three-textures.mjs +5 -0
- package/esm2020/textures/index.mjs +12 -0
- package/esm2020/textures/lib/canvas-texture/canvas-texture.mjs +25 -0
- package/esm2020/textures/lib/compressed-array-texture/compressed-array-texture.mjs +25 -0
- package/esm2020/textures/lib/compressed-texture/compressed-texture.mjs +25 -0
- package/esm2020/textures/lib/cube-texture/cube-texture.mjs +25 -0
- package/esm2020/textures/lib/data-array-texture/data-array-texture.mjs +25 -0
- package/esm2020/textures/lib/data-texture/data-texture.mjs +25 -0
- package/esm2020/textures/lib/data3-dtexture/data3-dtexture.mjs +25 -0
- package/esm2020/textures/lib/depth-texture/depth-texture.mjs +25 -0
- package/esm2020/textures/lib/framebuffer-texture/framebuffer-texture.mjs +25 -0
- package/esm2020/textures/lib/video-texture/video-texture.mjs +25 -0
- package/fesm2015/angular-three-attributes.mjs +462 -0
- package/fesm2015/angular-three-attributes.mjs.map +1 -0
- package/fesm2015/angular-three-audios.mjs +201 -0
- package/fesm2015/angular-three-audios.mjs.map +1 -0
- package/fesm2015/angular-three-cameras.mjs +304 -0
- package/fesm2015/angular-three-cameras.mjs.map +1 -0
- package/fesm2015/angular-three-geometries.mjs +475 -0
- package/fesm2015/angular-three-geometries.mjs.map +1 -0
- package/fesm2015/angular-three-helpers.mjs +365 -0
- package/fesm2015/angular-three-helpers.mjs.map +1 -0
- package/fesm2015/angular-three-lights.mjs +511 -0
- package/fesm2015/angular-three-lights.mjs.map +1 -0
- package/fesm2015/angular-three-materials.mjs +1402 -0
- package/fesm2015/angular-three-materials.mjs.map +1 -0
- package/fesm2015/angular-three-objects.mjs +630 -0
- package/fesm2015/angular-three-objects.mjs.map +1 -0
- package/fesm2015/angular-three-primitives.mjs +95 -0
- package/fesm2015/angular-three-primitives.mjs.map +1 -0
- package/fesm2015/angular-three-stats.mjs +62 -0
- package/fesm2015/angular-three-stats.mjs.map +1 -0
- package/fesm2015/angular-three-textures.mjs +215 -0
- package/fesm2015/angular-three-textures.mjs.map +1 -0
- package/fesm2015/angular-three.mjs +2448 -10
- package/fesm2015/angular-three.mjs.map +1 -1
- package/fesm2020/angular-three-attributes.mjs +462 -0
- package/fesm2020/angular-three-attributes.mjs.map +1 -0
- package/fesm2020/angular-three-audios.mjs +201 -0
- package/fesm2020/angular-three-audios.mjs.map +1 -0
- package/fesm2020/angular-three-cameras.mjs +304 -0
- package/fesm2020/angular-three-cameras.mjs.map +1 -0
- package/fesm2020/angular-three-geometries.mjs +475 -0
- package/fesm2020/angular-three-geometries.mjs.map +1 -0
- package/fesm2020/angular-three-helpers.mjs +365 -0
- package/fesm2020/angular-three-helpers.mjs.map +1 -0
- package/fesm2020/angular-three-lights.mjs +511 -0
- package/fesm2020/angular-three-lights.mjs.map +1 -0
- package/fesm2020/angular-three-materials.mjs +1402 -0
- package/fesm2020/angular-three-materials.mjs.map +1 -0
- package/fesm2020/angular-three-objects.mjs +630 -0
- package/fesm2020/angular-three-objects.mjs.map +1 -0
- package/fesm2020/angular-three-primitives.mjs +95 -0
- package/fesm2020/angular-three-primitives.mjs.map +1 -0
- package/fesm2020/angular-three-stats.mjs +62 -0
- package/fesm2020/angular-three-stats.mjs.map +1 -0
- package/fesm2020/angular-three-textures.mjs +215 -0
- package/fesm2020/angular-three-textures.mjs.map +1 -0
- package/fesm2020/angular-three.mjs +2462 -10
- package/fesm2020/angular-three.mjs.map +1 -1
- package/geometries/README.md +3 -0
- package/geometries/index.d.ts +23 -0
- package/geometries/lib/box-geometry/box-geometry.d.ts +8 -0
- package/geometries/lib/buffer-geometry/buffer-geometry.d.ts +8 -0
- package/geometries/lib/capsule-geometry/capsule-geometry.d.ts +8 -0
- package/geometries/lib/circle-geometry/circle-geometry.d.ts +8 -0
- package/geometries/lib/cone-geometry/cone-geometry.d.ts +8 -0
- package/geometries/lib/cylinder-geometry/cylinder-geometry.d.ts +8 -0
- package/geometries/lib/dodecahedron-geometry/dodecahedron-geometry.d.ts +8 -0
- package/geometries/lib/edges-geometry/edges-geometry.d.ts +8 -0
- package/geometries/lib/extrude-geometry/extrude-geometry.d.ts +8 -0
- package/geometries/lib/icosahedron-geometry/icosahedron-geometry.d.ts +8 -0
- package/geometries/lib/instanced-buffer-geometry/instanced-buffer-geometry.d.ts +8 -0
- package/geometries/lib/lathe-geometry/lathe-geometry.d.ts +8 -0
- package/geometries/lib/octahedron-geometry/octahedron-geometry.d.ts +8 -0
- package/geometries/lib/plane-geometry/plane-geometry.d.ts +8 -0
- package/geometries/lib/polyhedron-geometry/polyhedron-geometry.d.ts +8 -0
- package/geometries/lib/ring-geometry/ring-geometry.d.ts +8 -0
- package/geometries/lib/shape-geometry/shape-geometry.d.ts +8 -0
- package/geometries/lib/sphere-geometry/sphere-geometry.d.ts +8 -0
- package/geometries/lib/tetrahedron-geometry/tetrahedron-geometry.d.ts +8 -0
- package/geometries/lib/torus-geometry/torus-geometry.d.ts +8 -0
- package/geometries/lib/torus-knot-geometry/torus-knot-geometry.d.ts +8 -0
- package/geometries/lib/tube-geometry/tube-geometry.d.ts +8 -0
- package/geometries/lib/wireframe-geometry/wireframe-geometry.d.ts +8 -0
- package/helpers/README.md +3 -0
- package/helpers/index.d.ts +13 -0
- package/helpers/lib/arrow-helper/arrow-helper.d.ts +8 -0
- package/helpers/lib/axes-helper/axes-helper.d.ts +8 -0
- package/helpers/lib/box-helper/box-helper.d.ts +8 -0
- package/helpers/lib/box3-helper/box3-helper.d.ts +8 -0
- package/helpers/lib/camera-helper/camera-helper.d.ts +8 -0
- package/helpers/lib/directional-light-helper/directional-light-helper.d.ts +8 -0
- package/helpers/lib/grid-helper/grid-helper.d.ts +8 -0
- package/helpers/lib/hemisphere-light-helper/hemisphere-light-helper.d.ts +8 -0
- package/helpers/lib/plane-helper/plane-helper.d.ts +8 -0
- package/helpers/lib/point-light-helper/point-light-helper.d.ts +8 -0
- package/helpers/lib/polar-grid-helper/polar-grid-helper.d.ts +8 -0
- package/helpers/lib/skeleton-helper/skeleton-helper.d.ts +8 -0
- package/helpers/lib/spot-light-helper/spot-light-helper.d.ts +8 -0
- package/index.d.ts +38 -1
- package/lib/canvas.d.ts +46 -0
- package/lib/di/resize.d.ts +12 -0
- package/lib/di/window.d.ts +1 -0
- package/lib/directives/args.d.ts +19 -0
- package/lib/directives/cursor.d.ts +7 -0
- package/lib/directives/repeat.d.ts +7 -0
- package/lib/events.d.ts +2 -0
- package/lib/instance.d.ts +81 -0
- package/lib/pipes/math.d.ts +7 -0
- package/lib/pipes/pi.d.ts +7 -0
- package/lib/pipes/radian.d.ts +7 -0
- package/lib/pipes/side.d.ts +8 -0
- package/lib/ref.d.ts +5 -0
- package/lib/services/loader.d.ts +11 -0
- package/lib/services/resize.d.ts +19 -0
- package/lib/stores/component-store.d.ts +69 -0
- package/lib/stores/store.d.ts +32 -0
- package/lib/types.d.ts +358 -0
- package/lib/utils/apply-props.d.ts +6 -0
- package/lib/utils/build-graph.d.ts +3 -0
- package/lib/utils/camera.d.ts +4 -0
- package/lib/utils/capitalize.d.ts +1 -0
- package/lib/utils/check-update.d.ts +2 -0
- package/lib/utils/events.d.ts +6 -0
- package/lib/utils/get-instance-local-state.d.ts +2 -0
- package/lib/utils/inject.d.ts +9 -0
- package/lib/utils/instance.d.ts +4 -0
- package/lib/utils/is.d.ts +21 -0
- package/lib/utils/loop.d.ts +32 -0
- package/lib/utils/make.d.ts +4 -0
- package/lib/utils/mutate.d.ts +2 -0
- package/lib/utils/proxy.d.ts +7 -0
- package/lib/utils/renderer.d.ts +3 -0
- package/lights/README.md +3 -0
- package/lights/index.d.ts +9 -0
- package/lights/lib/ambient-light/ambient-light.d.ts +39 -0
- package/lights/lib/ambient-light-probe/ambient-light-probe.d.ts +40 -0
- package/lights/lib/directional-light/directional-light.d.ts +40 -0
- package/lights/lib/hemisphere-light/hemisphere-light.d.ts +41 -0
- package/lights/lib/hemisphere-light-probe/hemisphere-light-probe.d.ts +42 -0
- package/lights/lib/light-probe/light-probe.d.ts +40 -0
- package/lights/lib/point-light/point-light.d.ts +42 -0
- package/lights/lib/rect-area-light/rect-area-light.d.ts +42 -0
- package/lights/lib/spot-light/spot-light.d.ts +45 -0
- package/materials/README.md +3 -0
- package/materials/index.d.ts +17 -0
- package/materials/lib/line-basic-material/line-basic-material.d.ts +55 -0
- package/materials/lib/line-dashed-material/line-dashed-material.d.ts +58 -0
- package/materials/lib/mesh-basic-material/mesh-basic-material.d.ts +67 -0
- package/materials/lib/mesh-depth-material/mesh-depth-material.d.ts +58 -0
- package/materials/lib/mesh-distance-material/mesh-distance-material.d.ts +58 -0
- package/materials/lib/mesh-lambert-material/mesh-lambert-material.d.ts +78 -0
- package/materials/lib/mesh-matcap-material/mesh-matcap-material.d.ts +64 -0
- package/materials/lib/mesh-normal-material/mesh-normal-material.d.ts +61 -0
- package/materials/lib/mesh-phong-material/mesh-phong-material.d.ts +81 -0
- package/materials/lib/mesh-physical-material/mesh-physical-material.d.ts +97 -0
- package/materials/lib/mesh-standard-material/mesh-standard-material.d.ts +78 -0
- package/materials/lib/mesh-toon-material/mesh-toon-material.d.ts +74 -0
- package/materials/lib/points-material/points-material.d.ts +56 -0
- package/materials/lib/raw-shader-material/raw-shader-material.d.ts +68 -0
- package/materials/lib/shader-material/shader-material.d.ts +68 -0
- package/materials/lib/shadow-material/shadow-material.d.ts +52 -0
- package/materials/lib/sprite-material/sprite-material.d.ts +56 -0
- package/objects/README.md +3 -0
- package/objects/index.d.ts +12 -0
- package/objects/lib/bone/bone.d.ts +35 -0
- package/objects/lib/group/group.d.ts +35 -0
- package/objects/lib/instanced-mesh/instanced-mesh.d.ts +44 -0
- package/objects/lib/line/line.d.ts +41 -0
- package/objects/lib/line-loop/line-loop.d.ts +41 -0
- package/objects/lib/line-segments/line-segments.d.ts +41 -0
- package/objects/lib/lod/lod.d.ts +40 -0
- package/objects/lib/mesh/mesh.d.ts +41 -0
- package/objects/lib/points/points.d.ts +41 -0
- package/objects/lib/skeleton/skeleton.d.ts +16 -0
- package/objects/lib/skinned-mesh/skinned-mesh.d.ts +45 -0
- package/objects/lib/sprite/sprite.d.ts +38 -0
- package/package.json +93 -2
- package/primitives/README.md +3 -0
- package/primitives/index.d.ts +2 -0
- package/primitives/lib/object-primitive/object-primitive.d.ts +35 -0
- package/primitives/lib/primitive/primitive.d.ts +10 -0
- package/schematics/src/generators/init/generator.d.ts +1 -1
- package/schematics/src/generators/init/generator.js +4 -4
- package/schematics/src/generators/init/generator.js.map +1 -1
- package/stats/README.md +3 -0
- package/stats/index.d.ts +1 -0
- package/stats/lib/stats/stats.d.ts +16 -0
- package/textures/README.md +3 -0
- package/textures/index.d.ts +10 -0
- package/textures/lib/canvas-texture/canvas-texture.d.ts +8 -0
- package/textures/lib/compressed-array-texture/compressed-array-texture.d.ts +8 -0
- package/textures/lib/compressed-texture/compressed-texture.d.ts +8 -0
- package/textures/lib/cube-texture/cube-texture.d.ts +8 -0
- package/textures/lib/data-array-texture/data-array-texture.d.ts +8 -0
- package/textures/lib/data-texture/data-texture.d.ts +8 -0
- package/textures/lib/data3-dtexture/data3-dtexture.d.ts +8 -0
- package/textures/lib/depth-texture/depth-texture.d.ts +8 -0
- package/textures/lib/framebuffer-texture/framebuffer-texture.d.ts +8 -0
- package/textures/lib/video-texture/video-texture.d.ts +8 -0
- package/esm2020/lib/angular-three.module.mjs +0 -15
- 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==
|