angular-three-soba 2.0.0-beta.9 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -4
- package/abstractions/README.md +279 -2
- package/abstractions/index.d.ts +13 -6
- package/abstractions/lib/billboard.d.ts +19 -0
- package/abstractions/lib/catmull-rom-line.d.ts +617 -0
- package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
- package/abstractions/lib/edges.d.ts +800 -0
- package/abstractions/lib/gradient-texture.d.ts +24 -0
- package/abstractions/lib/grid.d.ts +315 -0
- package/abstractions/lib/helper.d.ts +25 -0
- package/abstractions/lib/line.d.ts +41 -0
- package/abstractions/lib/prism-geometry.d.ts +32 -0
- package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
- package/abstractions/lib/rounded-box.d.ts +41 -0
- package/abstractions/lib/text-3d.d.ts +314 -0
- package/abstractions/lib/text.d.ts +54 -0
- package/cameras/README.md +91 -2
- package/cameras/index.d.ts +4 -4
- package/cameras/lib/camera-content.d.ts +10 -0
- package/cameras/lib/cube-camera.d.ts +38 -0
- package/cameras/lib/orthographic-camera.d.ts +40 -0
- package/cameras/lib/perspective-camera.d.ts +36 -0
- package/controls/README.md +96 -2
- package/controls/index.d.ts +4 -1
- package/controls/lib/camera-controls.d.ts +31 -0
- package/controls/lib/orbit-controls.d.ts +38 -0
- package/controls/lib/pivot-controls/axis-arrow.d.ts +31 -0
- package/controls/lib/pivot-controls/axis-rotator.d.ts +30 -0
- package/controls/lib/pivot-controls/pivot-controls.d.ts +110 -0
- package/controls/lib/pivot-controls/plane-slider.d.ts +32 -0
- package/controls/lib/pivot-controls/scaling-sphere.d.ts +32 -0
- package/controls/lib/scroll-controls.d.ts +78 -0
- package/esm2022/abstractions/index.mjs +14 -7
- package/esm2022/abstractions/lib/billboard.mjs +69 -0
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
- package/esm2022/abstractions/lib/edges.mjs +70 -0
- package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
- package/esm2022/abstractions/lib/grid.mjs +103 -0
- package/esm2022/abstractions/lib/helper.mjs +76 -0
- package/esm2022/abstractions/lib/line.mjs +126 -0
- package/esm2022/abstractions/lib/prism-geometry.mjs +46 -0
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
- package/esm2022/abstractions/lib/rounded-box.mjs +111 -0
- package/esm2022/abstractions/lib/text-3d.mjs +98 -0
- package/esm2022/abstractions/lib/text.mjs +91 -0
- package/esm2022/cameras/index.mjs +5 -5
- package/esm2022/cameras/lib/camera-content.mjs +14 -0
- package/esm2022/cameras/lib/cube-camera.mjs +111 -0
- package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
- package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
- package/esm2022/controls/index.mjs +5 -2
- package/esm2022/controls/lib/camera-controls.mjs +127 -0
- package/esm2022/controls/lib/orbit-controls.mjs +132 -0
- package/esm2022/controls/lib/pivot-controls/axis-arrow.mjs +263 -0
- package/esm2022/controls/lib/pivot-controls/axis-rotator.mjs +264 -0
- package/esm2022/controls/lib/pivot-controls/pivot-controls.mjs +340 -0
- package/esm2022/controls/lib/pivot-controls/plane-slider.mjs +266 -0
- package/esm2022/controls/lib/pivot-controls/scaling-sphere.mjs +232 -0
- package/esm2022/controls/lib/scroll-controls.mjs +268 -0
- package/esm2022/loaders/index.mjs +6 -5
- package/esm2022/loaders/lib/font-loader.mjs +49 -0
- package/esm2022/loaders/lib/gltf-loader.mjs +51 -0
- package/esm2022/loaders/lib/loader.mjs +109 -0
- package/esm2022/loaders/lib/progress.mjs +51 -0
- package/esm2022/loaders/lib/texture-loader.mjs +32 -0
- package/esm2022/materials/index.mjs +8 -7
- package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
- package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
- package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
- package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
- package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
- package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
- package/esm2022/materials/lib/point-material.mjs +33 -0
- package/esm2022/misc/index.mjs +14 -14
- package/esm2022/misc/lib/animations.mjs +71 -0
- package/esm2022/misc/lib/bake-shadows.mjs +26 -0
- package/esm2022/misc/lib/computed-attribute.mjs +55 -0
- package/esm2022/misc/lib/constants.mjs +5 -0
- package/esm2022/misc/lib/decal.mjs +139 -0
- package/esm2022/misc/lib/deprecated.mjs +15 -0
- package/esm2022/misc/lib/depth-buffer.mjs +39 -0
- package/esm2022/misc/lib/fbo.mjs +86 -0
- package/esm2022/misc/lib/html/html-content.mjs +327 -0
- package/esm2022/misc/lib/html/html.mjs +129 -0
- package/esm2022/misc/lib/html/utils.mjs +74 -0
- package/esm2022/misc/lib/intersect.mjs +52 -0
- package/esm2022/misc/lib/sampler.mjs +122 -0
- package/esm2022/misc/lib/scale-factor.mjs +29 -0
- package/esm2022/performances/index.mjs +7 -6
- package/esm2022/performances/lib/adaptive-dpr.mjs +52 -0
- package/esm2022/performances/lib/adaptive-events.mjs +28 -0
- package/esm2022/performances/lib/detailed.mjs +57 -0
- package/esm2022/performances/lib/instances/instances.mjs +183 -0
- package/esm2022/performances/lib/instances/position-mesh.mjs +51 -0
- package/esm2022/performances/lib/points/points.mjs +278 -0
- package/esm2022/performances/lib/points/position-point.mjs +53 -0
- package/esm2022/performances/lib/segments/segment-object.mjs +9 -0
- package/esm2022/performances/lib/segments/segments.mjs +129 -0
- package/esm2022/shaders/index.mjs +4 -18
- package/esm2022/shaders/lib/grid-material.mjs +81 -0
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
- package/esm2022/shaders/lib/point-material.mjs +24 -0
- package/esm2022/staging/index.mjs +19 -22
- package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
- package/esm2022/staging/lib/backdrop.mjs +73 -0
- package/esm2022/staging/lib/bb-anchor.mjs +58 -0
- package/esm2022/staging/lib/bounds.mjs +286 -0
- package/esm2022/staging/lib/camera-shake.mjs +69 -0
- package/esm2022/staging/lib/caustics.mjs +188 -0
- package/esm2022/staging/lib/center.mjs +118 -0
- package/esm2022/staging/lib/contact-shadows.mjs +214 -0
- package/esm2022/staging/lib/environment.mjs +481 -0
- package/esm2022/staging/lib/float.mjs +70 -0
- package/esm2022/staging/lib/lightformer.mjs +107 -0
- package/esm2022/staging/lib/matcap-texture.mjs +81 -0
- package/esm2022/staging/lib/normal-texture.mjs +81 -0
- package/esm2022/staging/lib/randomized-lights.mjs +104 -0
- package/esm2022/staging/lib/render-texture.mjs +203 -0
- package/esm2022/staging/lib/sky.mjs +86 -0
- package/esm2022/staging/lib/spot-light.mjs +453 -0
- package/esm2022/staging/lib/stage.mjs +236 -0
- package/esm2022/{utils/angular-three-soba-utils.mjs → stats/angular-three-soba-stats.mjs} +1 -1
- package/esm2022/stats/index.mjs +2 -0
- package/esm2022/stats/lib/stats.mjs +63 -0
- package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
- package/esm2022/vanilla-exports/index.mjs +3 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +884 -697
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +261 -308
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +1776 -109
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +191 -145
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +527 -748
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +783 -1935
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +591 -475
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs +51 -1369
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2350 -3521
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +70 -0
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -0
- package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
- package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
- package/loaders/README.md +130 -2
- package/loaders/index.d.ts +5 -4
- package/loaders/lib/font-loader.d.ts +27 -0
- package/loaders/lib/gltf-loader.d.ts +24 -0
- package/loaders/lib/loader.d.ts +29 -0
- package/loaders/lib/progress.d.ts +9 -0
- package/loaders/lib/texture-loader.d.ts +13 -0
- package/materials/README.md +160 -2
- package/materials/index.d.ts +7 -6
- package/materials/lib/custom-shader-material.d.ts +20 -0
- package/materials/lib/mesh-distort-material.d.ts +17 -0
- package/materials/lib/mesh-reflector-material.d.ts +51 -0
- package/materials/lib/mesh-refraction-material.d.ts +42 -0
- package/materials/lib/mesh-transmission-material.d.ts +77 -0
- package/materials/lib/mesh-wobble-material.d.ts +15 -0
- package/materials/lib/point-material.d.ts +11 -0
- package/metadata.json +1 -1
- package/misc/README.md +217 -2
- package/misc/index.d.ts +13 -13
- package/misc/lib/animations.d.ts +17 -0
- package/misc/lib/computed-attribute.d.ts +64 -0
- package/misc/lib/constants.d.ts +1 -0
- package/misc/lib/decal.d.ts +27 -0
- package/misc/lib/deprecated.d.ts +14 -0
- package/misc/lib/depth-buffer.d.ts +8 -0
- package/misc/lib/fbo.d.ts +46 -0
- package/misc/lib/html/html-content.d.ts +47 -0
- package/misc/lib/html/html.d.ts +30 -0
- package/misc/lib/html/utils.d.ts +14 -0
- package/misc/lib/intersect.d.ts +13 -0
- package/misc/lib/sampler.d.ts +73 -0
- package/misc/lib/scale-factor.d.ts +3 -0
- package/package.json +89 -49
- package/performances/index.d.ts +6 -5
- package/performances/lib/adaptive-dpr.d.ts +7 -0
- package/performances/{adaptive-events → lib}/adaptive-events.d.ts +0 -3
- package/performances/lib/detailed.d.ts +17 -0
- package/performances/lib/instances/instances.d.ts +122 -0
- package/performances/lib/instances/position-mesh.d.ts +20 -0
- package/performances/lib/points/points.d.ts +224 -0
- package/performances/lib/points/position-point.d.ts +21 -0
- package/performances/lib/segments/segment-object.d.ts +17 -0
- package/performances/lib/segments/segments.d.ts +97 -0
- package/shaders/index.d.ts +3 -17
- package/shaders/lib/grid-material.d.ts +69 -0
- package/shaders/lib/mesh-refraction-material.d.ts +11 -0
- package/shaders/lib/point-material.d.ts +14 -0
- package/staging/README.md +473 -2
- package/staging/index.d.ts +18 -21
- package/staging/lib/accumulative-shadows.d.ts +75 -0
- package/staging/lib/backdrop.d.ts +22 -0
- package/staging/lib/bb-anchor.d.ts +17 -0
- package/staging/lib/bounds.d.ts +47 -0
- package/staging/lib/camera-shake.d.ts +29 -0
- package/staging/lib/caustics.d.ts +53 -0
- package/staging/lib/center.d.ts +390 -0
- package/staging/lib/contact-shadows.d.ts +55 -0
- package/staging/lib/environment.d.ts +132 -0
- package/staging/lib/float.d.ts +20 -0
- package/staging/lib/lightformer.d.ts +310 -0
- package/staging/lib/matcap-texture.d.ts +32 -0
- package/staging/lib/normal-texture.d.ts +37 -0
- package/staging/lib/randomized-lights.d.ts +54 -0
- package/staging/lib/render-texture.d.ts +64 -0
- package/staging/lib/sky.d.ts +32 -0
- package/staging/lib/spot-light.d.ts +119 -0
- package/staging/lib/stage.d.ts +352 -0
- package/stats/README.md +3 -0
- package/stats/index.d.ts +1 -0
- package/stats/lib/stats.d.ts +14 -0
- package/vanilla-exports/README.md +3 -0
- package/vanilla-exports/index.d.ts +27 -0
- package/web-types.json +1 -1
- package/abstractions/billboard/billboard.d.ts +0 -28
- package/abstractions/detailed/detailed.d.ts +0 -26
- package/abstractions/edges/edges.d.ts +0 -34
- package/abstractions/grid/grid.d.ts +0 -50
- package/abstractions/text/text.d.ts +0 -82
- package/abstractions/text-3d/text-3d.d.ts +0 -81
- package/assets/distort.vert.glsl +0 -1
- package/cameras/camera/camera-content.d.ts +0 -13
- package/cameras/camera/camera.d.ts +0 -26
- package/cameras/cube-camera/cube-camera.d.ts +0 -69
- package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
- package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
- package/controls/orbit-controls/orbit-controls.d.ts +0 -54
- package/esm2022/abstractions/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/detailed/detailed.mjs +0 -64
- package/esm2022/abstractions/edges/edges.mjs +0 -88
- package/esm2022/abstractions/grid/grid.mjs +0 -180
- package/esm2022/abstractions/text/text.mjs +0 -274
- package/esm2022/abstractions/text-3d/text-3d.mjs +0 -165
- package/esm2022/cameras/camera/camera-content.mjs +0 -20
- package/esm2022/cameras/camera/camera.mjs +0 -77
- package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -181
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
- package/esm2022/loaders/loader/loader.mjs +0 -138
- package/esm2022/loaders/progress/progress.mjs +0 -45
- package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/materials/point-material/point-material.mjs +0 -46
- package/esm2022/misc/animations/animations.mjs +0 -59
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
- package/esm2022/misc/caustics/caustics.mjs +0 -387
- package/esm2022/misc/decal/decal.mjs +0 -187
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
- package/esm2022/misc/example/example.mjs +0 -160
- package/esm2022/misc/fbo/fbo.mjs +0 -47
- package/esm2022/misc/html/html-wrapper.mjs +0 -478
- package/esm2022/misc/html/html.mjs +0 -304
- package/esm2022/misc/sampler/sampler.mjs +0 -142
- package/esm2022/misc/shadow/shadow.mjs +0 -111
- package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
- package/esm2022/misc/trail/trail.mjs +0 -209
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
- package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
- package/esm2022/modifiers/index.mjs +0 -2
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
- package/esm2022/performances/points/points-input.mjs +0 -64
- package/esm2022/performances/points/points.mjs +0 -329
- package/esm2022/performances/points/position-point.mjs +0 -54
- package/esm2022/performances/segments/segment-object.mjs +0 -9
- package/esm2022/performances/segments/segments.mjs +0 -182
- package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
- package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
- package/esm2022/staging/backdrop/backdrop.mjs +0 -77
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -70
- package/esm2022/staging/bounds/bounds.mjs +0 -308
- package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
- package/esm2022/staging/center/center.mjs +0 -163
- package/esm2022/staging/cloud/cloud.mjs +0 -158
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
- package/esm2022/staging/environment/assets.mjs +0 -13
- package/esm2022/staging/environment/environment-cube.mjs +0 -47
- package/esm2022/staging/environment/environment-ground.mjs +0 -41
- package/esm2022/staging/environment/environment-input.mjs +0 -119
- package/esm2022/staging/environment/environment-map.mjs +0 -53
- package/esm2022/staging/environment/environment-portal.mjs +0 -113
- package/esm2022/staging/environment/environment.mjs +0 -61
- package/esm2022/staging/environment/utils.mjs +0 -105
- package/esm2022/staging/float/float.mjs +0 -94
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
- package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
- package/esm2022/staging/sky/sky.mjs +0 -119
- package/esm2022/staging/sparkles/sparkles.mjs +0 -164
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
- package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
- package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
- package/esm2022/staging/spot-light/spot-light.mjs +0 -81
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
- package/esm2022/staging/stage/stage.mjs +0 -388
- package/esm2022/staging/stars/stars.mjs +0 -147
- package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
- package/esm2022/staging/wireframe/wireframe.mjs +0 -224
- package/esm2022/utils/content/content.mjs +0 -15
- package/esm2022/utils/index.mjs +0 -2
- package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
- package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
- package/fesm2022/angular-three-soba-utils.mjs +0 -22
- package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
- package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
- package/loaders/loader/loader.d.ts +0 -33
- package/loaders/progress/progress.d.ts +0 -9
- package/loaders/texture-loader/texture-loader.d.ts +0 -7
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
- package/materials/point-material/point-material.d.ts +0 -24
- package/misc/animations/animations.d.ts +0 -15
- package/misc/caustics/caustics.d.ts +0 -87
- package/misc/decal/decal.d.ts +0 -49
- package/misc/depth-buffer/depth-buffer.d.ts +0 -9
- package/misc/example/example.d.ts +0 -81
- package/misc/fbo/fbo.d.ts +0 -17
- package/misc/html/html-wrapper.d.ts +0 -559
- package/misc/html/html.d.ts +0 -214
- package/misc/sampler/sampler.d.ts +0 -67
- package/misc/shadow/shadow.d.ts +0 -37
- package/misc/stats-gl/stats-gl.d.ts +0 -24
- package/misc/trail/trail.d.ts +0 -57
- package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
- package/misc/trail-texture/trail-texture.d.ts +0 -50
- package/modifiers/README.md +0 -3
- package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
- package/modifiers/index.d.ts +0 -1
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
- package/performances/points/points-input.d.ts +0 -32
- package/performances/points/points.d.ts +0 -92
- package/performances/points/position-point.d.ts +0 -11
- package/performances/segments/segment-object.d.ts +0 -7
- package/performances/segments/segments.d.ts +0 -124
- package/shaders/blur-pass/blur-pass.d.ts +0 -23
- package/shaders/caustics/caustics-material.d.ts +0 -4
- package/shaders/caustics/caustics-projection-material.d.ts +0 -4
- package/shaders/convolution-material/convolution-material.d.ts +0 -7
- package/shaders/discard-material/discard-material.d.ts +0 -3
- package/shaders/grid-material/grid-material.d.ts +0 -37
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
- package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
- package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
- package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
- package/shaders/shader-material/shader-material.d.ts +0 -6
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
- package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
- package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
- package/shaders/star-field-material/star-field-material.d.ts +0 -13
- package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
- package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
- package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
- package/staging/backdrop/backdrop.d.ts +0 -30
- package/staging/bb-anchor/bb-anchor.d.ts +0 -27
- package/staging/bounds/bounds.d.ts +0 -134
- package/staging/camera-shake/camera-shake.d.ts +0 -43
- package/staging/center/center.d.ts +0 -70
- package/staging/cloud/cloud.d.ts +0 -51
- package/staging/contact-shadows/contact-shadows.d.ts +0 -70
- package/staging/environment/assets.d.ts +0 -13
- package/staging/environment/environment-cube.d.ts +0 -15
- package/staging/environment/environment-ground.d.ts +0 -13
- package/staging/environment/environment-input.d.ts +0 -68
- package/staging/environment/environment-map.d.ts +0 -16
- package/staging/environment/environment-portal.d.ts +0 -18
- package/staging/environment/environment.d.ts +0 -8
- package/staging/environment/utils.d.ts +0 -7
- package/staging/float/float.d.ts +0 -31
- package/staging/matcap-texture/matcap-texture.d.ts +0 -13
- package/staging/normal-texture/normal-texture.d.ts +0 -16
- package/staging/sky/sky.d.ts +0 -48
- package/staging/sparkles/sparkles.d.ts +0 -63
- package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/shadow-mesh.d.ts +0 -37
- package/staging/spot-light/spot-light-input.d.ts +0 -38
- package/staging/spot-light/spot-light.d.ts +0 -39
- package/staging/spot-light/volumetric-mesh.d.ts +0 -24
- package/staging/stage/stage.d.ts +0 -130
- package/staging/stars/stars.d.ts +0 -45
- package/staging/wireframe/wireframe-input.d.ts +0 -65
- package/staging/wireframe/wireframe.d.ts +0 -28
- package/utils/README.md +0 -3
- package/utils/content/content.d.ts +0 -8
- package/utils/index.d.ts +0 -1
- /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input, untracked, viewChild } from '@angular/core';
|
|
2
|
+
import { omit, pick } from 'angular-three';
|
|
3
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
4
|
+
import { CatmullRomCurve3, Color, Vector3 } from 'three';
|
|
5
|
+
import { NgtsLine } from './line';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const defaultOptions = {
|
|
8
|
+
curveType: 'centripetal',
|
|
9
|
+
tension: 0.5,
|
|
10
|
+
segments: 20,
|
|
11
|
+
closed: false,
|
|
12
|
+
lineWidth: 1,
|
|
13
|
+
};
|
|
14
|
+
export class NgtsCatmullRomLine {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.points = input.required();
|
|
17
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
18
|
+
this.parameters = omit(this.options, ['curveType', 'tension', 'segments', 'closed', 'vertexColors']);
|
|
19
|
+
this.line = viewChild.required(NgtsLine);
|
|
20
|
+
this.closed = pick(this.options, 'closed');
|
|
21
|
+
this.curveType = pick(this.options, 'curveType');
|
|
22
|
+
this.tension = pick(this.options, 'tension');
|
|
23
|
+
this.segments = pick(this.options, 'segments');
|
|
24
|
+
this.vertexColors = pick(this.options, 'vertexColors');
|
|
25
|
+
this.curve = computed(() => {
|
|
26
|
+
const [points, closed, curveType, tension] = [this.points(), this.closed(), this.curveType(), this.tension()];
|
|
27
|
+
const mappedPoints = points.map((pt) => pt instanceof Vector3 ? pt : new Vector3(...pt));
|
|
28
|
+
return new CatmullRomCurve3(mappedPoints, closed, curveType, tension);
|
|
29
|
+
});
|
|
30
|
+
this.segmentedPoints = computed(() => {
|
|
31
|
+
const [curve, segments] = [this.curve(), this.segments()];
|
|
32
|
+
return curve.getPoints(segments);
|
|
33
|
+
});
|
|
34
|
+
this.interpolatedVertexColors = computed(() => {
|
|
35
|
+
const [vertexColors, segments] = [this.vertexColors(), this.segments()];
|
|
36
|
+
if (!vertexColors || vertexColors.length < 2)
|
|
37
|
+
return undefined;
|
|
38
|
+
if (vertexColors.length === segments + 1)
|
|
39
|
+
return vertexColors;
|
|
40
|
+
const mappedColors = vertexColors.map((color) => color instanceof Color ? color : new Color(...color));
|
|
41
|
+
if (untracked(this.closed))
|
|
42
|
+
mappedColors.push(mappedColors[0].clone());
|
|
43
|
+
const iColors = [mappedColors[0]];
|
|
44
|
+
const divisions = segments / (mappedColors.length - 1);
|
|
45
|
+
for (let i = 1; i < segments; i++) {
|
|
46
|
+
const alpha = (i % divisions) / divisions;
|
|
47
|
+
const colorIndex = Math.floor(i / divisions);
|
|
48
|
+
iColors.push(mappedColors[colorIndex].clone().lerp(mappedColors[colorIndex + 1], alpha));
|
|
49
|
+
}
|
|
50
|
+
iColors.push(mappedColors[mappedColors.length - 1]);
|
|
51
|
+
return iColors;
|
|
52
|
+
});
|
|
53
|
+
this.lineOptions = computed(() => ({ ...this.parameters(), vertexColors: this.interpolatedVertexColors() }));
|
|
54
|
+
}
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCatmullRomLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsCatmullRomLine, isStandalone: true, selector: "ngts-catmull-rom-line", inputs: { points: { classPropertyName: "points", publicName: "points", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "line", first: true, predicate: NgtsLine, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
57
|
+
<ngts-line [points]="segmentedPoints()" [options]="lineOptions()">
|
|
58
|
+
<ng-content />
|
|
59
|
+
</ngts-line>
|
|
60
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
61
|
+
}
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCatmullRomLine, decorators: [{
|
|
63
|
+
type: Component,
|
|
64
|
+
args: [{
|
|
65
|
+
selector: 'ngts-catmull-rom-line',
|
|
66
|
+
standalone: true,
|
|
67
|
+
template: `
|
|
68
|
+
<ngts-line [points]="segmentedPoints()" [options]="lineOptions()">
|
|
69
|
+
<ng-content />
|
|
70
|
+
</ngts-line>
|
|
71
|
+
`,
|
|
72
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
73
|
+
imports: [NgtsLine],
|
|
74
|
+
}]
|
|
75
|
+
}] });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0bXVsbC1yb20tbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi9jYXRtdWxsLXJvbS1saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFtQixNQUFNLFFBQVEsQ0FBQzs7QUFTbkQsTUFBTSxjQUFjLEdBQThCO0lBQ2pELFNBQVMsRUFBRSxhQUFhO0lBQ3hCLE9BQU8sRUFBRSxHQUFHO0lBQ1osUUFBUSxFQUFFLEVBQUU7SUFDWixNQUFNLEVBQUUsS0FBSztJQUNiLFNBQVMsRUFBRSxDQUFDO0NBQ1osQ0FBQztBQWFGLE1BQU0sT0FBTyxrQkFBa0I7SUFYL0I7UUFZQyxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBNkMsQ0FBQztRQUNyRSxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBRWhHLFNBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FB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VUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzFGLENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFcEQsT0FBTyxPQUFPLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3hHOzhHQXBEWSxrQkFBa0I7a0dBQWxCLGtCQUFrQiwyWEFLSixRQUFRLGdFQWJ4Qjs7OztFQUlULDREQUVTLFFBQVE7OzJGQUVOLGtCQUFrQjtrQkFYOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIHVudHJhY2tlZCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBDYXRtdWxsUm9tQ3VydmUzLCBDb2xvciwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNMaW5lLCBOZ3RzTGluZU9wdGlvbnMgfSBmcm9tICcuL2xpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNDYXRtdWxsUm9tTGluZU9wdGlvbnMgZXh0ZW5kcyBPbWl0PE5ndHNMaW5lT3B0aW9ucywgJ3NlZ21lbnRzJz4ge1xuXHRjdXJ2ZVR5cGU6ICdjZW50cmlwZXRhbCcgfCAnY2hvcmRhbCcgfCAnY2F0bXVsbHJvbSc7XG5cdHRlbnNpb246IG51bWJlcjtcblx0c2VnbWVudHM6IG51bWJlcjtcblx0Y2xvc2VkOiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c0NhdG11bGxSb21MaW5lT3B0aW9ucyA9IHtcblx0Y3VydmVUeXBlOiAnY2VudHJpcGV0YWwnLFxuXHR0ZW5zaW9uOiAwLjUsXG5cdHNlZ21lbnRzOiAyMCxcblx0Y2xvc2VkOiBmYWxzZSxcblx0bGluZVdpZHRoOiAxLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1jYXRtdWxsLXJvbS1saW5lJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0cy1saW5lIFtwb2ludHNdPVwic2VnbWVudGVkUG9pbnRzKClcIiBbb3B0aW9uc109XCJsaW5lT3B0aW9ucygpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0cy1saW5lPlxuXHRgLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndHNMaW5lXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0NhdG11bGxSb21MaW5lIHtcblx0cG9pbnRzID0gaW5wdXQucmVxdWlyZWQ8QXJyYXk8VmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXT4+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2N1cnZlVHlwZScsICd0ZW5zaW9uJywgJ3NlZ21lbnRzJywgJ2Nsb3NlZCcsICd2ZXJ0ZXhDb2xvcnMnXSk7XG5cblx0bGluZSA9IHZpZXdDaGlsZC5yZXF1aXJlZChOZ3RzTGluZSk7XG5cblx0cHJpdmF0ZSBjbG9zZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Nsb3NlZCcpO1xuXHRwcml2YXRlIGN1cnZlVHlwZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnY3VydmVUeXBlJyk7XG5cdHByaXZhdGUgdGVuc2lvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAndGVuc2lvbicpO1xuXHRwcml2YXRlIHNlZ21lbnRzID0gcGljayh0aGlzLm9wdGlvbnMsICdzZWdtZW50cycpO1xuXHRwcml2YXRlIHZlcnRleENvbG9ycyA9IHBpY2sodGhpcy5vcHRpb25zLCAndmVydGV4Q29sb3JzJyk7XG5cblx0cHJpdmF0ZSBjdXJ2ZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbcG9pbnRzLCBjbG9zZWQsIGN1cnZlVHlwZSwgdGVuc2lvbl0gPSBbdGhpcy5wb2ludHMoKSwgdGhpcy5jbG9zZWQoKSwgdGhpcy5jdXJ2ZVR5cGUoKSwgdGhpcy50ZW5zaW9uKCldO1xuXG5cdFx0Y29uc3QgbWFwcGVkUG9pbnRzID0gcG9pbnRzLm1hcCgocHQpID0+XG5cdFx0XHRwdCBpbnN0YW5jZW9mIFZlY3RvcjMgPyBwdCA6IG5ldyBWZWN0b3IzKC4uLihwdCBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pKSxcblx0XHQpO1xuXG5cdFx0cmV0dXJuIG5ldyBDYXRtdWxsUm9tQ3VydmUzKG1hcHBlZFBvaW50cywgY2xvc2VkLCBjdXJ2ZVR5cGUsIHRlbnNpb24pO1xuXHR9KTtcblxuXHRzZWdtZW50ZWRQb2ludHMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2N1cnZlLCBzZWdtZW50c10gPSBbdGhpcy5jdXJ2ZSgpLCB0aGlzLnNlZ21lbnRzKCldO1xuXHRcdHJldHVybiBjdXJ2ZS5nZXRQb2ludHMoc2VnbWVudHMpO1xuXHR9KTtcblxuXHRwcml2YXRlIGludGVycG9sYXRlZFZlcnRleENvbG9ycyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbdmVydGV4Q29sb3JzLCBzZWdtZW50c10gPSBbdGhpcy52ZXJ0ZXhDb2xvcnMoKSwgdGhpcy5zZWdtZW50cygpXTtcblx0XHRpZiAoIXZlcnRleENvbG9ycyB8fCB2ZXJ0ZXhDb2xvcnMubGVuZ3RoIDwgMikgcmV0dXJuIHVuZGVmaW5lZDtcblxuXHRcdGlmICh2ZXJ0ZXhDb2xvcnMubGVuZ3RoID09PSBzZWdtZW50cyArIDEpIHJldHVybiB2ZXJ0ZXhDb2xvcnM7XG5cblx0XHRjb25zdCBtYXBwZWRDb2xvcnMgPSB2ZXJ0ZXhDb2xvcnMubWFwKChjb2xvcikgPT5cblx0XHRcdGNvbG9yIGluc3RhbmNlb2YgQ29sb3IgPyBjb2xvciA6IG5ldyBDb2xvciguLi4oY29sb3IgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSksXG5cdFx0KTtcblx0XHRpZiAodW50cmFja2VkKHRoaXMuY2xvc2VkKSkgbWFwcGVkQ29sb3JzLnB1c2gobWFwcGVkQ29sb3JzWzBdLmNsb25lKCkpO1xuXG5cdFx0Y29uc3QgaUNvbG9yczogQ29sb3JbXSA9IFttYXBwZWRDb2xvcnNbMF1dO1xuXHRcdGNvbnN0IGRpdmlzaW9ucyA9IHNlZ21lbnRzIC8gKG1hcHBlZENvbG9ycy5sZW5ndGggLSAxKTtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHNlZ21lbnRzOyBpKyspIHtcblx0XHRcdGNvbnN0IGFscGhhID0gKGkgJSBkaXZpc2lvbnMpIC8gZGl2aXNpb25zO1xuXHRcdFx0Y29uc3QgY29sb3JJbmRleCA9IE1hdGguZmxvb3IoaSAvIGRpdmlzaW9ucyk7XG5cdFx0XHRpQ29sb3JzLnB1c2gobWFwcGVkQ29sb3JzW2NvbG9ySW5kZXhdLmNsb25lKCkubGVycChtYXBwZWRDb2xvcnNbY29sb3JJbmRleCArIDFdLCBhbHBoYSkpO1xuXHRcdH1cblx0XHRpQ29sb3JzLnB1c2gobWFwcGVkQ29sb3JzW21hcHBlZENvbG9ycy5sZW5ndGggLSAxXSk7XG5cblx0XHRyZXR1cm4gaUNvbG9ycztcblx0fSk7XG5cblx0bGluZU9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiAoeyAuLi50aGlzLnBhcmFtZXRlcnMoKSwgdmVydGV4Q29sb3JzOiB0aGlzLmludGVycG9sYXRlZFZlcnRleENvbG9ycygpIH0pKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';
|
|
2
|
+
import { omit, pick } from 'angular-three';
|
|
3
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
4
|
+
import { CubicBezierCurve3, Vector3 } from 'three';
|
|
5
|
+
import { NgtsLine } from './line';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const defaultOptions = {
|
|
8
|
+
lineWidth: 1,
|
|
9
|
+
segments: 20,
|
|
10
|
+
};
|
|
11
|
+
export class NgtsCubicBezierLine {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.start = input.required();
|
|
14
|
+
this.end = input.required();
|
|
15
|
+
this.midA = input.required();
|
|
16
|
+
this.midB = input.required();
|
|
17
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
18
|
+
this.parameters = omit(this.options, ['segments']);
|
|
19
|
+
this.line = viewChild.required(NgtsLine);
|
|
20
|
+
this.segments = pick(this.options, 'segments');
|
|
21
|
+
this.points = computed(() => {
|
|
22
|
+
const [start, end, midA, midB, segments] = [this.start(), this.end(), this.midA(), this.midB(), this.segments()];
|
|
23
|
+
const startV = start instanceof Vector3 ? start : new Vector3(...start);
|
|
24
|
+
const endV = end instanceof Vector3 ? end : new Vector3(...end);
|
|
25
|
+
const midAV = midA instanceof Vector3 ? midA : new Vector3(...midA);
|
|
26
|
+
const midBV = midB instanceof Vector3 ? midB : new Vector3(...midB);
|
|
27
|
+
return new CubicBezierCurve3(startV, midAV, midBV, endV).getPoints(segments);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCubicBezierLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsCubicBezierLine, isStandalone: true, selector: "ngts-cubic-bezier-line", inputs: { start: { classPropertyName: "start", publicName: "start", isSignal: true, isRequired: true, transformFunction: null }, end: { classPropertyName: "end", publicName: "end", isSignal: true, isRequired: true, transformFunction: null }, midA: { classPropertyName: "midA", publicName: "midA", isSignal: true, isRequired: true, transformFunction: null }, midB: { classPropertyName: "midB", publicName: "midB", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "line", first: true, predicate: NgtsLine, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
32
|
+
<ngts-line [points]="points()" [options]="parameters()">
|
|
33
|
+
<ng-content />
|
|
34
|
+
</ngts-line>
|
|
35
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCubicBezierLine, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{
|
|
40
|
+
selector: 'ngts-cubic-bezier-line',
|
|
41
|
+
standalone: true,
|
|
42
|
+
template: `
|
|
43
|
+
<ngts-line [points]="points()" [options]="parameters()">
|
|
44
|
+
<ng-content />
|
|
45
|
+
</ngts-line>
|
|
46
|
+
`,
|
|
47
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
48
|
+
imports: [NgtsLine],
|
|
49
|
+
}]
|
|
50
|
+
}] });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ViaWMtYmV6aWVyLWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvYWJzdHJhY3Rpb25zL3NyYy9saWIvY3ViaWMtYmV6aWVyLWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFtQixNQUFNLFFBQVEsQ0FBQzs7QUFNbkQsTUFBTSxjQUFjLEdBQStCO0lBQ2xELFNBQVMsRUFBRSxDQUFDO0lBQ1osUUFBUSxFQUFFLEVBQUU7Q0FDWixDQUFDO0FBYUYsTUFBTSxPQUFPLG1CQUFtQjtJQVhoQztRQVlDLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFzQyxDQUFDO1FBQzdELFFBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFzQyxDQUFDO1FBQzNELFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFzQyxDQUFDO1FBQzVELFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFzQyxDQUFDO1FBQzVELFlBQU8sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUUsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUU5QyxTQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QixhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFbEQsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNqSCxNQUFNLE1BQU0sR0FBRyxLQUFLLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDeEUsTUFBTSxJQUFJLEdBQUcsR0FBRyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwRSxNQUFNLEtBQUssR0FBRyxJQUFJLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDcEUsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztLQUNIOzhHQXBCWSxtQkFBbUI7a0dBQW5CLG1CQUFtQixrdEJBUUwsUUFBUSxnRUFoQnhCOzs7O0VBSVQsNERBRVMsUUFBUTs7MkZBRU4sbUJBQW1CO2tCQVgvQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBDdWJpY0JlemllckN1cnZlMywgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNMaW5lLCBOZ3RzTGluZU9wdGlvbnMgfSBmcm9tICcuL2xpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNDdWJpY0JlemllckxpbmVPcHRpb25zIGV4dGVuZHMgT21pdDxOZ3RzTGluZU9wdGlvbnMsICdzZWdtZW50cyc+IHtcblx0c2VnbWVudHM/OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzQ3ViaWNCZXppZXJMaW5lT3B0aW9ucyA9IHtcblx0bGluZVdpZHRoOiAxLFxuXHRzZWdtZW50czogMjAsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWN1YmljLWJlemllci1saW5lJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0cy1saW5lIFtwb2ludHNdPVwicG9pbnRzKClcIiBbb3B0aW9uc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3RzLWxpbmU+XG5cdGAsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0c0xpbmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ3ViaWNCZXppZXJMaW5lIHtcblx0c3RhcnQgPSBpbnB1dC5yZXF1aXJlZDxWZWN0b3IzIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdPigpO1xuXHRlbmQgPSBpbnB1dC5yZXF1aXJlZDxWZWN0b3IzIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdPigpO1xuXHRtaWRBID0gaW5wdXQucmVxdWlyZWQ8VmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXT4oKTtcblx0bWlkQiA9IGlucHV0LnJlcXVpcmVkPFZlY3RvcjMgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ3NlZ21lbnRzJ10pO1xuXG5cdGxpbmUgPSB2aWV3Q2hpbGQucmVxdWlyZWQoTmd0c0xpbmUpO1xuXG5cdHByaXZhdGUgc2VnbWVudHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NlZ21lbnRzJyk7XG5cblx0cG9pbnRzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtzdGFydCwgZW5kLCBtaWRBLCBtaWRCLCBzZWdtZW50c10gPSBbdGhpcy5zdGFydCgpLCB0aGlzLmVuZCgpLCB0aGlzLm1pZEEoKSwgdGhpcy5taWRCKCksIHRoaXMuc2VnbWVudHMoKV07XG5cdFx0Y29uc3Qgc3RhcnRWID0gc3RhcnQgaW5zdGFuY2VvZiBWZWN0b3IzID8gc3RhcnQgOiBuZXcgVmVjdG9yMyguLi5zdGFydCk7XG5cdFx0Y29uc3QgZW5kViA9IGVuZCBpbnN0YW5jZW9mIFZlY3RvcjMgPyBlbmQgOiBuZXcgVmVjdG9yMyguLi5lbmQpO1xuXHRcdGNvbnN0IG1pZEFWID0gbWlkQSBpbnN0YW5jZW9mIFZlY3RvcjMgPyBtaWRBIDogbmV3IFZlY3RvcjMoLi4ubWlkQSk7XG5cdFx0Y29uc3QgbWlkQlYgPSBtaWRCIGluc3RhbmNlb2YgVmVjdG9yMyA/IG1pZEIgOiBuZXcgVmVjdG9yMyguLi5taWRCKTtcblx0XHRyZXR1cm4gbmV3IEN1YmljQmV6aWVyQ3VydmUzKHN0YXJ0ViwgbWlkQVYsIG1pZEJWLCBlbmRWKS5nZXRQb2ludHMoc2VnbWVudHMpO1xuXHR9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { afterNextRender, ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';
|
|
2
|
+
import { checkNeedsUpdate, getLocalState, omit } from 'angular-three';
|
|
3
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
|
+
import { EdgesGeometry } from 'three';
|
|
6
|
+
import { NgtsLine } from './line';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
const defaultOptions = {
|
|
9
|
+
lineWidth: 1,
|
|
10
|
+
threshold: 15,
|
|
11
|
+
};
|
|
12
|
+
export class NgtsEdges {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
15
|
+
this.parameters = omit(this.options, ['threshold', 'geometry']);
|
|
16
|
+
this.lineOptions = computed(() => ({ ...this.parameters(), raycast: () => null }));
|
|
17
|
+
this.tmpPoints = [0, 0, 0, 1, 0, 0];
|
|
18
|
+
this.line = viewChild.required(NgtsLine);
|
|
19
|
+
const autoEffect = injectAutoEffect();
|
|
20
|
+
afterNextRender(() => {
|
|
21
|
+
autoEffect(() => {
|
|
22
|
+
const line = this.line().lineRef()?.nativeElement;
|
|
23
|
+
if (!line)
|
|
24
|
+
return;
|
|
25
|
+
const lS = getLocalState(line);
|
|
26
|
+
if (!lS)
|
|
27
|
+
return;
|
|
28
|
+
const parent = lS.parent();
|
|
29
|
+
if (!parent)
|
|
30
|
+
return;
|
|
31
|
+
const { geometry: explicitGeometry, threshold } = this.options();
|
|
32
|
+
const geometry = explicitGeometry ?? parent.geometry;
|
|
33
|
+
if (!geometry)
|
|
34
|
+
return;
|
|
35
|
+
const cached = this.memoizedGeometry === geometry && this.memoizedThreshold === threshold;
|
|
36
|
+
if (cached)
|
|
37
|
+
return;
|
|
38
|
+
this.memoizedGeometry = geometry;
|
|
39
|
+
this.memoizedThreshold = threshold;
|
|
40
|
+
const points = new EdgesGeometry(geometry, threshold).attributes['position']
|
|
41
|
+
.array;
|
|
42
|
+
line.geometry.setPositions(points);
|
|
43
|
+
checkNeedsUpdate(line.geometry.attributes['instanceStart']);
|
|
44
|
+
checkNeedsUpdate(line.geometry.attributes['instanceEnd']);
|
|
45
|
+
line.computeLineDistances();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsEdges, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsEdges, isStandalone: true, selector: "ngts-edges", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "line", first: true, predicate: NgtsLine, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
51
|
+
<ngts-line [points]="tmpPoints" [options]="lineOptions()">
|
|
52
|
+
<ng-content />
|
|
53
|
+
</ngts-line>
|
|
54
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsEdges, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{
|
|
59
|
+
selector: 'ngts-edges',
|
|
60
|
+
standalone: true,
|
|
61
|
+
template: `
|
|
62
|
+
<ngts-line [points]="tmpPoints" [options]="lineOptions()">
|
|
63
|
+
<ng-content />
|
|
64
|
+
</ngts-line>
|
|
65
|
+
`,
|
|
66
|
+
imports: [NgtsLine],
|
|
67
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
68
|
+
}]
|
|
69
|
+
}], ctorParameters: () => [] });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvYWJzdHJhY3Rpb25zL3NyYy9saWIvZWRnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBVyxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBd0QsYUFBYSxFQUFRLE1BQU0sT0FBTyxDQUFDO0FBRWxHLE9BQU8sRUFBNkIsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDOztBQVk3RCxNQUFNLGNBQWMsR0FBcUI7SUFDeEMsU0FBUyxFQUFFLENBQUM7SUFDWixTQUFTLEVBQUUsRUFBRTtDQUNiLENBQUM7QUFhRixNQUFNLE9BQU8sU0FBUztJQVlyQjtRQVhBLFlBQU8sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFekQsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUUsY0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV6QyxTQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQU1uQyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPO2dCQUVsQixNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxFQUFFO29CQUFFLE9BQU87Z0JBRWhCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQVUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE1BQU07b0JBQUUsT0FBTztnQkFFcEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pFLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxRQUFRO29CQUFFLE9BQU87Z0JBRXRCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsQ0FBQztnQkFDMUYsSUFBSSxNQUFNO29CQUFFLE9BQU87Z0JBRW5CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7Z0JBRW5DLE1BQU0sTUFBTSxHQUFJLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFxQjtxQkFDL0YsS0FBcUIsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25DLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQTNDVyxTQUFTO2tHQUFULFNBQVMsc1BBT0ssUUFBUSxnRUFmeEI7Ozs7RUFJVCw0REFDUyxRQUFROzsyRkFHTixTQUFTO2tCQVhyQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO29CQUNuQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjaGVja05lZWRzVXBkYXRlLCBnZXRMb2NhbFN0YXRlLCBOZ3RNZXNoLCBvbWl0IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5LCBDb2xvclJlcHJlc2VudGF0aW9uLCBFZGdlc0dlb21ldHJ5LCBNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTGluZU1hdGVyaWFsUGFyYW1ldGVycyB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBOZ3RMaW5lMiwgTmd0TGluZU1hdGVyaWFsLCBOZ3RzTGluZSB9IGZyb20gJy4vbGluZSc7XG5cbmV4cG9ydCB0eXBlIE5ndHNFZGdlc09wdGlvbnMgPSBQYXJ0aWFsPE5ndE1lc2g+ICYge1xuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cdGxpbmVXaWR0aD86IG51bWJlcjtcbn0gJiBPbWl0PExpbmVNYXRlcmlhbFBhcmFtZXRlcnMsICd2ZXJ0ZXhDb2xvcnMnIHwgJ2NvbG9yJz4gJlxuXHRPbWl0PFBhcnRpYWw8Tmd0TGluZTI+LCAnZ2VvbWV0cnknPiAmXG5cdE9taXQ8UGFydGlhbDxOZ3RMaW5lTWF0ZXJpYWw+LCAnY29sb3InIHwgJ3ZlcnRleENvbG9ycyc+ICYge1xuXHRcdGdlb21ldHJ5PzogQnVmZmVyR2VvbWV0cnk7XG5cdFx0Y29sb3I/OiBDb2xvclJlcHJlc2VudGF0aW9uO1xuXHR9O1xuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c0VkZ2VzT3B0aW9ucyA9IHtcblx0bGluZVdpZHRoOiAxLFxuXHR0aHJlc2hvbGQ6IDE1LFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1lZGdlcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndHMtbGluZSBbcG9pbnRzXT1cInRtcFBvaW50c1wiIFtvcHRpb25zXT1cImxpbmVPcHRpb25zKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3RzLWxpbmU+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RzTGluZV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzRWRnZXMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHByaXZhdGUgcGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ3RocmVzaG9sZCcsICdnZW9tZXRyeSddKTtcblxuXHRwcm90ZWN0ZWQgbGluZU9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiAoeyAuLi50aGlzLnBhcmFtZXRlcnMoKSwgcmF5Y2FzdDogKCkgPT4gbnVsbCB9KSk7XG5cdHByb3RlY3RlZCB0bXBQb2ludHMgPSBbMCwgMCwgMCwgMSwgMCwgMF07XG5cblx0bGluZSA9IHZpZXdDaGlsZC5yZXF1aXJlZChOZ3RzTGluZSk7XG5cblx0cHJpdmF0ZSBtZW1vaXplZEdlb21ldHJ5PzogQnVmZmVyR2VvbWV0cnk7XG5cdHByaXZhdGUgbWVtb2l6ZWRUaHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGxpbmUgPSB0aGlzLmxpbmUoKS5saW5lUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRcdGlmICghbGluZSkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IGxTID0gZ2V0TG9jYWxTdGF0ZShsaW5lKTtcblx0XHRcdFx0aWYgKCFsUykgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IHBhcmVudCA9IGxTLnBhcmVudCgpIGFzIE1lc2g7XG5cdFx0XHRcdGlmICghcGFyZW50KSByZXR1cm47XG5cblx0XHRcdFx0Y29uc3QgeyBnZW9tZXRyeTogZXhwbGljaXRHZW9tZXRyeSwgdGhyZXNob2xkIH0gPSB0aGlzLm9wdGlvbnMoKTtcblx0XHRcdFx0Y29uc3QgZ2VvbWV0cnkgPSBleHBsaWNpdEdlb21ldHJ5ID8/IHBhcmVudC5nZW9tZXRyeTtcblx0XHRcdFx0aWYgKCFnZW9tZXRyeSkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IGNhY2hlZCA9IHRoaXMubWVtb2l6ZWRHZW9tZXRyeSA9PT0gZ2VvbWV0cnkgJiYgdGhpcy5tZW1vaXplZFRocmVzaG9sZCA9PT0gdGhyZXNob2xkO1xuXHRcdFx0XHRpZiAoY2FjaGVkKSByZXR1cm47XG5cblx0XHRcdFx0dGhpcy5tZW1vaXplZEdlb21ldHJ5ID0gZ2VvbWV0cnk7XG5cdFx0XHRcdHRoaXMubWVtb2l6ZWRUaHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG5cblx0XHRcdFx0Y29uc3QgcG9pbnRzID0gKG5ldyBFZGdlc0dlb21ldHJ5KGdlb21ldHJ5LCB0aHJlc2hvbGQpLmF0dHJpYnV0ZXNbJ3Bvc2l0aW9uJ10gYXMgQnVmZmVyQXR0cmlidXRlKVxuXHRcdFx0XHRcdC5hcnJheSBhcyBGbG9hdDMyQXJyYXk7XG5cdFx0XHRcdGxpbmUuZ2VvbWV0cnkuc2V0UG9zaXRpb25zKHBvaW50cyk7XG5cdFx0XHRcdGNoZWNrTmVlZHNVcGRhdGUobGluZS5nZW9tZXRyeS5hdHRyaWJ1dGVzWydpbnN0YW5jZVN0YXJ0J10pO1xuXHRcdFx0XHRjaGVja05lZWRzVXBkYXRlKGxpbmUuZ2VvbWV0cnkuYXR0cmlidXRlc1snaW5zdGFuY2VFbmQnXSk7XG5cdFx0XHRcdGxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, input, untracked, } from '@angular/core';
|
|
3
|
+
import { extend, injectStore, NgtArgs, omit } from 'angular-three';
|
|
4
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
|
+
import { CanvasTexture, Color } from 'three';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const defaultOptions = {
|
|
8
|
+
size: 1024,
|
|
9
|
+
width: 16,
|
|
10
|
+
type: 'linear',
|
|
11
|
+
innerCircleRadius: 0,
|
|
12
|
+
outerCircleRadius: 'auto',
|
|
13
|
+
};
|
|
14
|
+
export class NgtsGradientTexture {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.attach = input('map');
|
|
17
|
+
this.stops = input.required();
|
|
18
|
+
this.colors = input.required();
|
|
19
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
20
|
+
this.parameters = omit(this.options, ['size', 'width', 'type', 'innerCircleRadius', 'outerCircleRadius']);
|
|
21
|
+
this.store = injectStore();
|
|
22
|
+
this.gl = this.store.select('gl');
|
|
23
|
+
this.document = inject(DOCUMENT);
|
|
24
|
+
this.canvas = computed(() => {
|
|
25
|
+
const canvas = this.document.createElement('canvas');
|
|
26
|
+
const context = canvas.getContext('2d');
|
|
27
|
+
const [{ width, size, type, outerCircleRadius, innerCircleRadius }, stops, colors] = [
|
|
28
|
+
untracked(this.options),
|
|
29
|
+
this.stops(),
|
|
30
|
+
this.colors(),
|
|
31
|
+
];
|
|
32
|
+
canvas.width = width;
|
|
33
|
+
canvas.height = size;
|
|
34
|
+
let gradient;
|
|
35
|
+
if (type === 'linear') {
|
|
36
|
+
gradient = context.createLinearGradient(0, 0, 0, size);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const canvasCenterX = canvas.width / 2;
|
|
40
|
+
const canvasCenterY = canvas.height / 2;
|
|
41
|
+
const radius = outerCircleRadius !== 'auto'
|
|
42
|
+
? Math.abs(Number(outerCircleRadius))
|
|
43
|
+
: Math.sqrt(canvasCenterX ** 2 + canvasCenterY ** 2);
|
|
44
|
+
gradient = context.createRadialGradient(canvasCenterX, canvasCenterY, Math.abs(innerCircleRadius), canvasCenterX, canvasCenterY, radius);
|
|
45
|
+
}
|
|
46
|
+
const tempColor = new Color(); // reuse instance for performance
|
|
47
|
+
let i = stops.length;
|
|
48
|
+
while (i--) {
|
|
49
|
+
gradient.addColorStop(stops[i], tempColor.set(colors[i]).getStyle());
|
|
50
|
+
}
|
|
51
|
+
context.save();
|
|
52
|
+
context.fillStyle = gradient;
|
|
53
|
+
context.fillRect(0, 0, width, size);
|
|
54
|
+
context.restore();
|
|
55
|
+
return canvas;
|
|
56
|
+
});
|
|
57
|
+
extend({ CanvasTexture });
|
|
58
|
+
}
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsGradientTexture, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: NgtsGradientTexture, isStandalone: true, selector: "ngts-gradient-texture", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, stops: { classPropertyName: "stops", publicName: "stops", isSignal: true, isRequired: true, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
61
|
+
<ngt-canvas-texture
|
|
62
|
+
*args="[canvas()]"
|
|
63
|
+
[attach]="attach()"
|
|
64
|
+
[colorSpace]="gl().outputColorSpace"
|
|
65
|
+
[parameters]="parameters()"
|
|
66
|
+
>
|
|
67
|
+
<ng-content />
|
|
68
|
+
</ngt-canvas-texture>
|
|
69
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsGradientTexture, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{
|
|
74
|
+
selector: 'ngts-gradient-texture',
|
|
75
|
+
standalone: true,
|
|
76
|
+
template: `
|
|
77
|
+
<ngt-canvas-texture
|
|
78
|
+
*args="[canvas()]"
|
|
79
|
+
[attach]="attach()"
|
|
80
|
+
[colorSpace]="gl().outputColorSpace"
|
|
81
|
+
[parameters]="parameters()"
|
|
82
|
+
>
|
|
83
|
+
<ng-content />
|
|
84
|
+
</ngt-canvas-texture>
|
|
85
|
+
`,
|
|
86
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
87
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
88
|
+
imports: [NgtArgs],
|
|
89
|
+
}]
|
|
90
|
+
}], ctorParameters: () => [] });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhZGllbnQtdGV4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi9ncmFkaWVudC10ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBNkIsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBdUIsTUFBTSxPQUFPLENBQUM7O0FBVWxFLE1BQU0sY0FBYyxHQUErQjtJQUNsRCxJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxFQUFFO0lBQ1QsSUFBSSxFQUFFLFFBQVE7SUFDZCxpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLGlCQUFpQixFQUFFLE1BQU07Q0FDekIsQ0FBQztBQW1CRixNQUFNLE9BQU8sbUJBQW1CO0lBMEQvQjtRQXpEQSxXQUFNLEdBQUcsS0FBSyxDQUFnQixLQUFLLENBQUMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBaUIsQ0FBQztRQUN4QyxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBOEIsQ0FBQztRQUN0RCxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9B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U1QsNERBR1MsT0FBTzs7MkZBRUwsbUJBQW1CO2tCQWpCL0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7RUFTVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0U3RvcmUsIE5ndEFyZ3MsIE5ndEF0dGFjaGFibGUsIE5ndFRleHR1cmUsIG9taXQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IENhbnZhc1RleHR1cmUsIENvbG9yLCBDb2xvclJlcHJlc2VudGF0aW9uIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNHcmFkaWVudFRleHR1cmVPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxPbWl0PE5ndFRleHR1cmUsICd0eXBlJz4+IHtcblx0c2l6ZTogbnVtYmVyO1xuXHR3aWR0aDogbnVtYmVyO1xuXHR0eXBlOiAnbGluZWFyJyB8ICdyYWRpYWwnO1xuXHRpbm5lckNpcmNsZVJhZGl1czogbnVtYmVyO1xuXHRvdXRlckNpcmNsZVJhZGl1czogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c0dyYWRpZW50VGV4dHVyZU9wdGlvbnMgPSB7XG5cdHNpemU6IDEwMjQsXG5cdHdpZHRoOiAxNixcblx0dHlwZTogJ2xpbmVhcicsXG5cdGlubmVyQ2lyY2xlUmFkaXVzOiAwLFxuXHRvdXRlckNpcmNsZVJhZGl1czogJ2F1dG8nLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1ncmFkaWVudC10ZXh0dXJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWNhbnZhcy10ZXh0dXJlXG5cdFx0XHQqYXJncz1cIltjYW52YXMoKV1cIlxuXHRcdFx0W2F0dGFjaF09XCJhdHRhY2goKVwiXG5cdFx0XHRbY29sb3JTcGFjZV09XCJnbCgpLm91dHB1dENvbG9yU3BhY2VcIlxuXHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHQ+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWNhbnZhcy10ZXh0dXJlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNHcmFkaWVudFRleHR1cmUge1xuXHRhdHRhY2ggPSBpbnB1dDxOZ3RBdHRhY2hhYmxlPignbWFwJyk7XG5cdHN0b3BzID0gaW5wdXQucmVxdWlyZWQ8QXJyYXk8bnVtYmVyPj4oKTtcblx0Y29sb3JzID0gaW5wdXQucmVxdWlyZWQ8QXJyYXk8Q29sb3JSZXByZXNlbnRhdGlvbj4+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ3NpemUnLCAnd2lkdGgnLCAndHlwZScsICdpbm5lckNpcmNsZVJhZGl1cycsICdvdXRlckNpcmNsZVJhZGl1cyddKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0Z2wgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZ2wnKTtcblx0cHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cblx0Y2FudmFzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGNhbnZhcyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG5cdFx0Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpITtcblx0XHRjb25zdCBbeyB3aWR0aCwgc2l6ZSwgdHlwZSwgb3V0ZXJDaXJjbGVSYWRpdXMsIGlubmVyQ2lyY2xlUmFkaXVzIH0sIHN0b3BzLCBjb2xvcnNdID0gW1xuXHRcdFx0dW50cmFja2VkKHRoaXMub3B0aW9ucyksXG5cdFx0XHR0aGlzLnN0b3BzKCksXG5cdFx0XHR0aGlzLmNvbG9ycygpLFxuXHRcdF07XG5cdFx0Y2FudmFzLndpZHRoID0gd2lkdGg7XG5cdFx0Y2FudmFzLmhlaWdodCA9IHNpemU7XG5cblx0XHRsZXQgZ3JhZGllbnQ6IENhbnZhc0dyYWRpZW50O1xuXG5cdFx0aWYgKHR5cGUgPT09ICdsaW5lYXInKSB7XG5cdFx0XHRncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMCwgc2l6ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGNhbnZhc0NlbnRlclggPSBjYW52YXMud2lkdGggLyAyO1xuXHRcdFx0Y29uc3QgY2FudmFzQ2VudGVyWSA9IGNhbnZhcy5oZWlnaHQgLyAyO1xuXHRcdFx0Y29uc3QgcmFkaXVzID1cblx0XHRcdFx0b3V0ZXJDaXJjbGVSYWRpdXMgIT09ICdhdXRvJ1xuXHRcdFx0XHRcdD8gTWF0aC5hYnMoTnVtYmVyKG91dGVyQ2lyY2xlUmFkaXVzKSlcblx0XHRcdFx0XHQ6IE1hdGguc3FydChjYW52YXNDZW50ZXJYICoqIDIgKyBjYW52YXNDZW50ZXJZICoqIDIpO1xuXHRcdFx0Z3JhZGllbnQgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KFxuXHRcdFx0XHRjYW52YXNDZW50ZXJYLFxuXHRcdFx0XHRjYW52YXNDZW50ZXJZLFxuXHRcdFx0XHRNYXRoLmFicyhpbm5lckNpcmNsZVJhZGl1cyksXG5cdFx0XHRcdGNhbnZhc0NlbnRlclgsXG5cdFx0XHRcdGNhbnZhc0NlbnRlclksXG5cdFx0XHRcdHJhZGl1cyxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGVtcENvbG9yID0gbmV3IENvbG9yKCk7IC8vIHJldXNlIGluc3RhbmNlIGZvciBwZXJmb3JtYW5jZVxuXG5cdFx0bGV0IGkgPSBzdG9wcy5sZW5ndGg7XG5cdFx0d2hpbGUgKGktLSkge1xuXHRcdFx0Z3JhZGllbnQuYWRkQ29sb3JTdG9wKHN0b3BzW2ldLCB0ZW1wQ29sb3Iuc2V0KGNvbG9yc1tpXSkuZ2V0U3R5bGUoKSk7XG5cdFx0fVxuXG5cdFx0Y29udGV4dC5zYXZlKCk7XG5cdFx0Y29udGV4dC5maWxsU3R5bGUgPSBncmFkaWVudDtcblx0XHRjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBzaXplKTtcblx0XHRjb250ZXh0LnJlc3RvcmUoKTtcblxuXHRcdHJldHVybiBjYW52YXM7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IENhbnZhc1RleHR1cmUgfSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input, viewChild, } from '@angular/core';
|
|
2
|
+
import { extend, injectBeforeRender, NgtArgs, omit, pick } from 'angular-three';
|
|
3
|
+
import { GridMaterial } from 'angular-three-soba/shaders';
|
|
4
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
|
+
import { BackSide, Mesh, Plane, PlaneGeometry, Vector3 } from 'three';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const defaultOptions = {
|
|
8
|
+
planeArgs: [],
|
|
9
|
+
cellSize: 0.5,
|
|
10
|
+
cellThickness: 0.5,
|
|
11
|
+
cellColor: 'black',
|
|
12
|
+
sectionSize: 1,
|
|
13
|
+
sectionThickness: 1,
|
|
14
|
+
sectionColor: '#2080ff',
|
|
15
|
+
infiniteGrid: false,
|
|
16
|
+
followCamera: false,
|
|
17
|
+
fadeDistance: 100,
|
|
18
|
+
fadeStrength: 1,
|
|
19
|
+
fadeFrom: 1,
|
|
20
|
+
side: BackSide,
|
|
21
|
+
};
|
|
22
|
+
export class NgtsGrid {
|
|
23
|
+
constructor() {
|
|
24
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
25
|
+
this.parameters = omit(this.options, [
|
|
26
|
+
'planeArgs',
|
|
27
|
+
'cellSize',
|
|
28
|
+
'cellThickness',
|
|
29
|
+
'cellColor',
|
|
30
|
+
'sectionSize',
|
|
31
|
+
'sectionThickness',
|
|
32
|
+
'sectionColor',
|
|
33
|
+
'infiniteGrid',
|
|
34
|
+
'followCamera',
|
|
35
|
+
'fadeDistance',
|
|
36
|
+
'fadeStrength',
|
|
37
|
+
'fadeFrom',
|
|
38
|
+
'side',
|
|
39
|
+
]);
|
|
40
|
+
this.meshRef = viewChild.required('mesh');
|
|
41
|
+
this.plane = new Plane();
|
|
42
|
+
this.upVector = new Vector3(0, 1, 0);
|
|
43
|
+
this.zeroVector = new Vector3(0, 0, 0);
|
|
44
|
+
this.planeArgs = pick(this.options, 'planeArgs');
|
|
45
|
+
this.side = pick(this.options, 'side');
|
|
46
|
+
this.uniforms = computed(() => {
|
|
47
|
+
const { cellSize, sectionSize, cellColor, sectionColor, cellThickness, sectionThickness, fadeDistance, fadeStrength, fadeFrom, infiniteGrid, followCamera, } = this.options();
|
|
48
|
+
return {
|
|
49
|
+
cellSize,
|
|
50
|
+
sectionSize,
|
|
51
|
+
cellColor,
|
|
52
|
+
sectionColor,
|
|
53
|
+
cellThickness,
|
|
54
|
+
sectionThickness,
|
|
55
|
+
fadeDistance,
|
|
56
|
+
fadeStrength,
|
|
57
|
+
fadeFrom,
|
|
58
|
+
infiniteGrid,
|
|
59
|
+
followCamera,
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
extend({ Mesh, PlaneGeometry, GridMaterial });
|
|
63
|
+
injectBeforeRender(({ camera }) => {
|
|
64
|
+
const mesh = this.meshRef().nativeElement;
|
|
65
|
+
this.plane.setFromNormalAndCoplanarPoint(this.upVector, this.zeroVector).applyMatrix4(mesh.matrixWorld);
|
|
66
|
+
const gridMaterial = mesh.material;
|
|
67
|
+
const worldCamProjPosition = gridMaterial.uniforms['worldCamProjPosition'];
|
|
68
|
+
const worldPlanePosition = gridMaterial.uniforms['worldPlanePosition'];
|
|
69
|
+
this.plane.projectPoint(camera.position, worldCamProjPosition.value);
|
|
70
|
+
worldPlanePosition.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsGrid, isStandalone: true, selector: "ngts-grid", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
75
|
+
<ngt-mesh #mesh [frustumCulled]="false" [parameters]="parameters()">
|
|
76
|
+
<ngt-plane-geometry *args="planeArgs()" />
|
|
77
|
+
<ngt-grid-material [transparent]="true" [side]="side()" [parameters]="uniforms()">
|
|
78
|
+
<ngt-value attach="extensions.derivatives" [rawValue]="true" />
|
|
79
|
+
</ngt-grid-material>
|
|
80
|
+
<ng-content />
|
|
81
|
+
</ngt-mesh>
|
|
82
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsGrid, decorators: [{
|
|
85
|
+
type: Component,
|
|
86
|
+
args: [{
|
|
87
|
+
selector: 'ngts-grid',
|
|
88
|
+
standalone: true,
|
|
89
|
+
template: `
|
|
90
|
+
<ngt-mesh #mesh [frustumCulled]="false" [parameters]="parameters()">
|
|
91
|
+
<ngt-plane-geometry *args="planeArgs()" />
|
|
92
|
+
<ngt-grid-material [transparent]="true" [side]="side()" [parameters]="uniforms()">
|
|
93
|
+
<ngt-value attach="extensions.derivatives" [rawValue]="true" />
|
|
94
|
+
</ngt-grid-material>
|
|
95
|
+
<ng-content />
|
|
96
|
+
</ngt-mesh>
|
|
97
|
+
`,
|
|
98
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
99
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
100
|
+
imports: [NgtArgs],
|
|
101
|
+
}]
|
|
102
|
+
}], ctorParameters: () => [] });
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi9ncmlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFFdEIsS0FBSyxFQUNMLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBVyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQTJCLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFL0YsTUFBTSxjQUFjLEdBQ2dFO0lBQ25GLFNBQVMsRUFBRSxFQUFFO0lBQ2IsUUFBUSxFQUFFLEdBQUc7SUFDYixhQUFhLEVBQUUsR0FBRztJQUNsQixTQUFTLEVBQUUsT0FBTztJQUNsQixXQUFXLEVBQUUsQ0FBQztJQUNkLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsWUFBWSxFQUFFLEdBQUc7SUFDakIsWUFBWSxFQUFFLENBQUM7SUFDZixRQUFRLEVBQUUsQ0FBQztJQUNYLElBQUksRUFBRSxRQUFRO0NBQ2QsQ0FBQztBQWtCRixNQUFNLE9BQU8sUUFBUTtJQXVEcEI7UUF0REEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMs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QU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgTmd0QXJncywgTmd0TWVzaCwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgR3JpZE1hdGVyaWFsLCBHcmlkTWF0ZXJpYWxPcHRpb25zIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQmFja1NpZGUsIE1lc2gsIFBsYW5lLCBQbGFuZUdlb21ldHJ5LCBTaGFkZXJNYXRlcmlhbCwgVW5pZm9ybSwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IFBhcnRpYWw8Tmd0TWVzaD4gJlxuXHRHcmlkTWF0ZXJpYWxPcHRpb25zICYgeyBwbGFuZUFyZ3M6IENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgUGxhbmVHZW9tZXRyeT4gfSA9IHtcblx0cGxhbmVBcmdzOiBbXSxcblx0Y2VsbFNpemU6IDAuNSxcblx0Y2VsbFRoaWNrbmVzczogMC41LFxuXHRjZWxsQ29sb3I6ICdibGFjaycsXG5cdHNlY3Rpb25TaXplOiAxLFxuXHRzZWN0aW9uVGhpY2tuZXNzOiAxLFxuXHRzZWN0aW9uQ29sb3I6ICcjMjA4MGZmJyxcblx0aW5maW5pdGVHcmlkOiBmYWxzZSxcblx0Zm9sbG93Q2FtZXJhOiBmYWxzZSxcblx0ZmFkZURpc3RhbmNlOiAxMDAsXG5cdGZhZGVTdHJlbmd0aDogMSxcblx0ZmFkZUZyb206IDEsXG5cdHNpZGU6IEJhY2tTaWRlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1ncmlkJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2ggI21lc2ggW2ZydXN0dW1DdWxsZWRdPVwiZmFsc2VcIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZ3QtcGxhbmUtZ2VvbWV0cnkgKmFyZ3M9XCJwbGFuZUFyZ3MoKVwiIC8+XG5cdFx0XHQ8bmd0LWdyaWQtbWF0ZXJpYWwgW3RyYW5zcGFyZW50XT1cInRydWVcIiBbc2lkZV09XCJzaWRlKClcIiBbcGFyYW1ldGVyc109XCJ1bmlmb3JtcygpXCI+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwiZXh0ZW5zaW9ucy5kZXJpdmF0aXZlc1wiIFtyYXdWYWx1ZV09XCJ0cnVlXCIgLz5cblx0XHRcdDwvbmd0LWdyaWQtbWF0ZXJpYWw+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0dyaWQge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdwbGFuZUFyZ3MnLFxuXHRcdCdjZWxsU2l6ZScsXG5cdFx0J2NlbGxUaGlja25lc3MnLFxuXHRcdCdjZWxsQ29sb3InLFxuXHRcdCdzZWN0aW9uU2l6ZScsXG5cdFx0J3NlY3Rpb25UaGlja25lc3MnLFxuXHRcdCdzZWN0aW9uQ29sb3InLFxuXHRcdCdpbmZpbml0ZUdyaWQnLFxuXHRcdCdmb2xsb3dDYW1lcmEnLFxuXHRcdCdmYWRlRGlzdGFuY2UnLFxuXHRcdCdmYWRlU3RyZW5ndGgnLFxuXHRcdCdmYWRlRnJvbScsXG5cdFx0J3NpZGUnLFxuXHRdKTtcblxuXHRtZXNoUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8TWVzaD4+KCdtZXNoJyk7XG5cblx0cHJpdmF0ZSBwbGFuZSA9IG5ldyBQbGFuZSgpO1xuXHRwcml2YXRlIHVwVmVjdG9yID0gbmV3IFZlY3RvcjMoMCwgMSwgMCk7XG5cdHByaXZhdGUgemVyb1ZlY3RvciA9IG5ldyBWZWN0b3IzKDAsIDAsIDApO1xuXG5cdHBsYW5lQXJncyA9IHBpY2sodGhpcy5vcHRpb25zLCAncGxhbmVBcmdzJyk7XG5cdHNpZGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NpZGUnKTtcblx0dW5pZm9ybXMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0Y2VsbFNpemUsXG5cdFx0XHRzZWN0aW9uU2l6ZSxcblx0XHRcdGNlbGxDb2xvcixcblx0XHRcdHNlY3Rpb25Db2xvcixcblx0XHRcdGNlbGxUaGlja25lc3MsXG5cdFx0XHRzZWN0aW9uVGhpY2tuZXNzLFxuXHRcdFx0ZmFkZURpc3RhbmNlLFxuXHRcdFx0ZmFkZVN0cmVuZ3RoLFxuXHRcdFx0ZmFkZUZyb20sXG5cdFx0XHRpbmZpbml0ZUdyaWQsXG5cdFx0XHRmb2xsb3dDYW1lcmEsXG5cdFx0fSA9IHRoaXMub3B0aW9ucygpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjZWxsU2l6ZSxcblx0XHRcdHNlY3Rpb25TaXplLFxuXHRcdFx0Y2VsbENvbG9yLFxuXHRcdFx0c2VjdGlvbkNvbG9yLFxuXHRcdFx0Y2VsbFRoaWNrbmVzcyxcblx0XHRcdHNlY3Rpb25UaGlja25lc3MsXG5cdFx0XHRmYWRlRGlzdGFuY2UsXG5cdFx0XHRmYWRlU3RyZW5ndGgsXG5cdFx0XHRmYWRlRnJvbSxcblx0XHRcdGluZmluaXRlR3JpZCxcblx0XHRcdGZvbGxvd0NhbWVyYSxcblx0XHR9O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoLCBQbGFuZUdlb21ldHJ5LCBHcmlkTWF0ZXJpYWwgfSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgY2FtZXJhIH0pID0+IHtcblx0XHRcdGNvbnN0IG1lc2ggPSB0aGlzLm1lc2hSZWYoKS5uYXRpdmVFbGVtZW50O1xuXG5cdFx0XHR0aGlzLnBsYW5lLnNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KHRoaXMudXBWZWN0b3IsIHRoaXMuemVyb1ZlY3RvcikuYXBwbHlNYXRyaXg0KG1lc2gubWF0cml4V29ybGQpO1xuXG5cdFx0XHRjb25zdCBncmlkTWF0ZXJpYWwgPSBtZXNoLm1hdGVyaWFsIGFzIFNoYWRlck1hdGVyaWFsO1xuXHRcdFx0Y29uc3Qgd29ybGRDYW1Qcm9qUG9zaXRpb24gPSBncmlkTWF0ZXJpYWwudW5pZm9ybXNbJ3dvcmxkQ2FtUHJvalBvc2l0aW9uJ10gYXMgVW5pZm9ybTxWZWN0b3IzPjtcblx0XHRcdGNvbnN0IHdvcmxkUGxhbmVQb3NpdGlvbiA9IGdyaWRNYXRlcmlhbC51bmlmb3Jtc1snd29ybGRQbGFuZVBvc2l0aW9uJ10gYXMgVW5pZm9ybTxWZWN0b3IzPjtcblxuXHRcdFx0dGhpcy5wbGFuZS5wcm9qZWN0UG9pbnQoY2FtZXJhLnBvc2l0aW9uLCB3b3JsZENhbVByb2pQb3NpdGlvbi52YWx1ZSk7XG5cdFx0XHR3b3JsZFBsYW5lUG9zaXRpb24udmFsdWUuc2V0KDAsIDAsIDApLmFwcGx5TWF0cml4NChtZXNoLm1hdHJpeFdvcmxkKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, signal, untracked, viewChild, } from '@angular/core';
|
|
2
|
+
import { extend, getLocalState, injectBeforeRender, injectStore, resolveRef } from 'angular-three';
|
|
3
|
+
import { assertInjector } from 'ngxtension/assert-injector';
|
|
4
|
+
import { Object3D } from 'three';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export function injectHelper(object, helperConstructor, { injector, args = () => [], } = {}) {
|
|
7
|
+
return assertInjector(injectHelper, injector, () => {
|
|
8
|
+
const store = injectStore();
|
|
9
|
+
const scene = store.select('scene');
|
|
10
|
+
const helper = signal(null);
|
|
11
|
+
effect((onCleanup) => {
|
|
12
|
+
let currentHelper = undefined;
|
|
13
|
+
const maybeObject3D = object();
|
|
14
|
+
if (!maybeObject3D)
|
|
15
|
+
return;
|
|
16
|
+
const object3D = resolveRef(maybeObject3D);
|
|
17
|
+
if (!object3D)
|
|
18
|
+
return;
|
|
19
|
+
currentHelper = new (helperConstructor())(object3D, ...args());
|
|
20
|
+
if (!currentHelper)
|
|
21
|
+
return;
|
|
22
|
+
untracked(() => {
|
|
23
|
+
helper.set(currentHelper);
|
|
24
|
+
});
|
|
25
|
+
// Prevent the helpers from blocking rays
|
|
26
|
+
currentHelper.traverse((child) => (child.raycast = () => null));
|
|
27
|
+
scene().add(currentHelper);
|
|
28
|
+
onCleanup(() => {
|
|
29
|
+
helper.set(null);
|
|
30
|
+
scene().remove(currentHelper);
|
|
31
|
+
currentHelper.dispose?.();
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
injectBeforeRender(() => {
|
|
35
|
+
const currentHelper = helper();
|
|
36
|
+
if (currentHelper)
|
|
37
|
+
currentHelper.update();
|
|
38
|
+
});
|
|
39
|
+
return helper.asReadonly();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export class NgtsHelper {
|
|
43
|
+
constructor() {
|
|
44
|
+
this.type = input.required();
|
|
45
|
+
this.options = input([]);
|
|
46
|
+
this.helperRef = viewChild.required('helper');
|
|
47
|
+
this.parent = computed(() => {
|
|
48
|
+
const helper = this.helperRef().nativeElement;
|
|
49
|
+
if (!helper)
|
|
50
|
+
return;
|
|
51
|
+
const localState = getLocalState(helper);
|
|
52
|
+
if (!localState)
|
|
53
|
+
return;
|
|
54
|
+
return localState.parent();
|
|
55
|
+
});
|
|
56
|
+
this.helper = injectHelper(this.parent, this.type, { args: this.options });
|
|
57
|
+
extend({ Object3D });
|
|
58
|
+
}
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsHelper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsHelper, isStandalone: true, selector: "ngts-helper", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "helperRef", first: true, predicate: ["helper"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
61
|
+
<ngt-object3D #helper />
|
|
62
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsHelper, decorators: [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{
|
|
67
|
+
standalone: true,
|
|
68
|
+
selector: 'ngts-helper',
|
|
69
|
+
template: `
|
|
70
|
+
<ngt-object3D #helper />
|
|
71
|
+
`,
|
|
72
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
73
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
74
|
+
}]
|
|
75
|
+
}], ctorParameters: () => [] });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2Fic3RyYWN0aW9ucy9zcmMvbGliL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFHTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFJakMsTUFBTSxVQUFVLFlBQVksQ0FJM0IsTUFBZ0UsRUFDaEUsaUJBQXFDLEVBQ3JDLEVBQ0MsUUFBUSxFQUNSLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFnRSxNQUNhLEVBQUU7SUFFN0YsT0FBTyxjQUFjLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDbEQsTUFBTSxLQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQXlCLElBQUksQ0FBQyxDQUFDO1FBRXBELE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLElBQUksYUFBYSxHQUFnQyxTQUFTLENBQUM7WUFDM0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGFBQWE7Z0JBQUUsT0FBTztZQUUzQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTztZQUV0QixhQUFhLEdBQUcsS0FBSyxpQkFBaUIsRUFBVSxFQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLGFBQWE7Z0JBQUUsT0FBTztZQUUzQixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7WUFFSCx5Q0FBeUM7WUFDekMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDaEUsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTNCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUM5QixhQUFhLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsa0JBQWtCLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sYUFBYSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQy9CLElBQUksYUFBYTtnQkFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFXRCxNQUFNLE9BQU8sVUFBVTtJQWtCdEI7UUFqQkEsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWdCLENBQUM7UUFDdEMsWUFBTyxHQUFHLEtBQUssQ0FDZCxFQUFnRSxDQUNoRSxDQUFDO1FBRUYsY0FBUyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQXVCLFFBQVEsQ0FBQyxDQUFDO1FBRXZELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDOUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUNwQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUN4QixPQUFPLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILFdBQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBR3JFLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQzs4R0FwQlcsVUFBVTtrR0FBVixVQUFVLDBiQU5aOztFQUVUOzsyRkFJVyxVQUFVO2tCQVR0QixTQUFTO21CQUFDO29CQUNWLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOztFQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3Rvcixcblx0aW5wdXQsXG5cdHNpZ25hbCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IE9iamVjdDNEIH0gZnJvbSAndGhyZWUnO1xuXG50eXBlIEhlbHBlckFyZ3M8VD4gPSBUIGV4dGVuZHMgW2luZmVyIF8sIC4uLmluZmVyIFJdID8gUiA6IG5ldmVyO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SGVscGVyPFxuXHRUQ29uc3RydWN0b3IgZXh0ZW5kcyBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBPYmplY3QzRCxcblx0VEhlbHBlckluc3RhbmNlIGV4dGVuZHMgSW5zdGFuY2VUeXBlPFRDb25zdHJ1Y3Rvcj4gJiB7IHVwZGF0ZTogKCkgPT4gdm9pZDsgZGlzcG9zZTogKCkgPT4gdm9pZCB9LFxuPihcblx0b2JqZWN0OiAoKSA9PiBFbGVtZW50UmVmPE9iamVjdDNEPiB8IE9iamVjdDNEIHwgdW5kZWZpbmVkIHwgbnVsbCxcblx0aGVscGVyQ29uc3RydWN0b3I6ICgpID0+IFRDb25zdHJ1Y3Rvcixcblx0e1xuXHRcdGluamVjdG9yLFxuXHRcdGFyZ3MgPSAoKSA9PiBbXSBhcyB1bmtub3duIGFzIEhlbHBlckFyZ3M8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPFRDb25zdHJ1Y3Rvcj4+LFxuXHR9OiB7IGluamVjdG9yPzogSW5qZWN0b3I7IGFyZ3M/OiAoKSA9PiBIZWxwZXJBcmdzPENvbnN0cnVjdG9yUGFyYW1ldGVyczxUQ29uc3RydWN0b3I+PiB9ID0ge30sXG4pIHtcblx0cmV0dXJuIGFzc2VydEluamVjdG9yKGluamVjdEhlbHBlciwgaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdFx0Y29uc3Qgc2NlbmUgPSBzdG9yZS5zZWxlY3QoJ3NjZW5lJyk7XG5cblx0XHRjb25zdCBoZWxwZXIgPSBzaWduYWw8VEhlbHBlckluc3RhbmNlIHwgbnVsbD4obnVsbCk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0bGV0IGN1cnJlbnRIZWxwZXI6IFRIZWxwZXJJbnN0YW5jZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IG1heWJlT2JqZWN0M0QgPSBvYmplY3QoKTtcblx0XHRcdGlmICghbWF5YmVPYmplY3QzRCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBvYmplY3QzRCA9IHJlc29sdmVSZWYobWF5YmVPYmplY3QzRCk7XG5cdFx0XHRpZiAoIW9iamVjdDNEKSByZXR1cm47XG5cblx0XHRcdGN1cnJlbnRIZWxwZXIgPSBuZXcgKGhlbHBlckNvbnN0cnVjdG9yKCkgYXMgYW55KShvYmplY3QzRCwgLi4uYXJncygpKTtcblx0XHRcdGlmICghY3VycmVudEhlbHBlcikgcmV0dXJuO1xuXG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRoZWxwZXIuc2V0KGN1cnJlbnRIZWxwZXIpO1xuXHRcdFx0fSk7XG5cblx0XHRcdC8vIFByZXZlbnQgdGhlIGhlbHBlcnMgZnJvbSBibG9ja2luZyByYXlzXG5cdFx0XHRjdXJyZW50SGVscGVyLnRyYXZlcnNlKChjaGlsZCkgPT4gKGNoaWxkLnJheWNhc3QgPSAoKSA9PiBudWxsKSk7XG5cdFx0XHRzY2VuZSgpLmFkZChjdXJyZW50SGVscGVyKTtcblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0aGVscGVyLnNldChudWxsKTtcblx0XHRcdFx0c2NlbmUoKS5yZW1vdmUoY3VycmVudEhlbHBlcik7XG5cdFx0XHRcdGN1cnJlbnRIZWxwZXIuZGlzcG9zZT8uKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBjdXJyZW50SGVscGVyID0gaGVscGVyKCk7XG5cdFx0XHRpZiAoY3VycmVudEhlbHBlcikgY3VycmVudEhlbHBlci51cGRhdGUoKTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBoZWxwZXIuYXNSZWFkb25seSgpO1xuXHR9KTtcbn1cblxuQENvbXBvbmVudCh7XG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNlbGVjdG9yOiAnbmd0cy1oZWxwZXInLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3Qtb2JqZWN0M0QgI2hlbHBlciAvPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzSGVscGVyPFRDb25zdHJ1Y3RvciBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IE9iamVjdDNEPiB7XG5cdHR5cGUgPSBpbnB1dC5yZXF1aXJlZDxUQ29uc3RydWN0b3I+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dDxIZWxwZXJBcmdzPENvbnN0cnVjdG9yUGFyYW1ldGVyczxUQ29uc3RydWN0b3I+Pj4oXG5cdFx0W10gYXMgdW5rbm93biBhcyBIZWxwZXJBcmdzPENvbnN0cnVjdG9yUGFyYW1ldGVyczxUQ29uc3RydWN0b3I+Pixcblx0KTtcblxuXHRoZWxwZXJSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxPYmplY3QzRD4+KCdoZWxwZXInKTtcblxuXHRwcml2YXRlIHBhcmVudCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBoZWxwZXIgPSB0aGlzLmhlbHBlclJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKCFoZWxwZXIpIHJldHVybjtcblx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShoZWxwZXIpO1xuXHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXHRcdHJldHVybiBsb2NhbFN0YXRlLnBhcmVudCgpO1xuXHR9KTtcblxuXHRoZWxwZXIgPSBpbmplY3RIZWxwZXIodGhpcy5wYXJlbnQsIHRoaXMudHlwZSwgeyBhcmdzOiB0aGlzLm9wdGlvbnMgfSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgT2JqZWN0M0QgfSk7XG5cdH1cbn1cbiJdfQ==
|