angular-three-soba 1.14.0 → 2.0.0-beta.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.
- package/README.md +2 -2
- package/abstractions/{lib/billboard → billboard}/billboard.d.ts +14 -4
- package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +25 -0
- package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +25 -0
- package/abstractions/{lib/edges → edges}/edges.d.ts +11 -7
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-helper.d.ts +16 -23
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +30 -0
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +32 -0
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/gizmo-viewcube.d.ts +2 -3
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport-axis.d.ts +28 -9
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport.d.ts +23 -4
- package/abstractions/index.d.ts +11 -11
- package/abstractions/line/line-input.d.ts +42 -0
- package/abstractions/line/line.d.ts +35 -0
- package/abstractions/{lib/quadratic-bezier-line → quadratic-bezier-line}/quadratic-bezier-line.d.ts +12 -8
- package/abstractions/text/text.d.ts +77 -0
- package/abstractions/text-3d/text-3d.d.ts +74 -0
- package/cameras/{lib/camera → camera}/camera-content.d.ts +1 -1
- package/cameras/{lib/camera → camera}/camera.d.ts +12 -8
- package/cameras/cube-camera/cube-camera.d.ts +42 -0
- package/cameras/index.d.ts +5 -4
- package/cameras/{lib/orthographic-camera → orthographic-camera}/orthographic-camera.d.ts +14 -5
- package/controls/index.d.ts +1 -1
- package/controls/{lib/orbit-controls → orbit-controls}/orbit-controls.d.ts +19 -11
- package/esm2022/abstractions/angular-three-soba-abstractions.mjs +1 -1
- package/esm2022/abstractions/billboard/billboard.mjs +71 -0
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +131 -0
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +113 -0
- package/esm2022/abstractions/edges/edges.mjs +93 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +210 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +95 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +155 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +62 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +80 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +206 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +273 -0
- package/esm2022/abstractions/index.mjs +12 -12
- package/esm2022/abstractions/line/line-input.mjs +113 -0
- package/esm2022/abstractions/line/line.mjs +165 -0
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +128 -0
- package/esm2022/abstractions/text/text.mjs +275 -0
- package/esm2022/abstractions/text-3d/text-3d.mjs +167 -0
- package/esm2022/angular-three-soba.mjs +1 -1
- package/esm2022/cameras/angular-three-soba-cameras.mjs +1 -1
- package/esm2022/cameras/camera/camera-content.mjs +21 -0
- package/esm2022/cameras/camera/camera.mjs +71 -0
- package/esm2022/cameras/cube-camera/cube-camera.mjs +131 -0
- package/esm2022/cameras/index.mjs +6 -5
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +99 -0
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +47 -0
- package/esm2022/controls/angular-three-soba-controls.mjs +1 -1
- package/esm2022/controls/index.mjs +2 -2
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +165 -0
- package/esm2022/index.mjs +1 -1
- package/esm2022/loaders/angular-three-soba-loaders.mjs +1 -1
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +33 -0
- package/esm2022/loaders/index.mjs +5 -6
- package/esm2022/loaders/loader/loader.mjs +133 -0
- package/esm2022/loaders/progress/progress.mjs +52 -0
- package/esm2022/loaders/texture-loader/texture-loader.mjs +28 -0
- package/esm2022/materials/angular-three-soba-materials.mjs +1 -1
- package/esm2022/materials/index.mjs +6 -6
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +73 -0
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +383 -0
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +168 -0
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +257 -0
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +66 -0
- package/esm2022/misc/angular-three-soba-misc.mjs +1 -1
- package/esm2022/misc/animations/animations.mjs +55 -0
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +24 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +46 -0
- package/esm2022/misc/fbo/fbo.mjs +47 -0
- package/esm2022/misc/index.mjs +5 -5
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +46 -0
- package/esm2022/performance/adaptive/adaptive-events.mjs +31 -0
- package/esm2022/performance/angular-three-soba-performance.mjs +1 -1
- package/esm2022/performance/detailed/detailed.mjs +61 -0
- package/esm2022/performance/index.mjs +7 -5
- package/esm2022/performance/instances/instance.mjs +48 -0
- package/esm2022/performance/instances/instances.mjs +189 -0
- package/esm2022/performance/instances/position-mesh.mjs +52 -0
- package/esm2022/performance/stats/stats.mjs +79 -0
- package/esm2022/shaders/angular-three-soba-shaders.mjs +1 -1
- package/esm2022/shaders/blur-pass/blur-pass.mjs +61 -0
- package/esm2022/shaders/caustics-material/caustics-material.mjs +128 -0
- package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +33 -0
- package/esm2022/shaders/convolution-material/convolution-material.mjs +94 -0
- package/esm2022/shaders/discard-material/discard-material.mjs +3 -0
- package/esm2022/shaders/index.mjs +15 -15
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +55 -0
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +223 -0
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +170 -0
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +268 -0
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +37 -0
- package/esm2022/shaders/shader-material/shader-material.mjs +34 -0
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +33 -0
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +47 -0
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +86 -0
- package/esm2022/shaders/star-field-material/star-field-material.mjs +32 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +283 -0
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +108 -0
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +208 -0
- package/esm2022/staging/angular-three-soba-staging.mjs +1 -1
- package/esm2022/staging/bounds/bounds.mjs +307 -0
- package/esm2022/staging/camera-shake/camera-shake.mjs +117 -0
- package/esm2022/staging/caustics/caustisc.mjs +384 -0
- package/esm2022/staging/center/center.mjs +148 -0
- package/esm2022/staging/cloud/cloud.mjs +164 -0
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +249 -0
- package/esm2022/staging/environment/assets.mjs +13 -0
- package/esm2022/staging/environment/environment-cube.mjs +49 -0
- package/esm2022/staging/environment/environment-ground.mjs +43 -0
- package/esm2022/staging/environment/environment-input.mjs +106 -0
- package/esm2022/staging/environment/environment-map.mjs +53 -0
- package/esm2022/staging/environment/environment-portal.mjs +135 -0
- package/esm2022/staging/environment/environment.mjs +78 -0
- package/esm2022/staging/environment/utils.mjs +84 -0
- package/esm2022/staging/float/float.mjs +82 -0
- package/esm2022/staging/index.mjs +18 -18
- package/esm2022/staging/sky/sky.mjs +114 -0
- package/esm2022/staging/sparkles/sparkles.mjs +161 -0
- package/esm2022/staging/spot-light/spot-light-input.mjs +75 -0
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +57 -0
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +256 -0
- package/esm2022/staging/spot-light/spot-light.mjs +94 -0
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +101 -0
- package/esm2022/staging/stage/stage.mjs +374 -0
- package/esm2022/staging/stars/stars.mjs +148 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +1116 -890
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +126 -122
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +72 -54
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +147 -131
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +340 -258
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +140 -123
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performance.mjs +383 -106
- package/fesm2022/angular-three-soba-performance.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs +57 -9
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +1609 -1561
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba.mjs.map +1 -1
- package/loaders/gltf-loader/gltf-loader.d.ts +9 -0
- package/loaders/index.d.ts +4 -5
- package/loaders/{lib/loader → loader}/loader.d.ts +20 -15
- package/loaders/progress/progress.d.ts +9 -0
- package/loaders/texture-loader/texture-loader.d.ts +7 -0
- package/materials/index.d.ts +5 -5
- package/materials/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +11 -5
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +81 -0
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +50 -0
- package/materials/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +51 -6
- package/materials/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +9 -3
- package/misc/animations/animations.d.ts +13 -0
- package/misc/{lib/bake-shadows → bake-shadows}/bake-shadows.d.ts +2 -5
- package/misc/depth-buffer/depth-buffer.d.ts +9 -0
- package/misc/{lib/fbo → fbo}/fbo.d.ts +4 -2
- package/misc/index.d.ts +4 -4
- package/package.json +25 -23
- package/performance/{lib/adaptive → adaptive}/adaptive-dpr.d.ts +4 -7
- package/performance/{lib/adaptive → adaptive}/adaptive-events.d.ts +2 -6
- package/performance/detailed/detailed.d.ts +20 -0
- package/performance/index.d.ts +6 -4
- package/performance/instances/instance.d.ts +9 -0
- package/performance/instances/instances.d.ts +35 -0
- package/performance/instances/position-mesh.d.ts +10 -0
- package/performance/{lib/stats → stats}/stats.d.ts +10 -7
- package/plugin/package.json +1 -1
- package/plugin/src/generators/init/compat.js.map +1 -1
- package/plugin/src/generators/init/init.d.ts +1 -1
- package/plugin/src/generators/init/init.js +1 -1
- package/plugin/src/generators/init/init.js.map +1 -1
- package/plugin/src/index.js.map +1 -1
- package/shaders/{lib/blur-pass → blur-pass}/blur-pass.d.ts +2 -2
- package/shaders/index.d.ts +14 -14
- package/shaders/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +1 -1
- package/shaders/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +1 -0
- package/shaders/{lib/soft-shadow-material → soft-shadow-material}/soft-shadow-material.d.ts +2 -2
- package/shaders/sparkles-material/sparkles-material.d.ts +3 -0
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/accumulative-shadows.d.ts +55 -17
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/progressive-light-map.d.ts +2 -2
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/randomized-lights.d.ts +45 -10
- package/staging/{lib/bounds → bounds}/bounds.d.ts +32 -22
- package/staging/{lib/camera-shake → camera-shake}/camera-shake.d.ts +15 -11
- package/staging/{lib/caustics/caustics.d.ts → caustics/caustisc.d.ts} +36 -13
- package/staging/{lib/center → center}/center.d.ts +30 -8
- package/staging/cloud/cloud.d.ts +48 -0
- package/staging/{lib/contact-shadows → contact-shadows}/contact-shadows.d.ts +38 -10
- package/staging/environment/environment-cube.d.ts +11 -0
- package/staging/environment/environment-ground.d.ts +13 -0
- package/staging/environment/environment-input.d.ts +68 -0
- package/staging/environment/environment-map.d.ts +11 -0
- package/staging/{lib/environment → environment}/environment-portal.d.ts +5 -7
- package/staging/{lib/environment → environment}/environment.d.ts +2 -2
- package/staging/environment/utils.d.ts +7 -0
- package/staging/float/float.d.ts +27 -0
- package/staging/index.d.ts +17 -17
- package/staging/{lib/sky → sky}/sky.d.ts +26 -5
- package/staging/{lib/sparkles → sparkles}/sparkles.d.ts +30 -10
- package/staging/{lib/spot-light → spot-light}/spot-light-input.d.ts +24 -2
- package/staging/{lib/spot-light/shadow-mesh-input.d.ts → spot-light/spot-light-shadow-mesh-input.d.ts} +18 -3
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +38 -0
- package/staging/{lib/spot-light → spot-light}/spot-light.d.ts +11 -5
- package/staging/{lib/spot-light → spot-light}/volumetric-mesh.d.ts +8 -5
- package/staging/{lib/stage → stage}/stage.d.ts +33 -14
- package/staging/{lib/stars → stars}/stars.d.ts +21 -7
- package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +0 -15
- package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +0 -15
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -16
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -24
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -14
- package/abstractions/lib/line/line-input.d.ts +0 -19
- package/abstractions/lib/line/line.d.ts +0 -21
- package/abstractions/lib/text/text.d.ts +0 -21
- package/abstractions/lib/text-3d/text-3d.d.ts +0 -39
- package/assets/default-spot-light-shadow.glsl +0 -10
- package/cameras/lib/cube-camera/cube-camera.d.ts +0 -27
- package/esm2022/abstractions/lib/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -120
- package/esm2022/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -99
- package/esm2022/abstractions/lib/edges/edges.mjs +0 -96
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -213
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -92
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -184
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -46
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -134
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -267
- package/esm2022/abstractions/lib/line/line-input.mjs +0 -76
- package/esm2022/abstractions/lib/line/line.mjs +0 -133
- package/esm2022/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
- package/esm2022/abstractions/lib/text/text.mjs +0 -115
- package/esm2022/abstractions/lib/text-3d/text-3d.mjs +0 -145
- package/esm2022/cameras/lib/camera/camera-content.mjs +0 -21
- package/esm2022/cameras/lib/camera/camera.mjs +0 -75
- package/esm2022/cameras/lib/cube-camera/cube-camera.mjs +0 -131
- package/esm2022/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -93
- package/esm2022/cameras/lib/perspective-camera/perspective-camera.mjs +0 -47
- package/esm2022/controls/lib/orbit-controls/orbit-controls.mjs +0 -147
- package/esm2022/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +0 -10
- package/esm2022/loaders/lib/gltf-loader/gltf-loader.mjs +0 -32
- package/esm2022/loaders/lib/loader/loader.mjs +0 -134
- package/esm2022/loaders/lib/progress/progress.mjs +0 -39
- package/esm2022/loaders/lib/texture-loader/texture-loader.mjs +0 -19
- package/esm2022/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -75
- package/esm2022/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -328
- package/esm2022/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -158
- package/esm2022/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -238
- package/esm2022/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/misc/lib/animations/animations.mjs +0 -52
- package/esm2022/misc/lib/bake-shadows/bake-shadows.mjs +0 -26
- package/esm2022/misc/lib/depth-buffer/depth-buffer.mjs +0 -39
- package/esm2022/misc/lib/fbo/fbo.mjs +0 -39
- package/esm2022/performance/lib/adaptive/adaptive-dpr.mjs +0 -47
- package/esm2022/performance/lib/adaptive/adaptive-events.mjs +0 -37
- package/esm2022/performance/lib/detailed/detailed.mjs +0 -54
- package/esm2022/performance/lib/stats/stats.mjs +0 -80
- package/esm2022/shaders/lib/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/lib/caustics-material/caustics-material.mjs +0 -128
- package/esm2022/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -33
- package/esm2022/shaders/lib/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/lib/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -55
- package/esm2022/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -169
- package/esm2022/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/lib/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -33
- package/esm2022/shaders/lib/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/lib/star-field-material/star-field-material.mjs +0 -32
- package/esm2022/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -249
- package/esm2022/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -201
- package/esm2022/staging/lib/bounds/bounds.mjs +0 -284
- package/esm2022/staging/lib/camera-shake/camera-shake.mjs +0 -122
- package/esm2022/staging/lib/caustics/caustics.mjs +0 -364
- package/esm2022/staging/lib/center/center.mjs +0 -143
- package/esm2022/staging/lib/cloud/cloud.mjs +0 -160
- package/esm2022/staging/lib/contact-shadows/contact-shadows.mjs +0 -228
- package/esm2022/staging/lib/environment/assets.mjs +0 -13
- package/esm2022/staging/lib/environment/environment-cube.mjs +0 -41
- package/esm2022/staging/lib/environment/environment-ground.mjs +0 -67
- package/esm2022/staging/lib/environment/environment-inputs.mjs +0 -87
- package/esm2022/staging/lib/environment/environment-map.mjs +0 -39
- package/esm2022/staging/lib/environment/environment-portal.mjs +0 -111
- package/esm2022/staging/lib/environment/environment.mjs +0 -165
- package/esm2022/staging/lib/environment/utils.mjs +0 -70
- package/esm2022/staging/lib/float/float.mjs +0 -77
- package/esm2022/staging/lib/sky/sky.mjs +0 -109
- package/esm2022/staging/lib/sparkles/sparkles.mjs +0 -210
- package/esm2022/staging/lib/spot-light/common.mjs +0 -42
- package/esm2022/staging/lib/spot-light/shadow-mesh-input.mjs +0 -51
- package/esm2022/staging/lib/spot-light/spot-light-input.mjs +0 -62
- package/esm2022/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -74
- package/esm2022/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -126
- package/esm2022/staging/lib/spot-light/spot-light-shadow.mjs +0 -63
- package/esm2022/staging/lib/spot-light/spot-light.mjs +0 -117
- package/esm2022/staging/lib/spot-light/volumetric-mesh.mjs +0 -86
- package/esm2022/staging/lib/stage/stage.mjs +0 -368
- package/esm2022/staging/lib/stars/stars.mjs +0 -140
- package/loaders/lib/cube-texture-loader/cube-texture-loader.d.ts +0 -3
- package/loaders/lib/gltf-loader/gltf-loader.d.ts +0 -8
- package/loaders/lib/progress/progress.d.ts +0 -16
- package/loaders/lib/texture-loader/texture-loader.d.ts +0 -5
- package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +0 -41
- package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +0 -28
- package/misc/lib/animations/animations.d.ts +0 -13
- package/misc/lib/depth-buffer/depth-buffer.d.ts +0 -7
- package/performance/lib/detailed/detailed.d.ts +0 -13
- package/staging/lib/cloud/cloud.d.ts +0 -23
- package/staging/lib/environment/environment-cube.d.ts +0 -11
- package/staging/lib/environment/environment-ground.d.ts +0 -9
- package/staging/lib/environment/environment-inputs.d.ts +0 -28
- package/staging/lib/environment/environment-map.d.ts +0 -10
- package/staging/lib/environment/utils.d.ts +0 -8
- package/staging/lib/float/float.d.ts +0 -16
- package/staging/lib/spot-light/common.d.ts +0 -3
- package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +0 -14
- package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +0 -25
- package/staging/lib/spot-light/spot-light-shadow.d.ts +0 -6
- /package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/constants.d.ts +0 -0
- /package/cameras/{lib/perspective-camera → perspective-camera}/perspective-camera.d.ts +0 -0
- /package/plugin/{README.md → libs/plugin/README.md} +0 -0
- /package/shaders/{lib/caustics-material → caustics-material}/caustics-material.d.ts +0 -0
- /package/shaders/{lib/caustics-projection-material → caustics-material}/caustics-projection-material.d.ts +0 -0
- /package/shaders/{lib/convolution-material → convolution-material}/convolution-material.d.ts +0 -0
- /package/shaders/{lib/discard-material → discard-material}/discard-material.d.ts +0 -0
- /package/shaders/{lib/mesh-reflector-material → mesh-reflector-material}/mesh-reflector-material.d.ts +0 -0
- /package/shaders/{lib/mesh-refraction-material → mesh-refraction-material}/mesh-refraction-material.d.ts +0 -0
- /package/shaders/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +0 -0
- /package/shaders/{lib/shader-material → shader-material}/shader-material.d.ts +0 -0
- /package/shaders/{lib/spot-light-material → spot-light-material}/spot-light-material.d.ts +0 -0
- /package/shaders/{lib/star-field-material → star-field-material}/star-field-material.d.ts +0 -0
- /package/staging/{lib/environment → environment}/assets.d.ts +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ChangeDetectorRef, DestroyRef, computed, effect, inject, runInInjectionContext, } from '@angular/core';
|
|
2
|
+
import { assertInjectionContext, injectNgtLoader, injectNgtRef, is, safeDetectChanges } from 'angular-three';
|
|
3
|
+
import { CubeReflectionMapping, CubeTextureLoader, EquirectangularReflectionMapping, LinearEncoding, sRGBEncoding, } from 'three';
|
|
4
|
+
import { RGBELoader } from 'three-stdlib';
|
|
5
|
+
import { ngtsEnvironmentPresetsObj } from './assets';
|
|
6
|
+
function resolveScene(scene) {
|
|
7
|
+
return is.ref(scene) ? scene.nativeElement : scene;
|
|
8
|
+
}
|
|
9
|
+
export function setEnvProps(background, scene, defaultScene, texture, blur = 0) {
|
|
10
|
+
const target = resolveScene(scene || defaultScene);
|
|
11
|
+
const oldbg = target.background;
|
|
12
|
+
const oldenv = target.environment;
|
|
13
|
+
const oldBlur = target.backgroundBlurriness || 0;
|
|
14
|
+
if (background !== 'only')
|
|
15
|
+
target.environment = texture;
|
|
16
|
+
if (background)
|
|
17
|
+
target.background = texture;
|
|
18
|
+
if (background && target.backgroundBlurriness !== undefined)
|
|
19
|
+
target.backgroundBlurriness = blur;
|
|
20
|
+
return () => {
|
|
21
|
+
if (background !== 'only')
|
|
22
|
+
target.environment = oldenv;
|
|
23
|
+
if (background)
|
|
24
|
+
target.background = oldbg;
|
|
25
|
+
if (background && target.backgroundBlurriness !== undefined)
|
|
26
|
+
target.backgroundBlurriness = oldBlur;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';
|
|
30
|
+
export function injectNgtsEnvironment(paramsFactory, injector) {
|
|
31
|
+
injector = assertInjectionContext(injectNgtsEnvironment, injector);
|
|
32
|
+
return runInInjectionContext(injector, () => {
|
|
33
|
+
const cdr = inject(ChangeDetectorRef);
|
|
34
|
+
const textureRef = injectNgtRef();
|
|
35
|
+
inject(DestroyRef).onDestroy(() => {
|
|
36
|
+
textureRef.untracked.dispose();
|
|
37
|
+
});
|
|
38
|
+
const params = computed(() => {
|
|
39
|
+
let { files, preset, encoding, path, extensions } = paramsFactory();
|
|
40
|
+
if (files == null) {
|
|
41
|
+
files = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];
|
|
42
|
+
}
|
|
43
|
+
if (path == null) {
|
|
44
|
+
path = '';
|
|
45
|
+
}
|
|
46
|
+
if (preset) {
|
|
47
|
+
if (!(preset in ngtsEnvironmentPresetsObj))
|
|
48
|
+
throw new Error('Preset must be one of: ' + Object.keys(ngtsEnvironmentPresetsObj).join(', '));
|
|
49
|
+
files = ngtsEnvironmentPresetsObj[preset];
|
|
50
|
+
path = CUBEMAP_ROOT;
|
|
51
|
+
}
|
|
52
|
+
return { files, preset, encoding, path, extensions };
|
|
53
|
+
});
|
|
54
|
+
const loaderResult = injectNgtLoader(
|
|
55
|
+
// @ts-expect-error
|
|
56
|
+
() => {
|
|
57
|
+
const { files } = params();
|
|
58
|
+
return Array.isArray(files) ? CubeTextureLoader : RGBELoader;
|
|
59
|
+
}, () => {
|
|
60
|
+
const { files } = params();
|
|
61
|
+
return Array.isArray(files) ? [files] : files;
|
|
62
|
+
}, {
|
|
63
|
+
extensions: (loader) => {
|
|
64
|
+
const { path, extensions } = params();
|
|
65
|
+
loader.setPath(path);
|
|
66
|
+
if (extensions)
|
|
67
|
+
extensions(loader);
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
effect(() => {
|
|
71
|
+
const result = loaderResult();
|
|
72
|
+
if (!result)
|
|
73
|
+
return;
|
|
74
|
+
const { files, encoding } = params();
|
|
75
|
+
const texture = Array.isArray(files) ? result[0] : result;
|
|
76
|
+
texture.mapping = Array.isArray(files) ? CubeReflectionMapping : EquirectangularReflectionMapping;
|
|
77
|
+
texture.encoding = encoding ?? Array.isArray(files) ? sRGBEncoding : LinearEncoding;
|
|
78
|
+
textureRef.nativeElement = texture;
|
|
79
|
+
safeDetectChanges(cdr);
|
|
80
|
+
}, { allowSignalWrites: true });
|
|
81
|
+
return textureRef;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvZW52aXJvbm1lbnQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGlCQUFpQixFQUNqQixVQUFVLEVBR1YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04scUJBQXFCLEdBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQ0gscUJBQXFCLEVBRXJCLGlCQUFpQixFQUNqQixnQ0FBZ0MsRUFDaEMsY0FBYyxFQUNkLFlBQVksR0FDZixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3JELFNBQVMsWUFBWSxDQUFDLEtBQTRDO0lBQzlELE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUN2QixVQUE0QixFQUM1QixLQUF3RCxFQUN4RCxZQUF5QixFQUN6QixPQUFzQixFQUN0QixJQUFJLEdBQUcsQ0FBQztJQUVSLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLENBQUM7SUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsSUFB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QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdG9yLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzc2VydEluamVjdGlvbkNvbnRleHQsIGluamVjdE5ndExvYWRlciwgaW5qZWN0Tmd0UmVmLCBpcywgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7XG4gICAgQ3ViZVJlZmxlY3Rpb25NYXBwaW5nLFxuICAgIEN1YmVUZXh0dXJlLFxuICAgIEN1YmVUZXh0dXJlTG9hZGVyLFxuICAgIEVxdWlyZWN0YW5ndWxhclJlZmxlY3Rpb25NYXBwaW5nLFxuICAgIExpbmVhckVuY29kaW5nLFxuICAgIHNSR0JFbmNvZGluZyxcbn0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUkdCRUxvYWRlciB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBuZ3RzRW52aXJvbm1lbnRQcmVzZXRzT2JqIH0gZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0IHsgdHlwZSBOZ3RzRW52aXJvbm1lbnRJbnB1dCB9IGZyb20gJy4vZW52aXJvbm1lbnQtaW5wdXQnO1xuXG5mdW5jdGlvbiByZXNvbHZlU2NlbmUoc2NlbmU6IFRIUkVFLlNjZW5lIHwgRWxlbWVudFJlZjxUSFJFRS5TY2VuZT4pIHtcbiAgICByZXR1cm4gaXMucmVmKHNjZW5lKSA/IHNjZW5lLm5hdGl2ZUVsZW1lbnQgOiBzY2VuZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVudlByb3BzKFxuICAgIGJhY2tncm91bmQ6IGJvb2xlYW4gfCAnb25seScsXG4gICAgc2NlbmU6IFRIUkVFLlNjZW5lIHwgRWxlbWVudFJlZjxUSFJFRS5TY2VuZT4gfCB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFNjZW5lOiBUSFJFRS5TY2VuZSxcbiAgICB0ZXh0dXJlOiBUSFJFRS5UZXh0dXJlLFxuICAgIGJsdXIgPSAwXG4pIHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXNvbHZlU2NlbmUoc2NlbmUgfHwgZGVmYXVsdFNjZW5lKTtcbiAgICBjb25zdCBvbGRiZyA9IHRhcmdldC5iYWNrZ3JvdW5kO1xuICAgIGNvbnN0IG9sZGVudiA9IHRhcmdldC5lbnZpcm9ubWVudDtcbiAgICBjb25zdCBvbGRCbHVyID0gdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzIHx8IDA7XG5cbiAgICBpZiAoYmFja2dyb3VuZCAhPT0gJ29ubHknKSB0YXJnZXQuZW52aXJvbm1lbnQgPSB0ZXh0dXJlO1xuICAgIGlmIChiYWNrZ3JvdW5kKSB0YXJnZXQuYmFja2dyb3VuZCA9IHRleHR1cmU7XG4gICAgaWYgKGJhY2tncm91bmQgJiYgdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzICE9PSB1bmRlZmluZWQpIHRhcmdldC5iYWNrZ3JvdW5kQmx1cnJpbmVzcyA9IGJsdXI7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoYmFja2dyb3VuZCAhPT0gJ29ubHknKSB0YXJnZXQuZW52aXJvbm1lbnQgPSBvbGRlbnY7XG4gICAgICAgIGlmIChiYWNrZ3JvdW5kKSB0YXJnZXQuYmFja2dyb3VuZCA9IG9sZGJnO1xuICAgICAgICBpZiAoYmFja2dyb3VuZCAmJiB0YXJnZXQuYmFja2dyb3VuZEJsdXJyaW5lc3MgIT09IHVuZGVmaW5lZCkgdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzID0gb2xkQmx1cjtcbiAgICB9O1xufVxuXG50eXBlIE5ndHNJbmplY3RFbnZpcm9ubWVudFBhcmFtcyA9IFBhcnRpYWw8XG4gICAgUGljazxOZ3RzRW52aXJvbm1lbnRJbnB1dCwgJ2ZpbGVzJyB8ICdwYXRoJyB8ICdwcmVzZXQnIHwgJ2V4dGVuc2lvbnMnIHwgJ2VuY29kaW5nJz5cbj47XG5cbmNvbnN0IENVQkVNQVBfUk9PVCA9ICdodHRwczovL21hcmtldC1hc3NldHMuZnJhMS5jZG4uZGlnaXRhbG9jZWFuc3BhY2VzLmNvbS9tYXJrZXQtYXNzZXRzL2hkcmlzLyc7XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0c0Vudmlyb25tZW50KHBhcmFtc0ZhY3Rvcnk6ICgpID0+IFBhcnRpYWw8Tmd0c0luamVjdEVudmlyb25tZW50UGFyYW1zPiwgaW5qZWN0b3I/OiBJbmplY3Rvcikge1xuICAgIGluamVjdG9yID0gYXNzZXJ0SW5qZWN0aW9uQ29udGV4dChpbmplY3ROZ3RzRW52aXJvbm1lbnQsIGluamVjdG9yKTtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgICAgIGNvbnN0IHRleHR1cmVSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuVGV4dHVyZSB8IEN1YmVUZXh0dXJlPigpO1xuXG4gICAgICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgdGV4dHVyZVJlZi51bnRyYWNrZWQuZGlzcG9zZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBwYXJhbXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgeyBmaWxlcywgcHJlc2V0LCBlbmNvZGluZywgcGF0aCwgZXh0ZW5zaW9ucyB9ID0gcGFyYW1zRmFjdG9yeSgpIGFzIE5ndHNJbmplY3RFbnZpcm9ubWVudFBhcmFtcztcblxuICAgICAgICAgICAgaWYgKGZpbGVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmaWxlcyA9IFsnL3B4LnBuZycsICcvbngucG5nJywgJy9weS5wbmcnLCAnL255LnBuZycsICcvcHoucG5nJywgJy9uei5wbmcnXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhdGggPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHBhdGggPSAnJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByZXNldCkge1xuICAgICAgICAgICAgICAgIGlmICghKHByZXNldCBpbiBuZ3RzRW52aXJvbm1lbnRQcmVzZXRzT2JqKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcmVzZXQgbXVzdCBiZSBvbmUgb2Y6ICcgKyBPYmplY3Qua2V5cyhuZ3RzRW52aXJvbm1lbnRQcmVzZXRzT2JqKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgICAgICBmaWxlcyA9IG5ndHNFbnZpcm9ubWVudFByZXNldHNPYmpbcHJlc2V0XTtcbiAgICAgICAgICAgICAgICBwYXRoID0gQ1VCRU1BUF9ST09UO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyBmaWxlcywgcHJlc2V0LCBlbmNvZGluZywgcGF0aCwgZXh0ZW5zaW9ucyB9IGFzIE5ndHNJbmplY3RFbnZpcm9ubWVudFBhcmFtcztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbG9hZGVyUmVzdWx0ID0gaW5qZWN0Tmd0TG9hZGVyKFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZXMgfSA9IHBhcmFtcygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGZpbGVzKSA/IEN1YmVUZXh0dXJlTG9hZGVyIDogUkdCRUxvYWRlcjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmaWxlcyB9ID0gcGFyYW1zKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZmlsZXMpID8gW2ZpbGVzXSA6IGZpbGVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiAobG9hZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcGF0aCwgZXh0ZW5zaW9ucyB9ID0gcGFyYW1zKCk7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci5zZXRQYXRoKHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9ucykgZXh0ZW5zaW9ucyhsb2FkZXIpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGxvYWRlclJlc3VsdCgpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmaWxlcywgZW5jb2RpbmcgfSA9IHBhcmFtcygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHR1cmU6IFRIUkVFLlRleHR1cmUgfCBUSFJFRS5DdWJlVGV4dHVyZSA9IEFycmF5LmlzQXJyYXkoZmlsZXMpID8gcmVzdWx0WzBdIDogcmVzdWx0O1xuICAgICAgICAgICAgICAgIHRleHR1cmUubWFwcGluZyA9IEFycmF5LmlzQXJyYXkoZmlsZXMpID8gQ3ViZVJlZmxlY3Rpb25NYXBwaW5nIDogRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmc7XG4gICAgICAgICAgICAgICAgdGV4dHVyZS5lbmNvZGluZyA9IGVuY29kaW5nID8/IEFycmF5LmlzQXJyYXkoZmlsZXMpID8gc1JHQkVuY29kaW5nIDogTGluZWFyRW5jb2Rpbmc7XG5cbiAgICAgICAgICAgICAgICB0ZXh0dXJlUmVmLm5hdGl2ZUVsZW1lbnQgPSB0ZXh0dXJlO1xuICAgICAgICAgICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKGNkcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRleHR1cmVSZWY7XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
2
|
+
import { extend, injectBeforeRender, injectNgtRef, NgtSignalStore } from 'angular-three';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
import { Group } from 'three';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ Group });
|
|
7
|
+
class NgtsFloat extends NgtSignalStore {
|
|
8
|
+
#offset;
|
|
9
|
+
set enabled(enabled) {
|
|
10
|
+
this.set({ enabled });
|
|
11
|
+
}
|
|
12
|
+
set speed(speed) {
|
|
13
|
+
this.set({ speed });
|
|
14
|
+
}
|
|
15
|
+
set rotationIntensity(rotationIntensity) {
|
|
16
|
+
this.set({ rotationIntensity });
|
|
17
|
+
}
|
|
18
|
+
set floatIntensity(floatIntensity) {
|
|
19
|
+
this.set({ floatIntensity });
|
|
20
|
+
}
|
|
21
|
+
set floatingRange(floatingRange) {
|
|
22
|
+
this.set({ floatingRange });
|
|
23
|
+
}
|
|
24
|
+
constructor() {
|
|
25
|
+
super({ speed: 1, rotationIntensity: 1, floatIntensity: 1, floatingRange: [-0.1, 0.1], enabled: true });
|
|
26
|
+
this.#offset = Math.random() * 10000;
|
|
27
|
+
this.floatRef = injectNgtRef();
|
|
28
|
+
injectBeforeRender(this.#onBeforeRender.bind(this));
|
|
29
|
+
}
|
|
30
|
+
#onBeforeRender({ clock }) {
|
|
31
|
+
const float = this.floatRef.untracked;
|
|
32
|
+
if (!float)
|
|
33
|
+
return;
|
|
34
|
+
const { enabled, speed, floatingRange, floatIntensity, rotationIntensity } = this.get();
|
|
35
|
+
if (!enabled || speed === 0)
|
|
36
|
+
return;
|
|
37
|
+
const t = this.#offset + clock.getElapsedTime();
|
|
38
|
+
float.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;
|
|
39
|
+
float.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;
|
|
40
|
+
float.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;
|
|
41
|
+
let yPosition = Math.sin((t / 4) * speed) / 10;
|
|
42
|
+
yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);
|
|
43
|
+
float.position.y = yPosition * floatIntensity;
|
|
44
|
+
}
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsFloat, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsFloat, isStandalone: true, selector: "ngts-float", inputs: { floatRef: "floatRef", enabled: "enabled", speed: "speed", rotationIntensity: "rotationIntensity", floatIntensity: "floatIntensity", floatingRange: "floatingRange" }, usesInheritance: true, ngImport: i0, template: `
|
|
47
|
+
<ngt-group ngtCompound>
|
|
48
|
+
<ngt-group [ref]="floatRef">
|
|
49
|
+
<ng-content />
|
|
50
|
+
</ngt-group>
|
|
51
|
+
</ngt-group>
|
|
52
|
+
`, isInline: true }); }
|
|
53
|
+
}
|
|
54
|
+
export { NgtsFloat };
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsFloat, decorators: [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{
|
|
58
|
+
selector: 'ngts-float',
|
|
59
|
+
standalone: true,
|
|
60
|
+
template: `
|
|
61
|
+
<ngt-group ngtCompound>
|
|
62
|
+
<ngt-group [ref]="floatRef">
|
|
63
|
+
<ng-content />
|
|
64
|
+
</ngt-group>
|
|
65
|
+
</ngt-group>
|
|
66
|
+
`,
|
|
67
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
68
|
+
}]
|
|
69
|
+
}], ctorParameters: function () { return []; }, propDecorators: { floatRef: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], enabled: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], speed: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], rotationIntensity: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], floatIntensity: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], floatingRange: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvZmxvYXQvZmxvYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQWtCLGNBQWMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFOUIsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQWdCbEIsTUFZYSxTQUFVLFNBQVEsY0FBOEI7SUFDaEQsT0FBTyxDQUF5QjtJQUl6QyxJQUFhLE9BQU8sQ0FBQyxPQUFnQjtRQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxpQkFBaUIsQ0FBQyxpQkFBeUI7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBYSxjQUFjLENBQUMsY0FBc0I7UUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQWEsYUFBYSxDQUFDLGFBQWlDO1FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDtRQUNJLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUF6Qm5HLFlBQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRWhDLGFBQVEsR0FBRyxZQUFZLEVBQWUsQ0FBQztRQXdCNUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFrQjtRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDO1lBQUUsT0FBTztRQUVwQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNoRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUM7UUFDdkUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQ3ZFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztRQUN4RSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMvQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQy9HLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxjQUFjLENBQUM7SUFDbEQsQ0FBQzs4R0EzQ1EsU0FBUztrR0FBVCxTQUFTLDZRQVRSOzs7Ozs7S0FNVDs7U0FHUSxTQUFTOzJGQUFULFNBQVM7a0JBWnJCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7OztLQU1UO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQzswRUFJWSxRQUFRO3NCQUFoQixLQUFLO2dCQUVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFJTyxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBSU8sY0FBYztzQkFBMUIsS0FBSztnQkFJTyxhQUFhO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdE5ndFJlZiwgTmd0UmVuZGVyU3RhdGUsIE5ndFNpZ25hbFN0b3JlLCB0eXBlIE5ndEdyb3VwIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKHsgR3JvdXAgfSk7XG5cbmV4cG9ydCB0eXBlIE5ndHNGbG9hdFN0YXRlID0ge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgc3BlZWQ6IG51bWJlcjtcbiAgICBmbG9hdEludGVuc2l0eTogbnVtYmVyO1xuICAgIHJvdGF0aW9uSW50ZW5zaXR5OiBudW1iZXI7XG4gICAgZmxvYXRpbmdSYW5nZTogW251bWJlcj8sIG51bWJlcj9dO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgICAgICAnbmd0cy1mbG9hdCc6IE5ndHNGbG9hdFN0YXRlICYgTmd0R3JvdXA7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtZmxvYXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1ncm91cCBuZ3RDb21wb3VuZD5cbiAgICAgICAgICAgIDxuZ3QtZ3JvdXAgW3JlZl09XCJmbG9hdFJlZlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICA8L25ndC1ncm91cD5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNGbG9hdCBleHRlbmRzIE5ndFNpZ25hbFN0b3JlPE5ndHNGbG9hdFN0YXRlPiB7XG4gICAgcmVhZG9ubHkgI29mZnNldCA9IE1hdGgucmFuZG9tKCkgKiAxMDAwMDtcblxuICAgIEBJbnB1dCgpIGZsb2F0UmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLkdyb3VwPigpO1xuXG4gICAgQElucHV0KCkgc2V0IGVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNwZWVkKHNwZWVkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzcGVlZCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcm90YXRpb25JbnRlbnNpdHkocm90YXRpb25JbnRlbnNpdHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJvdGF0aW9uSW50ZW5zaXR5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmbG9hdEludGVuc2l0eShmbG9hdEludGVuc2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmxvYXRJbnRlbnNpdHkgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZsb2F0aW5nUmFuZ2UoZmxvYXRpbmdSYW5nZTogW251bWJlcj8sIG51bWJlcj9dKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmxvYXRpbmdSYW5nZSB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoeyBzcGVlZDogMSwgcm90YXRpb25JbnRlbnNpdHk6IDEsIGZsb2F0SW50ZW5zaXR5OiAxLCBmbG9hdGluZ1JhbmdlOiBbLTAuMSwgMC4xXSwgZW5hYmxlZDogdHJ1ZSB9KTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMuI29uQmVmb3JlUmVuZGVyLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgICNvbkJlZm9yZVJlbmRlcih7IGNsb2NrIH06IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGZsb2F0ID0gdGhpcy5mbG9hdFJlZi51bnRyYWNrZWQ7XG4gICAgICAgIGlmICghZmxvYXQpIHJldHVybjtcbiAgICAgICAgY29uc3QgeyBlbmFibGVkLCBzcGVlZCwgZmxvYXRpbmdSYW5nZSwgZmxvYXRJbnRlbnNpdHksIHJvdGF0aW9uSW50ZW5zaXR5IH0gPSB0aGlzLmdldCgpO1xuICAgICAgICBpZiAoIWVuYWJsZWQgfHwgc3BlZWQgPT09IDApIHJldHVybjtcblxuICAgICAgICBjb25zdCB0ID0gdGhpcy4jb2Zmc2V0ICsgY2xvY2suZ2V0RWxhcHNlZFRpbWUoKTtcbiAgICAgICAgZmxvYXQucm90YXRpb24ueCA9IChNYXRoLmNvcygodCAvIDQpICogc3BlZWQpIC8gOCkgKiByb3RhdGlvbkludGVuc2l0eTtcbiAgICAgICAgZmxvYXQucm90YXRpb24ueSA9IChNYXRoLnNpbigodCAvIDQpICogc3BlZWQpIC8gOCkgKiByb3RhdGlvbkludGVuc2l0eTtcbiAgICAgICAgZmxvYXQucm90YXRpb24ueiA9IChNYXRoLnNpbigodCAvIDQpICogc3BlZWQpIC8gMjApICogcm90YXRpb25JbnRlbnNpdHk7XG4gICAgICAgIGxldCB5UG9zaXRpb24gPSBNYXRoLnNpbigodCAvIDQpICogc3BlZWQpIC8gMTA7XG4gICAgICAgIHlQb3NpdGlvbiA9IFRIUkVFLk1hdGhVdGlscy5tYXBMaW5lYXIoeVBvc2l0aW9uLCAtMC4xLCAwLjEsIGZsb2F0aW5nUmFuZ2VbMF0gPz8gLTAuMSwgZmxvYXRpbmdSYW5nZVsxXSA/PyAwLjEpO1xuICAgICAgICBmbG9hdC5wb3NpdGlvbi55ID0geVBvc2l0aW9uICogZmxvYXRJbnRlbnNpdHk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
6
|
-
export * from './
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './
|
|
9
|
-
export * from './
|
|
10
|
-
export * from './
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './
|
|
13
|
-
export * from './
|
|
14
|
-
export * from './
|
|
15
|
-
export
|
|
16
|
-
export * from './
|
|
17
|
-
export * from './
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './accumulative-shadows/accumulative-shadows';
|
|
2
|
+
export * from './accumulative-shadows/randomized-lights';
|
|
3
|
+
export * from './bounds/bounds';
|
|
4
|
+
export * from './camera-shake/camera-shake';
|
|
5
|
+
export * from './caustics/caustisc';
|
|
6
|
+
export * from './center/center';
|
|
7
|
+
export * from './cloud/cloud';
|
|
8
|
+
export * from './contact-shadows/contact-shadows';
|
|
9
|
+
export * from './environment/assets';
|
|
10
|
+
export * from './environment/environment';
|
|
11
|
+
export * from './float/float';
|
|
12
|
+
export * from './sky/sky';
|
|
13
|
+
export * from './sparkles/sparkles';
|
|
14
|
+
export * from './spot-light/spot-light';
|
|
15
|
+
export { NgtsSpotLightShadow } from './spot-light/spot-light-shadow-mesh';
|
|
16
|
+
export * from './stage/stage';
|
|
17
|
+
export * from './stars/stars';
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY2N1bXVsYXRpdmUtc2hhZG93cy9hY2N1bXVsYXRpdmUtc2hhZG93cyc7XG5leHBvcnQgKiBmcm9tICcuL2FjY3VtdWxhdGl2ZS1zaGFkb3dzL3JhbmRvbWl6ZWQtbGlnaHRzJztcbmV4cG9ydCAqIGZyb20gJy4vYm91bmRzL2JvdW5kcyc7XG5leHBvcnQgKiBmcm9tICcuL2NhbWVyYS1zaGFrZS9jYW1lcmEtc2hha2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXVzdGljcy9jYXVzdGlzYyc7XG5leHBvcnQgKiBmcm9tICcuL2NlbnRlci9jZW50ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jbG91ZC9jbG91ZCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRhY3Qtc2hhZG93cy9jb250YWN0LXNoYWRvd3MnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnZpcm9ubWVudC9hc3NldHMnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Zsb2F0L2Zsb2F0JztcbmV4cG9ydCAqIGZyb20gJy4vc2t5L3NreSc7XG5leHBvcnQgKiBmcm9tICcuL3NwYXJrbGVzL3NwYXJrbGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3BvdC1saWdodC9zcG90LWxpZ2h0JztcbmV4cG9ydCB7IE5ndHNTcG90TGlnaHRTaGFkb3cgfSBmcm9tICcuL3Nwb3QtbGlnaHQvc3BvdC1saWdodC1zaGFkb3ctbWVzaCc7XG5leHBvcnQgKiBmcm9tICcuL3N0YWdlL3N0YWdlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RhcnMvc3RhcnMnO1xuIl19
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
2
|
+
import { injectNgtRef, NgtArgs, NgtSignalStore } from 'angular-three';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
import { Sky } from 'three-stdlib';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
function calcPosFromAngles(inclination, azimuth, vector = new THREE.Vector3()) {
|
|
7
|
+
const theta = Math.PI * (inclination - 0.5);
|
|
8
|
+
const phi = 2 * Math.PI * (azimuth - 0.5);
|
|
9
|
+
vector.x = Math.cos(phi);
|
|
10
|
+
vector.y = Math.sin(theta);
|
|
11
|
+
vector.z = Math.sin(phi);
|
|
12
|
+
return vector;
|
|
13
|
+
}
|
|
14
|
+
class NgtsSky extends NgtSignalStore {
|
|
15
|
+
set distance(distance) {
|
|
16
|
+
this.set({ distance });
|
|
17
|
+
}
|
|
18
|
+
set sunPosition(sunPosition) {
|
|
19
|
+
this.set({ sunPosition });
|
|
20
|
+
}
|
|
21
|
+
set inclination(inclination) {
|
|
22
|
+
this.set({ inclination });
|
|
23
|
+
}
|
|
24
|
+
set azimuth(azimuth) {
|
|
25
|
+
this.set({ azimuth });
|
|
26
|
+
}
|
|
27
|
+
set mieCoefficient(mieCoefficient) {
|
|
28
|
+
this.set({ mieCoefficient });
|
|
29
|
+
}
|
|
30
|
+
set mieDirectionalG(mieDirectionalG) {
|
|
31
|
+
this.set({ mieDirectionalG });
|
|
32
|
+
}
|
|
33
|
+
set rayleigh(rayleigh) {
|
|
34
|
+
this.set({ rayleigh });
|
|
35
|
+
}
|
|
36
|
+
set turbidity(turbidity) {
|
|
37
|
+
this.set({ turbidity });
|
|
38
|
+
}
|
|
39
|
+
#inclination;
|
|
40
|
+
#azimuth;
|
|
41
|
+
#sunPosition;
|
|
42
|
+
#distance;
|
|
43
|
+
constructor() {
|
|
44
|
+
super({
|
|
45
|
+
inclination: 0.6,
|
|
46
|
+
azimuth: 0.1,
|
|
47
|
+
distance: 1000,
|
|
48
|
+
mieCoefficient: 0.005,
|
|
49
|
+
mieDirectionalG: 0.8,
|
|
50
|
+
rayleigh: 0.5,
|
|
51
|
+
turbidity: 10,
|
|
52
|
+
});
|
|
53
|
+
this.skyRef = injectNgtRef();
|
|
54
|
+
this.#inclination = this.select('inclination');
|
|
55
|
+
this.#azimuth = this.select('azimuth');
|
|
56
|
+
this.#sunPosition = this.select('sunPosition');
|
|
57
|
+
this.#distance = this.select('distance');
|
|
58
|
+
this.sky = new Sky();
|
|
59
|
+
this.skyMieCoefficient = this.select('mieCoefficient');
|
|
60
|
+
this.skyMieDirectionalG = this.select('mieDirectionalG');
|
|
61
|
+
this.skyRayleigh = this.select('rayleigh');
|
|
62
|
+
this.skyTurbidity = this.select('turbidity');
|
|
63
|
+
this.calculatedSunPosition = computed(() => this.#sunPosition() || calcPosFromAngles(this.#inclination(), this.#azimuth()));
|
|
64
|
+
this.scale = computed(() => new THREE.Vector3().setScalar(this.#distance()));
|
|
65
|
+
}
|
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSky, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSky, isStandalone: true, selector: "ngts-sky", inputs: { skyRef: "skyRef", distance: "distance", sunPosition: "sunPosition", inclination: "inclination", azimuth: "azimuth", mieCoefficient: "mieCoefficient", mieDirectionalG: "mieDirectionalG", rayleigh: "rayleigh", turbidity: "turbidity" }, usesInheritance: true, ngImport: i0, template: `
|
|
68
|
+
<ngt-primitive ngtCompound *args="[sky]" [ref]="skyRef" [scale]="scale()">
|
|
69
|
+
<ngt-value [rawValue]="skyMieCoefficient()" attach="material.uniforms.mieCoefficient.value" />
|
|
70
|
+
<ngt-value [rawValue]="skyMieDirectionalG()" attach="material.uniforms.mieDirectionalG.value" />
|
|
71
|
+
<ngt-value [rawValue]="skyRayleigh()" attach="material.uniforms.rayleigh.value" />
|
|
72
|
+
<ngt-value [rawValue]="calculatedSunPosition()" attach="material.uniforms.sunPosition.value" />
|
|
73
|
+
<ngt-value [rawValue]="skyTurbidity()" attach="material.uniforms.turbidity.value" />
|
|
74
|
+
</ngt-primitive>
|
|
75
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
|
|
76
|
+
}
|
|
77
|
+
export { NgtsSky };
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSky, decorators: [{
|
|
79
|
+
type: Component,
|
|
80
|
+
args: [{
|
|
81
|
+
selector: 'ngts-sky',
|
|
82
|
+
standalone: true,
|
|
83
|
+
template: `
|
|
84
|
+
<ngt-primitive ngtCompound *args="[sky]" [ref]="skyRef" [scale]="scale()">
|
|
85
|
+
<ngt-value [rawValue]="skyMieCoefficient()" attach="material.uniforms.mieCoefficient.value" />
|
|
86
|
+
<ngt-value [rawValue]="skyMieDirectionalG()" attach="material.uniforms.mieDirectionalG.value" />
|
|
87
|
+
<ngt-value [rawValue]="skyRayleigh()" attach="material.uniforms.rayleigh.value" />
|
|
88
|
+
<ngt-value [rawValue]="calculatedSunPosition()" attach="material.uniforms.sunPosition.value" />
|
|
89
|
+
<ngt-value [rawValue]="skyTurbidity()" attach="material.uniforms.turbidity.value" />
|
|
90
|
+
</ngt-primitive>
|
|
91
|
+
`,
|
|
92
|
+
imports: [NgtArgs],
|
|
93
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
94
|
+
}]
|
|
95
|
+
}], ctorParameters: function () { return []; }, propDecorators: { skyRef: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], distance: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], sunPosition: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], inclination: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], azimuth: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], mieCoefficient: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], mieDirectionalG: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], rayleigh: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], turbidity: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}] } });
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL3NreS9za3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUVuQyxTQUFTLGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsT0FBZSxFQUFFLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDekYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUM1QyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztJQUUxQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV6QixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBbUJELE1BZWEsT0FBUSxTQUFRLGNBQTRCO0lBR3JELElBQWEsUUFBUSxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNC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QUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBRVksTUFBTTtzQkFBZCxLQUFLO2dCQUVPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sY0FBYztzQkFBMUIsS0FBSztnQkFJTyxlQUFlO3NCQUEzQixLQUFLO2dCQUlPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RSZWYsIE5ndEFyZ3MsIE5ndFNpZ25hbFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBTa3kgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5mdW5jdGlvbiBjYWxjUG9zRnJvbUFuZ2xlcyhpbmNsaW5hdGlvbjogbnVtYmVyLCBhemltdXRoOiBudW1iZXIsIHZlY3RvciA9IG5ldyBUSFJFRS5WZWN0b3IzKCkpIHtcbiAgICBjb25zdCB0aGV0YSA9IE1hdGguUEkgKiAoaW5jbGluYXRpb24gLSAwLjUpO1xuICAgIGNvbnN0IHBoaSA9IDIgKiBNYXRoLlBJICogKGF6aW11dGggLSAwLjUpO1xuXG4gICAgdmVjdG9yLnggPSBNYXRoLmNvcyhwaGkpO1xuICAgIHZlY3Rvci55ID0gTWF0aC5zaW4odGhldGEpO1xuICAgIHZlY3Rvci56ID0gTWF0aC5zaW4ocGhpKTtcblxuICAgIHJldHVybiB2ZWN0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1NreVN0YXRlIHtcbiAgICBkaXN0YW5jZTogbnVtYmVyO1xuICAgIHN1blBvc2l0aW9uOiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT47XG4gICAgaW5jbGluYXRpb246IG51bWJlcjtcbiAgICBhemltdXRoOiBudW1iZXI7XG4gICAgbWllQ29lZmZpY2llbnQ6IG51bWJlcjtcbiAgICBtaWVEaXJlY3Rpb25hbEc6IG51bWJlcjtcbiAgICByYXlsZWlnaDogbnVtYmVyO1xuICAgIHR1cmJpZGl0eTogbnVtYmVyO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgICAgICduZ3RzLXNreSc6IE5ndHNTa3lTdGF0ZSAmIFNreTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1za3knLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1wcmltaXRpdmUgbmd0Q29tcG91bmQgKmFyZ3M9XCJbc2t5XVwiIFtyZWZdPVwic2t5UmVmXCIgW3NjYWxlXT1cInNjYWxlKClcIj5cbiAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInNreU1pZUNvZWZmaWNpZW50KClcIiBhdHRhY2g9XCJtYXRlcmlhbC51bmlmb3Jtcy5taWVDb2VmZmljaWVudC52YWx1ZVwiIC8+XG4gICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJza3lNaWVEaXJlY3Rpb25hbEcoKVwiIGF0dGFjaD1cIm1hdGVyaWFsLnVuaWZvcm1zLm1pZURpcmVjdGlvbmFsRy52YWx1ZVwiIC8+XG4gICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJza3lSYXlsZWlnaCgpXCIgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMucmF5bGVpZ2gudmFsdWVcIiAvPlxuICAgICAgICAgICAgPG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiY2FsY3VsYXRlZFN1blBvc2l0aW9uKClcIiBhdHRhY2g9XCJtYXRlcmlhbC51bmlmb3Jtcy5zdW5Qb3NpdGlvbi52YWx1ZVwiIC8+XG4gICAgICAgICAgICA8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJza3lUdXJiaWRpdHkoKVwiIGF0dGFjaD1cIm1hdGVyaWFsLnVuaWZvcm1zLnR1cmJpZGl0eS52YWx1ZVwiIC8+XG4gICAgICAgIDwvbmd0LXByaW1pdGl2ZT5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTa3kgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RzU2t5U3RhdGU+IHtcbiAgICBASW5wdXQoKSBza3lSZWYgPSBpbmplY3ROZ3RSZWY8U2t5PigpO1xuXG4gICAgQElucHV0KCkgc2V0IGRpc3RhbmNlKGRpc3RhbmNlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXN0YW5jZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc3VuUG9zaXRpb24oc3VuUG9zaXRpb246IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPikge1xuICAgICAgICB0aGlzLnNldCh7IHN1blBvc2l0aW9uIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBpbmNsaW5hdGlvbihpbmNsaW5hdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW5jbGluYXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGF6aW11dGgoYXppbXV0aDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYXppbXV0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWllQ29lZmZpY2llbnQobWllQ29lZmZpY2llbnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1pZUNvZWZmaWNpZW50IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtaWVEaXJlY3Rpb25hbEcobWllRGlyZWN0aW9uYWxHOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtaWVEaXJlY3Rpb25hbEcgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHJheWxlaWdoKHJheWxlaWdoOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYXlsZWlnaCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdHVyYmlkaXR5KHR1cmJpZGl0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgdHVyYmlkaXR5IH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5ICNpbmNsaW5hdGlvbiA9IHRoaXMuc2VsZWN0KCdpbmNsaW5hdGlvbicpO1xuICAgIHJlYWRvbmx5ICNhemltdXRoID0gdGhpcy5zZWxlY3QoJ2F6aW11dGgnKTtcbiAgICByZWFkb25seSAjc3VuUG9zaXRpb24gPSB0aGlzLnNlbGVjdCgnc3VuUG9zaXRpb24nKTtcbiAgICByZWFkb25seSAjZGlzdGFuY2UgPSB0aGlzLnNlbGVjdCgnZGlzdGFuY2UnKTtcblxuICAgIHJlYWRvbmx5IHNreSA9IG5ldyBTa3koKTtcblxuICAgIHJlYWRvbmx5IHNreU1pZUNvZWZmaWNpZW50ID0gdGhpcy5zZWxlY3QoJ21pZUNvZWZmaWNpZW50Jyk7XG4gICAgcmVhZG9ubHkgc2t5TWllRGlyZWN0aW9uYWxHID0gdGhpcy5zZWxlY3QoJ21pZURpcmVjdGlvbmFsRycpO1xuICAgIHJlYWRvbmx5IHNreVJheWxlaWdoID0gdGhpcy5zZWxlY3QoJ3JheWxlaWdoJyk7XG4gICAgcmVhZG9ubHkgc2t5VHVyYmlkaXR5ID0gdGhpcy5zZWxlY3QoJ3R1cmJpZGl0eScpO1xuXG4gICAgcmVhZG9ubHkgY2FsY3VsYXRlZFN1blBvc2l0aW9uID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuI3N1blBvc2l0aW9uKCkgfHwgY2FsY1Bvc0Zyb21BbmdsZXModGhpcy4jaW5jbGluYXRpb24oKSwgdGhpcy4jYXppbXV0aCgpKVxuICAgICk7XG4gICAgcmVhZG9ubHkgc2NhbGUgPSBjb21wdXRlZCgoKSA9PiBuZXcgVEhSRUUuVmVjdG9yMygpLnNldFNjYWxhcih0aGlzLiNkaXN0YW5jZSgpKSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgaW5jbGluYXRpb246IDAuNixcbiAgICAgICAgICAgIGF6aW11dGg6IDAuMSxcbiAgICAgICAgICAgIGRpc3RhbmNlOiAxMDAwLFxuICAgICAgICAgICAgbWllQ29lZmZpY2llbnQ6IDAuMDA1LFxuICAgICAgICAgICAgbWllRGlyZWN0aW9uYWxHOiAwLjgsXG4gICAgICAgICAgICByYXlsZWlnaDogMC41LFxuICAgICAgICAgICAgdHVyYmlkaXR5OiAxMCxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input, isSignal } from '@angular/core';
|
|
2
|
+
import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore, NgtStore, } from 'angular-three';
|
|
3
|
+
import { SparklesMaterial } from 'angular-three-soba/shaders';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { BufferAttribute, BufferGeometry, Color, MathUtils, Points, Vector2, Vector3, Vector4 } from 'three';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
extend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });
|
|
8
|
+
const isFloat32Array = (def) => def && def.constructor === Float32Array;
|
|
9
|
+
const expandColor = (v) => [v.r, v.g, v.b];
|
|
10
|
+
const isVector = (v) => v instanceof Vector2 || v instanceof Vector3 || v instanceof Vector4;
|
|
11
|
+
const normalizeVector = (v) => {
|
|
12
|
+
if (Array.isArray(v))
|
|
13
|
+
return v;
|
|
14
|
+
else if (isVector(v))
|
|
15
|
+
return v.toArray();
|
|
16
|
+
return [v, v, v];
|
|
17
|
+
};
|
|
18
|
+
function usePropAsIsOrAsAttribute(count, prop, setDefault) {
|
|
19
|
+
if (prop !== undefined) {
|
|
20
|
+
if (isFloat32Array(prop)) {
|
|
21
|
+
return prop;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
if (prop instanceof Color) {
|
|
25
|
+
const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();
|
|
26
|
+
return Float32Array.from(a);
|
|
27
|
+
}
|
|
28
|
+
else if (isVector(prop) || Array.isArray(prop)) {
|
|
29
|
+
const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();
|
|
30
|
+
return Float32Array.from(a);
|
|
31
|
+
}
|
|
32
|
+
return Float32Array.from({ length: count }, () => prop);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return Float32Array.from({ length: count }, setDefault);
|
|
36
|
+
}
|
|
37
|
+
class NgtsSparkles extends NgtSignalStore {
|
|
38
|
+
/** Number of particles (default: 100) */
|
|
39
|
+
set count(count) {
|
|
40
|
+
this.set({ count });
|
|
41
|
+
}
|
|
42
|
+
/** Speed of particles (default: 1) */
|
|
43
|
+
set speed(speed) {
|
|
44
|
+
this.set({ speed });
|
|
45
|
+
}
|
|
46
|
+
/** Opacity of particles (default: 1) */
|
|
47
|
+
set opacity(opacity) {
|
|
48
|
+
this.set({ opacity });
|
|
49
|
+
}
|
|
50
|
+
/** Color of particles (default: 100) */
|
|
51
|
+
set color(color) {
|
|
52
|
+
this.set({ color });
|
|
53
|
+
}
|
|
54
|
+
/** Size of particles (default: randomized between 0 and 1) */
|
|
55
|
+
set size(size) {
|
|
56
|
+
this.set({ size });
|
|
57
|
+
}
|
|
58
|
+
/** The space the particles occupy (default: 1) */
|
|
59
|
+
set scale(scale) {
|
|
60
|
+
this.set({ scale });
|
|
61
|
+
}
|
|
62
|
+
/** Movement factor (default: 1) */
|
|
63
|
+
set noise(noise) {
|
|
64
|
+
this.set({ noise });
|
|
65
|
+
}
|
|
66
|
+
#store;
|
|
67
|
+
#count;
|
|
68
|
+
#scale;
|
|
69
|
+
#color;
|
|
70
|
+
#getComputed(nameOrComputed, count, setDefault) {
|
|
71
|
+
const value = typeof nameOrComputed !== 'string' && isSignal(nameOrComputed)
|
|
72
|
+
? nameOrComputed
|
|
73
|
+
: this.select(nameOrComputed);
|
|
74
|
+
return computed(() => usePropAsIsOrAsAttribute(count(), value(), setDefault));
|
|
75
|
+
}
|
|
76
|
+
constructor() {
|
|
77
|
+
super({
|
|
78
|
+
noise: 1,
|
|
79
|
+
count: 100,
|
|
80
|
+
speed: 1,
|
|
81
|
+
opacity: 1,
|
|
82
|
+
scale: 1,
|
|
83
|
+
});
|
|
84
|
+
this.pointsRef = injectNgtRef();
|
|
85
|
+
this.#store = inject(NgtStore);
|
|
86
|
+
this.#count = this.select('count');
|
|
87
|
+
this.#scale = this.select('scale');
|
|
88
|
+
this.#color = this.select('color');
|
|
89
|
+
this.materialRef = injectNgtRef();
|
|
90
|
+
this.dpr = this.#store.select('viewport', 'dpr');
|
|
91
|
+
this.positions = computed(() => Float32Array.from(Array.from({ length: this.#count() }, () => normalizeVector(this.#scale()).map(MathUtils.randFloatSpread)).flat()));
|
|
92
|
+
this.sizes = this.#getComputed('size', this.#count, Math.random);
|
|
93
|
+
this.opacities = this.#getComputed('opacity', this.#count);
|
|
94
|
+
this.speeds = this.#getComputed('speed', this.#count);
|
|
95
|
+
this.noises = this.#getComputed('noise', () => this.#count() * 3);
|
|
96
|
+
this.colors = this.#getComputed(computed(() => {
|
|
97
|
+
const color = this.#color();
|
|
98
|
+
return !isFloat32Array(color) ? new THREE.Color(color) : color;
|
|
99
|
+
}), () => (this.#color() === undefined ? this.#count() * 3 : this.#count()), () => 1);
|
|
100
|
+
injectBeforeRender(this.#onBeforeRender.bind(this));
|
|
101
|
+
}
|
|
102
|
+
#onBeforeRender({ clock }) {
|
|
103
|
+
if (!this.materialRef.nativeElement)
|
|
104
|
+
return;
|
|
105
|
+
this.materialRef.nativeElement.uniforms['time'].value = clock.elapsedTime;
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSparkles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsSparkles, isStandalone: true, selector: "ngts-sparkles", inputs: { pointsRef: "pointsRef", count: "count", speed: "speed", opacity: "opacity", color: "color", size: "size", scale: "scale", noise: "noise" }, usesInheritance: true, ngImport: i0, template: `
|
|
109
|
+
<ngt-points ngtCompount [ref]="pointsRef">
|
|
110
|
+
<ngt-buffer-geometry>
|
|
111
|
+
<ngt-buffer-attribute *args="[positions(), 3]" attach="attributes.position" />
|
|
112
|
+
<ngt-buffer-attribute *args="[sizes(), 1]" attach="attributes.size" />
|
|
113
|
+
<ngt-buffer-attribute *args="[opacities(), 1]" attach="attributes.opacity" />
|
|
114
|
+
<ngt-buffer-attribute *args="[speeds(), 1]" attach="attributes.speed" />
|
|
115
|
+
<ngt-buffer-attribute *args="[colors(), 3]" attach="attributes.color" />
|
|
116
|
+
<ngt-buffer-attribute *args="[noises(), 3]" attach="attributes.noise" />
|
|
117
|
+
</ngt-buffer-geometry>
|
|
118
|
+
<ngt-sparkles-material [ref]="materialRef" [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr()" />
|
|
119
|
+
</ngt-points>
|
|
120
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
|
|
121
|
+
}
|
|
122
|
+
export { NgtsSparkles };
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsSparkles, decorators: [{
|
|
124
|
+
type: Component,
|
|
125
|
+
args: [{
|
|
126
|
+
selector: 'ngts-sparkles',
|
|
127
|
+
standalone: true,
|
|
128
|
+
template: `
|
|
129
|
+
<ngt-points ngtCompount [ref]="pointsRef">
|
|
130
|
+
<ngt-buffer-geometry>
|
|
131
|
+
<ngt-buffer-attribute *args="[positions(), 3]" attach="attributes.position" />
|
|
132
|
+
<ngt-buffer-attribute *args="[sizes(), 1]" attach="attributes.size" />
|
|
133
|
+
<ngt-buffer-attribute *args="[opacities(), 1]" attach="attributes.opacity" />
|
|
134
|
+
<ngt-buffer-attribute *args="[speeds(), 1]" attach="attributes.speed" />
|
|
135
|
+
<ngt-buffer-attribute *args="[colors(), 3]" attach="attributes.color" />
|
|
136
|
+
<ngt-buffer-attribute *args="[noises(), 3]" attach="attributes.noise" />
|
|
137
|
+
</ngt-buffer-geometry>
|
|
138
|
+
<ngt-sparkles-material [ref]="materialRef" [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr()" />
|
|
139
|
+
</ngt-points>
|
|
140
|
+
`,
|
|
141
|
+
imports: [NgtArgs],
|
|
142
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
143
|
+
}]
|
|
144
|
+
}], ctorParameters: function () { return []; }, propDecorators: { pointsRef: [{
|
|
145
|
+
type: Input
|
|
146
|
+
}], count: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], speed: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], opacity: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}], color: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], size: [{
|
|
155
|
+
type: Input
|
|
156
|
+
}], scale: [{
|
|
157
|
+
type: Input
|
|
158
|
+
}], noise: [{
|
|
159
|
+
type: Input
|
|
160
|
+
}] } });
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmtsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3BhcmtsZXMvc3BhcmtsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUNILE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLE9BQU8sRUFDUCxjQUFjLEVBQ2QsUUFBUSxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUU3RyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFdEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFRLEVBQXVCLEVBQUUsQ0FBQyxHQUFHLElBQUssR0FBb0IsQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDO0FBQ3BILE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQXNELEVBQUUsQ0FDNUUsQ0FBQyxZQUFZLE9BQU8sSUFBSSxDQUFDLFlBQVksT0FBTyxJQUFJLENBQUMsWUFBWSxPQUFPLENBQUM7QUFDekUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQVksRUFBRTtJQUN6QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUM7U0FDMUIsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFhLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsU0FBUyx3QkFBd0IsQ0FBVSxLQUFhLEVBQUUsSUFBdUIsRUFBRSxVQUE2QjtJQUM1RyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDcEIsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEIsT0FBTyxJQUFvQixDQUFDO1NBQy9CO2FBQU07WUFDSCxJQUFJLElBQUksWUFBWSxLQUFLLEVBQUU7Z0JBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM1RSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0I7aUJBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hGLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQjtZQUNELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUF5QixDQUFDLENBQUM7U0FDaEY7S0FDSjtJQUNELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFXLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBbUJELE1BbUJhLFlBQWEsU0FBUSxjQUFpQztJQUcvRCx5Q0FBeUM7SUFDekMsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLElBQWEsS0FBSyxDQUFDLEtBQTRCO1FBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsSUFBYSxPQUFPLENBQUMsT0FBOEI7UUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxJQUFhLEtBQUssQ0FBQyxLQUErQztRQUM5RCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsOERBQThEO0lBQzlELElBQWEsSUFBSSxDQUFDLElBQTJCO1FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsSUFBYSxLQUFLLENBQUMsS0FBd0Q7UUFDdkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxJQUFhLEtBQUssQ0FBQyxLQUF1RTtRQUN0RixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRVEsTUFBTSxDQUFvQjtJQUUxQixNQUFNLENBQXdCO0lBQzlCLE1BQU0sQ0FBd0I7SUFDOUIsTUFBTSxDQUF3QjtJQTBCdkMsWUFBWSxDQUNSLGNBQXNELEVBQ3RELEtBQW1CLEVBQ25CLFVBQXVEO1FBRXZELE1BQU0sS0FBSyxHQUNQLE9BQU8sY0FBYyxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzFELENBQUMsQ0FBQyxjQUFjO1lBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVEO1FBQ0ksS0FBSyxDQUFDO1lBQ0YsS0FBSyxFQUFFLENBQUM7WUFDUixLQUFLLEVBQUUsR0FBRztZQUNWLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTyxFQUFFLENBQUM7WUFDVixLQUFLLEVBQUUsQ0FBQztTQUNYLENBQUMsQ0FBQztRQXRGRSxjQUFTLEdBQUcsWUFBWSxFQUFVLENBQUM7UUFxQ25DLFdBQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUIsV0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsV0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsV0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUIsZ0JBQVcsR0FBRyxZQUFZLEVBQXlDLENBQUM7UUFFcEUsUUFBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUMvQixZQUFZLENBQUMsSUFBSSxDQUNiLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQ3ZDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUNoRSxDQUFDLElBQUksRUFBRSxDQUNYLENBQ0osQ0FBQztRQUVPLFVBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1RCxjQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELFdBQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsV0FBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3RCxXQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FDL0IsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNuRSxDQUFDLENBQUMsRUFDRixHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUN2RSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQ1YsQ0FBQztRQXNCRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQWtCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUM5RSxDQUFDOzhHQTlGUSxZQUFZO2tHQUFaLFlBQVksc1BBaEJYOzs7Ozs7Ozs7Ozs7S0FZVCw0REFDUyxPQUFPOztTQUdSLFlBQVk7MkZBQVosWUFBWTtrQkFuQnhCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7OztLQVlUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUVZLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIGluamVjdCwgSW5wdXQsIGlzU2lnbmFsLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgZXh0ZW5kLFxuICAgIGluamVjdEJlZm9yZVJlbmRlcixcbiAgICBpbmplY3ROZ3RSZWYsXG4gICAgTmd0QXJncyxcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICBOZ3RTdG9yZSxcbiAgICB0eXBlIE5ndFJlbmRlclN0YXRlLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFNwYXJrbGVzTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5LCBDb2xvciwgTWF0aFV0aWxzLCBQb2ludHMsIFZlY3RvcjIsIFZlY3RvcjMsIFZlY3RvcjQgfSBmcm9tICd0aHJlZSc7XG5cbmV4dGVuZCh7IFNwYXJrbGVzTWF0ZXJpYWwsIFBvaW50cywgQnVmZmVyR2VvbWV0cnksIEJ1ZmZlckF0dHJpYnV0ZSB9KTtcblxuY29uc3QgaXNGbG9hdDMyQXJyYXkgPSAoZGVmOiBhbnkpOiBkZWYgaXMgRmxvYXQzMkFycmF5ID0+IGRlZiAmJiAoZGVmIGFzIEZsb2F0MzJBcnJheSkuY29uc3RydWN0b3IgPT09IEZsb2F0MzJBcnJheTtcbmNvbnN0IGV4cGFuZENvbG9yID0gKHY6IFRIUkVFLkNvbG9yKSA9PiBbdi5yLCB2LmcsIHYuYl07XG5jb25zdCBpc1ZlY3RvciA9ICh2OiBhbnkpOiB2IGlzIFRIUkVFLlZlY3RvcjIgfCBUSFJFRS5WZWN0b3IzIHwgVEhSRUUuVmVjdG9yNCA9PlxuICAgIHYgaW5zdGFuY2VvZiBWZWN0b3IyIHx8IHYgaW5zdGFuY2VvZiBWZWN0b3IzIHx8IHYgaW5zdGFuY2VvZiBWZWN0b3I0O1xuY29uc3Qgbm9ybWFsaXplVmVjdG9yID0gKHY6IGFueSk6IG51bWJlcltdID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkgcmV0dXJuIHY7XG4gICAgZWxzZSBpZiAoaXNWZWN0b3IodikpIHJldHVybiB2LnRvQXJyYXkoKTtcbiAgICByZXR1cm4gW3YsIHYsIHZdIGFzIG51bWJlcltdO1xufTtcblxuZnVuY3Rpb24gdXNlUHJvcEFzSXNPckFzQXR0cmlidXRlPFQgPSBhbnk+KGNvdW50OiBudW1iZXIsIHByb3A/OiBUIHwgRmxvYXQzMkFycmF5LCBzZXREZWZhdWx0PzogKHY6IFQpID0+IG51bWJlcikge1xuICAgIGlmIChwcm9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGlzRmxvYXQzMkFycmF5KHByb3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvcCBhcyBGbG9hdDMyQXJyYXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvcCBpbnN0YW5jZW9mIENvbG9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50ICogMyB9LCAoKSA9PiBleHBhbmRDb2xvcihwcm9wKSkuZmxhdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbShhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNWZWN0b3IocHJvcCkgfHwgQXJyYXkuaXNBcnJheShwcm9wKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCAqIDMgfSwgKCkgPT4gbm9ybWFsaXplVmVjdG9yKHByb3ApKS5mbGF0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoKSA9PiBwcm9wIGFzIHVua25vd24gYXMgbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sIHNldERlZmF1bHQhKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzU3BhcmtsZXNTdGF0ZSB7XG4gICAgLyoqIE51bWJlciBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEwMCkgKi9cbiAgICBjb3VudDogbnVtYmVyO1xuICAgIC8qKiBTcGVlZCBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG4gICAgc3BlZWQ6IG51bWJlciB8IEZsb2F0MzJBcnJheTtcbiAgICAvKiogT3BhY2l0eSBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEpICovXG4gICAgb3BhY2l0eTogbnVtYmVyIHwgRmxvYXQzMkFycmF5O1xuICAgIC8qKiBDb2xvciBvZiBwYXJ0aWNsZXMgKGRlZmF1bHQ6IDEwMCkgKi9cbiAgICBjb2xvcj86IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24gfCBGbG9hdDMyQXJyYXk7XG4gICAgLyoqIFNpemUgb2YgcGFydGljbGVzIChkZWZhdWx0OiByYW5kb21pemVkIGJldHdlZW4gMCBhbmQgMSkgKi9cbiAgICBzaXplPzogbnVtYmVyIHwgRmxvYXQzMkFycmF5O1xuICAgIC8qKiBUaGUgc3BhY2UgdGhlIHBhcnRpY2xlcyBvY2N1cHkgKGRlZmF1bHQ6IDEpICovXG4gICAgc2NhbGU6IG51bWJlciB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFRIUkVFLlZlY3RvcjM7XG4gICAgLyoqIE1vdmVtZW50IGZhY3RvciAoZGVmYXVsdDogMSkgKi9cbiAgICBub2lzZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgVEhSRUUuVmVjdG9yMyB8IEZsb2F0MzJBcnJheTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXNwYXJrbGVzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtcG9pbnRzIG5ndENvbXBvdW50IFtyZWZdPVwicG9pbnRzUmVmXCI+XG4gICAgICAgICAgICA8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgKmFyZ3M9XCJbcG9zaXRpb25zKCksIDNdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5wb3NpdGlvblwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC1idWZmZXItYXR0cmlidXRlICphcmdzPVwiW3NpemVzKCksIDFdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5zaXplXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgKmFyZ3M9XCJbb3BhY2l0aWVzKCksIDFdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5vcGFjaXR5XCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgKmFyZ3M9XCJbc3BlZWRzKCksIDFdXCIgYXR0YWNoPVwiYXR0cmlidXRlcy5zcGVlZFwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC1idWZmZXItYXR0cmlidXRlICphcmdzPVwiW2NvbG9ycygpLCAzXVwiIGF0dGFjaD1cImF0dHJpYnV0ZXMuY29sb3JcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltub2lzZXMoKSwgM11cIiBhdHRhY2g9XCJhdHRyaWJ1dGVzLm5vaXNlXCIgLz5cbiAgICAgICAgICAgIDwvbmd0LWJ1ZmZlci1nZW9tZXRyeT5cbiAgICAgICAgICAgIDxuZ3Qtc3BhcmtsZXMtbWF0ZXJpYWwgW3JlZl09XCJtYXRlcmlhbFJlZlwiIFt0cmFuc3BhcmVudF09XCJ0cnVlXCIgW2RlcHRoV3JpdGVdPVwiZmFsc2VcIiBbcGl4ZWxSYXRpb109XCJkcHIoKVwiIC8+XG4gICAgICAgIDwvbmd0LXBvaW50cz5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcGFya2xlcyBleHRlbmRzIE5ndFNpZ25hbFN0b3JlPE5ndHNTcGFya2xlc1N0YXRlPiB7XG4gICAgQElucHV0KCkgcG9pbnRzUmVmID0gaW5qZWN0Tmd0UmVmPFBvaW50cz4oKTtcblxuICAgIC8qKiBOdW1iZXIgb2YgcGFydGljbGVzIChkZWZhdWx0OiAxMDApICovXG4gICAgQElucHV0KCkgc2V0IGNvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb3VudCB9KTtcbiAgICB9XG5cbiAgICAvKiogU3BlZWQgb2YgcGFydGljbGVzIChkZWZhdWx0OiAxKSAqL1xuICAgIEBJbnB1dCgpIHNldCBzcGVlZChzcGVlZDogbnVtYmVyIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc3BlZWQgfSk7XG4gICAgfVxuXG4gICAgLyoqIE9wYWNpdHkgb2YgcGFydGljbGVzIChkZWZhdWx0OiAxKSAqL1xuICAgIEBJbnB1dCgpIHNldCBvcGFjaXR5KG9wYWNpdHk6IG51bWJlciB8IEZsb2F0MzJBcnJheSkge1xuICAgICAgICB0aGlzLnNldCh7IG9wYWNpdHkgfSk7XG4gICAgfVxuXG4gICAgLyoqIENvbG9yIG9mIHBhcnRpY2xlcyAoZGVmYXVsdDogMTAwKSAqL1xuICAgIEBJbnB1dCgpIHNldCBjb2xvcihjb2xvcjogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbiB8IEZsb2F0MzJBcnJheSkge1xuICAgICAgICB0aGlzLnNldCh7IGNvbG9yIH0pO1xuICAgIH1cblxuICAgIC8qKiBTaXplIG9mIHBhcnRpY2xlcyAoZGVmYXVsdDogcmFuZG9taXplZCBiZXR3ZWVuIDAgYW5kIDEpICovXG4gICAgQElucHV0KCkgc2V0IHNpemUoc2l6ZTogbnVtYmVyIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2l6ZSB9KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHNwYWNlIHRoZSBwYXJ0aWNsZXMgb2NjdXB5IChkZWZhdWx0OiAxKSAqL1xuICAgIEBJbnB1dCgpIHNldCBzY2FsZShzY2FsZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgVEhSRUUuVmVjdG9yMykge1xuICAgICAgICB0aGlzLnNldCh7IHNjYWxlIH0pO1xuICAgIH1cblxuICAgIC8qKiBNb3ZlbWVudCBmYWN0b3IgKGRlZmF1bHQ6IDEpICovXG4gICAgQElucHV0KCkgc2V0IG5vaXNlKG5vaXNlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBUSFJFRS5WZWN0b3IzIHwgRmxvYXQzMkFycmF5KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbm9pc2UgfSk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgI3N0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIHJlYWRvbmx5ICNjb3VudCA9IHRoaXMuc2VsZWN0KCdjb3VudCcpO1xuICAgIHJlYWRvbmx5ICNzY2FsZSA9IHRoaXMuc2VsZWN0KCdzY2FsZScpO1xuICAgIHJlYWRvbmx5ICNjb2xvciA9IHRoaXMuc2VsZWN0KCdjb2xvcicpO1xuXG4gICAgcmVhZG9ubHkgbWF0ZXJpYWxSZWYgPSBpbmplY3ROZ3RSZWY8SW5zdGFuY2VUeXBlPHR5cGVvZiBTcGFya2xlc01hdGVyaWFsPj4oKTtcblxuICAgIHJlYWRvbmx5IGRwciA9IHRoaXMuI3N0b3JlLnNlbGVjdCgndmlld3BvcnQnLCAnZHByJyk7XG4gICAgcmVhZG9ubHkgcG9zaXRpb25zID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgRmxvYXQzMkFycmF5LmZyb20oXG4gICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLiNjb3VudCgpIH0sICgpID0+XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplVmVjdG9yKHRoaXMuI3NjYWxlKCkpLm1hcChNYXRoVXRpbHMucmFuZEZsb2F0U3ByZWFkKVxuICAgICAgICAgICAgKS5mbGF0KClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICByZWFkb25seSBzaXplcyA9IHRoaXMuI2dldENvbXB1dGVkKCdzaXplJywgdGhpcy4jY291bnQsIE1hdGgucmFuZG9tKTtcbiAgICByZWFkb25seSBvcGFjaXRpZXMgPSB0aGlzLiNnZXRDb21wdXRlZCgnb3BhY2l0eScsIHRoaXMuI2NvdW50KTtcbiAgICByZWFkb25seSBzcGVlZHMgPSB0aGlzLiNnZXRDb21wdXRlZCgnc3BlZWQnLCB0aGlzLiNjb3VudCk7XG4gICAgcmVhZG9ubHkgbm9pc2VzID0gdGhpcy4jZ2V0Q29tcHV0ZWQoJ25vaXNlJywgKCkgPT4gdGhpcy4jY291bnQoKSAqIDMpO1xuICAgIHJlYWRvbmx5IGNvbG9ycyA9IHRoaXMuI2dldENvbXB1dGVkKFxuICAgICAgICBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2xvciA9IHRoaXMuI2NvbG9yKCk7XG4gICAgICAgICAgICByZXR1cm4gIWlzRmxvYXQzMkFycmF5KGNvbG9yKSA/IG5ldyBUSFJFRS5Db2xvcihjb2xvcikgOiBjb2xvcjtcbiAgICAgICAgfSksXG4gICAgICAgICgpID0+ICh0aGlzLiNjb2xvcigpID09PSB1bmRlZmluZWQgPyB0aGlzLiNjb3VudCgpICogMyA6IHRoaXMuI2NvdW50KCkpLFxuICAgICAgICAoKSA9PiAxXG4gICAgKTtcblxuICAgICNnZXRDb21wdXRlZDxUS2V5IGV4dGVuZHMga2V5b2YgTmd0c1NwYXJrbGVzU3RhdGU+KFxuICAgICAgICBuYW1lT3JDb21wdXRlZDogVEtleSB8IFNpZ25hbDxOZ3RzU3BhcmtsZXNTdGF0ZVtUS2V5XT4sXG4gICAgICAgIGNvdW50OiAoKSA9PiBudW1iZXIsXG4gICAgICAgIHNldERlZmF1bHQ/OiAodmFsdWU6IE5ndHNTcGFya2xlc1N0YXRlW1RLZXldKSA9PiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgdHlwZW9mIG5hbWVPckNvbXB1dGVkICE9PSAnc3RyaW5nJyAmJiBpc1NpZ25hbChuYW1lT3JDb21wdXRlZClcbiAgICAgICAgICAgICAgICA/IG5hbWVPckNvbXB1dGVkXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdChuYW1lT3JDb21wdXRlZCk7XG4gICAgICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB1c2VQcm9wQXNJc09yQXNBdHRyaWJ1dGUoY291bnQoKSwgdmFsdWUoKSwgc2V0RGVmYXVsdCkpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBub2lzZTogMSxcbiAgICAgICAgICAgIGNvdW50OiAxMDAsXG4gICAgICAgICAgICBzcGVlZDogMSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICBzY2FsZTogMSxcbiAgICAgICAgfSk7XG4gICAgICAgIGluamVjdEJlZm9yZVJlbmRlcih0aGlzLiNvbkJlZm9yZVJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICAjb25CZWZvcmVSZW5kZXIoeyBjbG9jayB9OiBOZ3RSZW5kZXJTdGF0ZSkge1xuICAgICAgICBpZiAoIXRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICB0aGlzLm1hdGVyaWFsUmVmLm5hdGl2ZUVsZW1lbnQudW5pZm9ybXNbJ3RpbWUnXS52YWx1ZSA9IGNsb2NrLmVsYXBzZWRUaW1lO1xuICAgIH1cbn1cbiJdfQ==
|