angular-three-soba 2.0.0-beta.7 → 2.0.0-beta.8
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/abstractions/billboard/billboard.d.ts +11 -7
- package/abstractions/detailed/detailed.d.ts +26 -0
- package/abstractions/edges/edges.d.ts +23 -11
- package/abstractions/grid/grid.d.ts +41 -50
- package/abstractions/index.d.ts +1 -7
- package/abstractions/text/text.d.ts +10 -4
- package/abstractions/text-3d/text-3d.d.ts +47 -40
- package/cameras/camera/camera-content.d.ts +1 -1
- package/cameras/camera/camera.d.ts +16 -13
- package/cameras/cube-camera/cube-camera.d.ts +50 -23
- package/cameras/index.d.ts +0 -1
- package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
- package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
- package/controls/orbit-controls/orbit-controls.d.ts +30 -13
- package/esm2022/abstractions/billboard/billboard.mjs +36 -33
- package/esm2022/abstractions/detailed/detailed.mjs +64 -0
- package/esm2022/abstractions/edges/edges.mjs +58 -63
- package/esm2022/abstractions/grid/grid.mjs +140 -110
- package/esm2022/abstractions/index.mjs +2 -8
- package/esm2022/abstractions/text/text.mjs +123 -122
- package/esm2022/abstractions/text-3d/text-3d.mjs +119 -121
- package/esm2022/cameras/camera/camera-content.mjs +5 -6
- package/esm2022/cameras/camera/camera.mjs +48 -42
- package/esm2022/cameras/cube-camera/cube-camera.mjs +129 -99
- package/esm2022/cameras/index.mjs +1 -2
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +94 -90
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
- package/esm2022/loaders/loader/loader.mjs +92 -87
- package/esm2022/loaders/progress/progress.mjs +1 -1
- package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
- package/esm2022/materials/index.mjs +2 -1
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
- package/esm2022/materials/point-material/point-material.mjs +46 -0
- package/esm2022/misc/animations/animations.mjs +20 -16
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
- package/esm2022/misc/caustics/caustics.mjs +387 -0
- package/esm2022/misc/decal/decal.mjs +187 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
- package/esm2022/misc/example/example.mjs +160 -0
- package/esm2022/misc/fbo/fbo.mjs +35 -35
- package/esm2022/misc/html/html-wrapper.mjs +478 -0
- package/esm2022/misc/html/html.mjs +304 -0
- package/esm2022/misc/index.mjs +10 -1
- package/esm2022/misc/sampler/sampler.mjs +142 -0
- package/esm2022/misc/shadow/shadow.mjs +111 -0
- package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
- package/esm2022/misc/trail/trail.mjs +209 -0
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
- package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
- package/esm2022/modifiers/index.mjs +2 -0
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
- package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
- package/esm2022/performances/index.mjs +6 -0
- package/esm2022/performances/points/points-input.mjs +64 -0
- package/esm2022/performances/points/points.mjs +329 -0
- package/esm2022/performances/points/position-point.mjs +54 -0
- package/esm2022/performances/segments/segment-object.mjs +9 -0
- package/esm2022/performances/segments/segments.mjs +182 -0
- package/esm2022/shaders/blur-pass/blur-pass.mjs +1 -1
- package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
- package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
- package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
- package/esm2022/shaders/grid-material/grid-material.mjs +29 -14
- package/esm2022/shaders/index.mjs +5 -3
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +1 -1
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
- package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
- package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
- package/esm2022/staging/backdrop/backdrop.mjs +77 -0
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +70 -0
- package/esm2022/staging/bounds/bounds.mjs +144 -143
- package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
- package/esm2022/staging/center/center.mjs +106 -91
- package/esm2022/staging/cloud/cloud.mjs +118 -124
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
- package/esm2022/staging/environment/assets.mjs +12 -12
- package/esm2022/staging/environment/environment-cube.mjs +28 -30
- package/esm2022/staging/environment/environment-ground.mjs +18 -20
- package/esm2022/staging/environment/environment-input.mjs +97 -84
- package/esm2022/staging/environment/environment-map.mjs +33 -33
- package/esm2022/staging/environment/environment-portal.mjs +75 -97
- package/esm2022/staging/environment/environment.mjs +34 -51
- package/esm2022/staging/environment/utils.mjs +35 -14
- package/esm2022/staging/float/float.mjs +70 -58
- package/esm2022/staging/index.mjs +7 -3
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
- package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
- package/esm2022/staging/sky/sky.mjs +85 -80
- package/esm2022/staging/sparkles/sparkles.mjs +108 -105
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
- package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
- package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
- package/esm2022/staging/spot-light/spot-light.mjs +51 -64
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +61 -78
- package/esm2022/staging/stage/stage.mjs +304 -290
- package/esm2022/staging/stars/stars.mjs +101 -102
- package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
- package/esm2022/staging/wireframe/wireframe.mjs +224 -0
- package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
- package/esm2022/utils/content/content.mjs +15 -0
- package/esm2022/utils/index.mjs +2 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +505 -2087
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +302 -259
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +93 -88
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +94 -90
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +655 -590
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +2198 -89
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
- package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
- package/fesm2022/angular-three-soba-performances.mjs +697 -0
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
- package/fesm2022/angular-three-soba-shaders.mjs +501 -264
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2870 -2555
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-utils.mjs +22 -0
- package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
- package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
- package/loaders/loader/loader.d.ts +19 -17
- package/loaders/progress/progress.d.ts +1 -1
- package/loaders/texture-loader/texture-loader.d.ts +2 -2
- package/materials/index.d.ts +1 -0
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
- package/materials/point-material/point-material.d.ts +24 -0
- package/metadata.json +1 -0
- package/misc/animations/animations.d.ts +6 -4
- package/misc/caustics/caustics.d.ts +87 -0
- package/misc/decal/decal.d.ts +49 -0
- package/misc/depth-buffer/depth-buffer.d.ts +2 -2
- package/misc/example/example.d.ts +81 -0
- package/misc/fbo/fbo.d.ts +2 -2
- package/misc/html/html-wrapper.d.ts +559 -0
- package/misc/html/html.d.ts +214 -0
- package/misc/index.d.ts +9 -0
- package/misc/sampler/sampler.d.ts +67 -0
- package/misc/shadow/shadow.d.ts +37 -0
- package/misc/stats-gl/stats-gl.d.ts +24 -0
- package/misc/trail/trail.d.ts +57 -0
- package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
- package/misc/trail-texture/trail-texture.d.ts +50 -0
- package/modifiers/README.md +3 -0
- package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
- package/modifiers/index.d.ts +1 -0
- package/package.json +30 -22
- package/performances/README.md +3 -0
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
- package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
- package/performances/index.d.ts +5 -0
- package/performances/points/points-input.d.ts +32 -0
- package/performances/points/points.d.ts +92 -0
- package/{performance/instances/position-mesh.d.ts → performances/points/position-point.d.ts} +4 -3
- package/performances/segments/segment-object.d.ts +7 -0
- package/performances/segments/segments.d.ts +124 -0
- package/shaders/grid-material/grid-material.d.ts +33 -0
- package/shaders/index.d.ts +4 -2
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +146 -1
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
- package/shaders/shader-material/shader-material.d.ts +2 -2
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
- package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
- package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
- package/shaders/star-field-material/star-field-material.d.ts +11 -1
- package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
- package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
- package/staging/backdrop/backdrop.d.ts +30 -0
- package/staging/bb-anchor/bb-anchor.d.ts +27 -0
- package/staging/bounds/bounds.d.ts +100 -24
- package/staging/camera-shake/camera-shake.d.ts +30 -19
- package/staging/center/center.d.ts +43 -35
- package/staging/cloud/cloud.d.ts +26 -23
- package/staging/contact-shadows/contact-shadows.d.ts +41 -28
- package/staging/environment/assets.d.ts +9 -9
- package/staging/environment/environment-cube.d.ts +9 -5
- package/staging/environment/environment-ground.d.ts +7 -7
- package/staging/environment/environment-input.d.ts +36 -36
- package/staging/environment/environment-map.d.ts +10 -5
- package/staging/environment/environment-portal.d.ts +10 -5
- package/staging/environment/environment.d.ts +0 -4
- package/staging/environment/utils.d.ts +2 -2
- package/staging/float/float.d.ts +14 -10
- package/staging/index.d.ts +6 -2
- package/staging/matcap-texture/matcap-texture.d.ts +13 -0
- package/staging/normal-texture/normal-texture.d.ts +16 -0
- package/staging/sky/sky.d.ts +28 -21
- package/staging/sparkles/sparkles.d.ts +35 -21
- package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
- package/staging/spot-light/shadow-mesh.d.ts +37 -0
- package/staging/spot-light/spot-light-input.d.ts +25 -25
- package/staging/spot-light/spot-light.d.ts +31 -15
- package/staging/spot-light/volumetric-mesh.d.ts +15 -9
- package/staging/stage/stage.d.ts +88 -63
- package/staging/stars/stars.d.ts +27 -16
- package/staging/wireframe/wireframe-input.d.ts +65 -0
- package/staging/wireframe/wireframe.d.ts +28 -0
- package/utils/README.md +3 -0
- package/utils/content/content.d.ts +8 -0
- package/utils/index.d.ts +1 -0
- package/web-types.json +1 -0
- package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
- package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
- package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
- package/abstractions/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
- package/abstractions/line/line-input.d.ts +0 -42
- package/abstractions/line/line.d.ts +0 -35
- package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
- package/esm2022/abstractions/line/line-input.mjs +0 -113
- package/esm2022/abstractions/line/line.mjs +0 -165
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
- package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
- package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
- package/esm2022/performance/detailed/detailed.mjs +0 -61
- package/esm2022/performance/index.mjs +0 -7
- package/esm2022/performance/instances/instance.mjs +0 -48
- package/esm2022/performance/instances/instances.mjs +0 -189
- package/esm2022/performance/instances/position-mesh.mjs +0 -52
- package/esm2022/performance/stats/stats.mjs +0 -79
- package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
- package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
- package/esm2022/staging/caustics/caustisc.mjs +0 -384
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -258
- package/fesm2022/angular-three-soba-performance.mjs +0 -487
- package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
- package/performance/README.md +0 -3
- package/performance/adaptive/adaptive-dpr.d.ts +0 -8
- package/performance/detailed/detailed.d.ts +0 -20
- package/performance/index.d.ts +0 -6
- package/performance/instances/instance.d.ts +0 -9
- package/performance/instances/instances.d.ts +0 -35
- package/performance/stats/stats.d.ts +0 -18
- package/plugin/generators.json +0 -19
- package/plugin/libs/plugin/README.md +0 -11
- package/plugin/package.json +0 -9
- package/plugin/src/generators/init/compat.d.ts +0 -2
- package/plugin/src/generators/init/compat.js +0 -6
- package/plugin/src/generators/init/compat.js.map +0 -1
- package/plugin/src/generators/init/init.d.ts +0 -7
- package/plugin/src/generators/init/init.js +0 -28
- package/plugin/src/generators/init/init.js.map +0 -1
- package/plugin/src/generators/init/schema.json +0 -6
- package/plugin/src/index.d.ts +0 -1
- package/plugin/src/index.js +0 -6
- package/plugin/src/index.js.map +0 -1
- package/staging/caustics/caustisc.d.ts +0 -70
- package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
- /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
- /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';
|
|
2
|
+
import { NgtArgs, extend, injectNgtRef, signalStore } from 'angular-three';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
import { CanvasTexture, Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ Mesh, CanvasTexture, PlaneGeometry, MeshBasicMaterial });
|
|
7
|
+
export class NgtsShadow {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.Math = Math;
|
|
10
|
+
this.DoubleSide = THREE.DoubleSide;
|
|
11
|
+
this.inputs = signalStore({
|
|
12
|
+
fog: false,
|
|
13
|
+
depthWrite: false,
|
|
14
|
+
colorStop: 0.0,
|
|
15
|
+
color: 'black',
|
|
16
|
+
opacity: 0.5,
|
|
17
|
+
});
|
|
18
|
+
this.shadowRef = injectNgtRef();
|
|
19
|
+
this.colorStop = this.inputs.select('colorStop');
|
|
20
|
+
this.color = this.inputs.select('color');
|
|
21
|
+
this.opacity = this.inputs.select('opacity');
|
|
22
|
+
this.fog = this.inputs.select('fog');
|
|
23
|
+
this.depthWrite = this.inputs.select('depthWrite');
|
|
24
|
+
this.canvas = computed(() => {
|
|
25
|
+
const [colorStop, color] = [this.colorStop(), this.color()];
|
|
26
|
+
const canvas = document.createElement('canvas');
|
|
27
|
+
canvas.width = 128;
|
|
28
|
+
canvas.height = 128;
|
|
29
|
+
const context = canvas.getContext('2d');
|
|
30
|
+
const gradient = context.createRadialGradient(canvas.width / 2, canvas.height / 2, 0, canvas.width / 2, canvas.height / 2, canvas.width / 2);
|
|
31
|
+
gradient.addColorStop(colorStop, new THREE.Color(color).getStyle());
|
|
32
|
+
gradient.addColorStop(1, 'rgba(0,0,0,0)');
|
|
33
|
+
context.fillStyle = gradient;
|
|
34
|
+
context.fillRect(0, 0, canvas.width, canvas.height);
|
|
35
|
+
return canvas;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
set _colorStop(colorStop) {
|
|
39
|
+
this.inputs.set({ colorStop });
|
|
40
|
+
}
|
|
41
|
+
set _fog(fog) {
|
|
42
|
+
this.inputs.set({ fog });
|
|
43
|
+
}
|
|
44
|
+
set _color(color) {
|
|
45
|
+
this.inputs.set({ color });
|
|
46
|
+
}
|
|
47
|
+
set _opacity(opacity) {
|
|
48
|
+
this.inputs.set({ opacity });
|
|
49
|
+
}
|
|
50
|
+
set _depthWrite(depthWrite) {
|
|
51
|
+
this.inputs.set({ depthWrite });
|
|
52
|
+
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsShadow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsShadow, isStandalone: true, selector: "ngts-shadow", inputs: { shadowRef: "shadowRef", _colorStop: ["colorStop", "_colorStop"], _fog: ["fog", "_fog"], _color: ["color", "_color"], _opacity: ["opacity", "_opacity"], _depthWrite: ["depthWrite", "_depthWrite"] }, ngImport: i0, template: `
|
|
55
|
+
<ngt-mesh ngtCompound [ref]="shadowRef" [rotation]="[-Math.PI / 2, 0, 0]">
|
|
56
|
+
<ngt-plane-geometry />
|
|
57
|
+
<ngt-mesh-basic-material
|
|
58
|
+
[transparent]="true"
|
|
59
|
+
[opacity]="opacity()"
|
|
60
|
+
[fog]="fog()"
|
|
61
|
+
[depthWrite]="depthWrite()"
|
|
62
|
+
[side]="DoubleSide"
|
|
63
|
+
>
|
|
64
|
+
<ngt-canvas-texture *args="[canvas()]" attach="map" />
|
|
65
|
+
</ngt-mesh-basic-material>
|
|
66
|
+
<ng-content />
|
|
67
|
+
</ngt-mesh>
|
|
68
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsShadow, decorators: [{
|
|
71
|
+
type: Component,
|
|
72
|
+
args: [{
|
|
73
|
+
selector: 'ngts-shadow',
|
|
74
|
+
standalone: true,
|
|
75
|
+
template: `
|
|
76
|
+
<ngt-mesh ngtCompound [ref]="shadowRef" [rotation]="[-Math.PI / 2, 0, 0]">
|
|
77
|
+
<ngt-plane-geometry />
|
|
78
|
+
<ngt-mesh-basic-material
|
|
79
|
+
[transparent]="true"
|
|
80
|
+
[opacity]="opacity()"
|
|
81
|
+
[fog]="fog()"
|
|
82
|
+
[depthWrite]="depthWrite()"
|
|
83
|
+
[side]="DoubleSide"
|
|
84
|
+
>
|
|
85
|
+
<ngt-canvas-texture *args="[canvas()]" attach="map" />
|
|
86
|
+
</ngt-mesh-basic-material>
|
|
87
|
+
<ng-content />
|
|
88
|
+
</ngt-mesh>
|
|
89
|
+
`,
|
|
90
|
+
imports: [NgtArgs],
|
|
91
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
92
|
+
}]
|
|
93
|
+
}], propDecorators: { shadowRef: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], _colorStop: [{
|
|
96
|
+
type: Input,
|
|
97
|
+
args: [{ alias: 'colorStop' }]
|
|
98
|
+
}], _fog: [{
|
|
99
|
+
type: Input,
|
|
100
|
+
args: [{ alias: 'fog' }]
|
|
101
|
+
}], _color: [{
|
|
102
|
+
type: Input,
|
|
103
|
+
args: [{ alias: 'color' }]
|
|
104
|
+
}], _opacity: [{
|
|
105
|
+
type: Input,
|
|
106
|
+
args: [{ alias: 'opacity' }]
|
|
107
|
+
}], _depthWrite: [{
|
|
108
|
+
type: Input,
|
|
109
|
+
args: [{ alias: 'depthWrite' }]
|
|
110
|
+
}] } });
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL3NoYWRvdy9zaGFkb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQVcsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQW1COUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0FBdUJsRSxNQUFNLE9BQU8sVUFBVTtJQXJCdkI7UUFzQkMsU0FBSSxHQUFHLElBQUksQ0FBQztRQUNaLGVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBRXRCLFdBQU0sR0FBRyxXQUFXLENBQWtCO1lBQzdDLEdBQUcsRUFBRSxLQUFLO1lBQ1YsVUFBVSxFQUFFLEtBQUs7WUFDakIsU0FBUyxFQUFFLEdBQUc7WUFDZCxLQUFLLEVBQUUsT0FBTztZQUNkLE9BQU8sRUFBRSxHQUFHO1NBQ1osQ0FBQyxDQUFDO1FBRU0sY0FBUyxHQUFHLFlBQVksRUFBUSxDQUFDO1FBc0JsQyxjQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLFlBQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxT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QUU7Z0JBSUEsSUFBSTtzQkFBaEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBSVEsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSVEsUUFBUTtzQkFBeEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBSVMsV0FBVztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIElucHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0TWVzaCwgZXh0ZW5kLCBpbmplY3ROZ3RSZWYsIHNpZ25hbFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBDYW52YXNUZXh0dXJlLCBNZXNoLCBNZXNoQmFzaWNNYXRlcmlhbCwgUGxhbmVHZW9tZXRyeSB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IHR5cGUgTmd0c1NoYWRvd1N0YXRlID0ge1xuXHRjb2xvclN0b3A6IG51bWJlcjtcblx0Zm9nOiBib29sZWFuO1xuXHRjb2xvcjogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0b3BhY2l0eTogbnVtYmVyO1xuXHRkZXB0aFdyaXRlOiBib29sZWFuO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3QtbWVzaFxuXHRcdCAqL1xuXHRcdCduZ3RzLXNoYWRvdyc6IE5ndHNTaGFkb3dTdGF0ZSAmIE5ndE1lc2g7XG5cdH1cbn1cblxuZXh0ZW5kKHsgTWVzaCwgQ2FudmFzVGV4dHVyZSwgUGxhbmVHZW9tZXRyeSwgTWVzaEJhc2ljTWF0ZXJpYWwgfSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc2hhZG93Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2ggbmd0Q29tcG91bmQgW3JlZl09XCJzaGFkb3dSZWZcIiBbcm90YXRpb25dPVwiWy1NYXRoLlBJIC8gMiwgMCwgMF1cIj5cblx0XHRcdDxuZ3QtcGxhbmUtZ2VvbWV0cnkgLz5cblx0XHRcdDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbFxuXHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdFtvcGFjaXR5XT1cIm9wYWNpdHkoKVwiXG5cdFx0XHRcdFtmb2ddPVwiZm9nKClcIlxuXHRcdFx0XHRbZGVwdGhXcml0ZV09XCJkZXB0aFdyaXRlKClcIlxuXHRcdFx0XHRbc2lkZV09XCJEb3VibGVTaWRlXCJcblx0XHRcdD5cblx0XHRcdFx0PG5ndC1jYW52YXMtdGV4dHVyZSAqYXJncz1cIltjYW52YXMoKV1cIiBhdHRhY2g9XCJtYXBcIiAvPlxuXHRcdFx0PC9uZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtbWVzaD5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTaGFkb3cge1xuXHRNYXRoID0gTWF0aDtcblx0RG91YmxlU2lkZSA9IFRIUkVFLkRvdWJsZVNpZGU7XG5cblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzU2hhZG93U3RhdGU+KHtcblx0XHRmb2c6IGZhbHNlLFxuXHRcdGRlcHRoV3JpdGU6IGZhbHNlLFxuXHRcdGNvbG9yU3RvcDogMC4wLFxuXHRcdGNvbG9yOiAnYmxhY2snLFxuXHRcdG9wYWNpdHk6IDAuNSxcblx0fSk7XG5cblx0QElucHV0KCkgc2hhZG93UmVmID0gaW5qZWN0Tmd0UmVmPE1lc2g+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdjb2xvclN0b3AnIH0pIHNldCBfY29sb3JTdG9wKGNvbG9yU3RvcDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3JTdG9wIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmb2cnIH0pIHNldCBfZm9nKGZvZzogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZvZyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY29sb3InIH0pIHNldCBfY29sb3IoY29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjb2xvciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnb3BhY2l0eScgfSkgc2V0IF9vcGFjaXR5KG9wYWNpdHk6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG9wYWNpdHkgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2RlcHRoV3JpdGUnIH0pIHNldCBfZGVwdGhXcml0ZShkZXB0aFdyaXRlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGVwdGhXcml0ZSB9KTtcblx0fVxuXG5cdHByaXZhdGUgY29sb3JTdG9wID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdjb2xvclN0b3AnKTtcblx0cHJpdmF0ZSBjb2xvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29sb3InKTtcblxuXHRvcGFjaXR5ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdvcGFjaXR5Jyk7XG5cdGZvZyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZm9nJyk7XG5cdGRlcHRoV3JpdGUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2RlcHRoV3JpdGUnKTtcblxuXHRjYW52YXMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2NvbG9yU3RvcCwgY29sb3JdID0gW3RoaXMuY29sb3JTdG9wKCksIHRoaXMuY29sb3IoKV07XG5cdFx0Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG5cdFx0Y2FudmFzLndpZHRoID0gMTI4O1xuXHRcdGNhbnZhcy5oZWlnaHQgPSAxMjg7XG5cdFx0Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcblx0XHRjb25zdCBncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlUmFkaWFsR3JhZGllbnQoXG5cdFx0XHRjYW52YXMud2lkdGggLyAyLFxuXHRcdFx0Y2FudmFzLmhlaWdodCAvIDIsXG5cdFx0XHQwLFxuXHRcdFx0Y2FudmFzLndpZHRoIC8gMixcblx0XHRcdGNhbnZhcy5oZWlnaHQgLyAyLFxuXHRcdFx0Y2FudmFzLndpZHRoIC8gMixcblx0XHQpO1xuXHRcdGdyYWRpZW50LmFkZENvbG9yU3RvcChjb2xvclN0b3AsIG5ldyBUSFJFRS5Db2xvcihjb2xvcikuZ2V0U3R5bGUoKSk7XG5cdFx0Z3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsICdyZ2JhKDAsMCwwLDApJyk7XG5cdFx0Y29udGV4dC5maWxsU3R5bGUgPSBncmFkaWVudDtcblx0XHRjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cdFx0cmV0dXJuIGNhbnZhcztcblx0fSk7XG59XG5cbi8vXG4vL1xuLy8gdHlwZSBQcm9wcyA9IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snbWVzaCddICYge1xuLy8gICBjb2xvclN0b3A/OiBudW1iZXJcbi8vICAgZm9nPzogYm9vbGVhblxuLy8gICBjb2xvcj86IENvbG9yIHwgbnVtYmVyIHwgc3RyaW5nXG4vLyAgIG9wYWNpdHk/OiBudW1iZXJcbi8vICAgZGVwdGhXcml0ZT86IGJvb2xlYW5cbi8vIH1cbi8vXG4vLyBleHBvcnQgY29uc3QgU2hhZG93ID0gUmVhY3QuZm9yd2FyZFJlZihcbi8vICAgKFxuLy8gICAgIHsgZm9nID0gZmFsc2UsIHJlbmRlck9yZGVyLCBkZXB0aFdyaXRlID0gZmFsc2UsIGNvbG9yU3RvcCA9IDAuMCwgY29sb3IgPSAnYmxhY2snLCBvcGFjaXR5ID0gMC41LCAuLi5wcm9wcyB9OiBQcm9wcyxcbi8vICAgICByZWZcbi8vICAgKSA9PiB7XG4vLyAgICAgY29uc3QgY2FudmFzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4vLyAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxuLy8gICAgICAgY2FudmFzLndpZHRoID0gMTI4XG4vLyAgICAgICBjYW52YXMuaGVpZ2h0ID0gMTI4XG4vLyAgICAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykgYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEXG4vLyAgICAgICBjb25zdCBncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlUmFkaWFsR3JhZGllbnQoXG4vLyAgICAgICAgIGNhbnZhcy53aWR0aCAvIDIsXG4vLyAgICAgICAgIGNhbnZhcy5oZWlnaHQgLyAyLFxuLy8gICAgICAgICAwLFxuLy8gICAgICAgICBjYW52YXMud2lkdGggLyAyLFxuLy8gICAgICAgICBjYW52YXMuaGVpZ2h0IC8gMixcbi8vICAgICAgICAgY2FudmFzLndpZHRoIC8gMlxuLy8gICAgICAgKVxuLy8gICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKGNvbG9yU3RvcCwgbmV3IENvbG9yKGNvbG9yKS5nZXRTdHlsZSgpKVxuLy8gICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsICdyZ2JhKDAsMCwwLDApJylcbi8vICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZ3JhZGllbnRcbi8vICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KVxuLy8gICAgICAgcmV0dXJuIGNhbnZhc1xuLy8gICAgIH0sIFtjb2xvciwgY29sb3JTdG9wXSlcbi8vICAgICByZXR1cm4gKFxuLy8gICAgICAgPG1lc2ggcmVuZGVyT3JkZXI9e3JlbmRlck9yZGVyfSByZWY9e3JlZiBhcyBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PE1lc2g+fSByb3RhdGlvbi14PXstTWF0aC5QSSAvIDJ9IHsuLi5wcm9wc30+XG4vLyAgICAgICAgIDxwbGFuZUdlb21ldHJ5IC8+XG4vLyAgICAgICAgIDxtZXNoQmFzaWNNYXRlcmlhbCB0cmFuc3BhcmVudCBvcGFjaXR5PXtvcGFjaXR5fSBmb2c9e2ZvZ30gZGVwdGhXcml0ZT17ZGVwdGhXcml0ZX0gc2lkZT17RG91YmxlU2lkZX0+XG4vLyAgICAgICAgICAgPGNhbnZhc1RleHR1cmUgYXR0YWNoPVwibWFwXCIgYXJncz17W2NhbnZhc119IC8+XG4vLyAgICAgICAgIDwvbWVzaEJhc2ljTWF0ZXJpYWw+XG4vLyAgICAgICA8L21lc2g+XG4vLyAgICAgKVxuLy8gICB9XG4vLyApXG4iXX0=
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Directive, Input, computed, effect, inject } from '@angular/core';
|
|
3
|
+
import { addAfterEffect, addEffect, injectNgtStore, is, signalStore } from 'angular-three';
|
|
4
|
+
import Stats from 'stats-gl';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NgtsStatsGL {
|
|
7
|
+
set _parent(parent) {
|
|
8
|
+
this.inputs.set({ parent });
|
|
9
|
+
}
|
|
10
|
+
set _containerClass(containerClass) {
|
|
11
|
+
this.inputs.set({ containerClass });
|
|
12
|
+
}
|
|
13
|
+
set _config(config) {
|
|
14
|
+
this.inputs.set({ config });
|
|
15
|
+
}
|
|
16
|
+
constructor() {
|
|
17
|
+
this.inputs = signalStore();
|
|
18
|
+
this.document = inject(DOCUMENT);
|
|
19
|
+
this.store = injectNgtStore();
|
|
20
|
+
this.gl = this.store.select('gl');
|
|
21
|
+
this.config = this.inputs.select('config');
|
|
22
|
+
this.parent = this.inputs.select('parent');
|
|
23
|
+
this.containerClass = this.inputs.select('containerClass');
|
|
24
|
+
this.stats = computed(() => {
|
|
25
|
+
const [config, gl] = [this.config() || {}, this.gl()];
|
|
26
|
+
const stats = new Stats(config);
|
|
27
|
+
stats.init(gl.domElement);
|
|
28
|
+
return stats;
|
|
29
|
+
});
|
|
30
|
+
effect((onCleanup) => {
|
|
31
|
+
const [parent, stats, containerClass] = [this.parent(), this.stats(), this.containerClass()];
|
|
32
|
+
const node = parent ? (is.ref(parent) ? parent.nativeElement : parent) : this.document.body;
|
|
33
|
+
node.appendChild(stats.container);
|
|
34
|
+
if (containerClass)
|
|
35
|
+
stats.container.classList.add(...containerClass.split(' ').filter(Boolean));
|
|
36
|
+
const begin = addEffect(() => stats.begin());
|
|
37
|
+
const end = addAfterEffect(() => stats.end());
|
|
38
|
+
onCleanup(() => {
|
|
39
|
+
node.removeChild(stats.container);
|
|
40
|
+
begin();
|
|
41
|
+
end();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStatsGL, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
46
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: NgtsStatsGL, isStandalone: true, selector: "ngts-stats-gl", inputs: { _parent: ["parent", "_parent"], _containerClass: ["containerClass", "_containerClass"], _config: ["config", "_config"] }, ngImport: i0 }); }
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStatsGL, decorators: [{
|
|
49
|
+
type: Directive,
|
|
50
|
+
args: [{ selector: 'ngts-stats-gl', standalone: true }]
|
|
51
|
+
}], ctorParameters: function () { return []; }, propDecorators: { _parent: [{
|
|
52
|
+
type: Input,
|
|
53
|
+
args: [{ alias: 'parent' }]
|
|
54
|
+
}], _containerClass: [{
|
|
55
|
+
type: Input,
|
|
56
|
+
args: [{ alias: 'containerClass' }]
|
|
57
|
+
}], _config: [{
|
|
58
|
+
type: Input,
|
|
59
|
+
args: [{ alias: 'config' }]
|
|
60
|
+
}] } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMtZ2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvc3RhdHMtZ2wvc3RhdHMtZ2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBVSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sS0FBSyxNQUFNLFVBQVUsQ0FBQzs7QUFTN0IsTUFBTSxPQUFPLFdBQVc7SUFHdkIsSUFBZ0MsT0FBTyxDQUFDLE1BQTJCO1FBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBd0MsZUFBZSxDQUFDLGNBQXNCO1FBQzdFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBZ0MsT0FBTyxDQUFDLE1BQWtDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBaUJEO1FBN0JRLFdBQU0sR0FBRyxXQUFXLEVBQW9CLENBQUM7UUFjekMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixVQUFLLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDekIsT0FBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRELFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFHRixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDN0YsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUM1RixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxJQUFJLGNBQWM7Z0JBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUVoRyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDN0MsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xDLEtBQUssRUFBRSxDQUFDO2dCQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBN0NXLFdBQVc7a0dBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTswRUFJekIsT0FBTztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSWMsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFJRixPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0UmVmLCBhZGRBZnRlckVmZmVjdCwgYWRkRWZmZWN0LCBpbmplY3ROZ3RTdG9yZSwgaXMsIHNpZ25hbFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgU3RhdHMgZnJvbSAnc3RhdHMtZ2wnO1xuXG5leHBvcnQgdHlwZSBOZ3RzU3RhdHNHTFN0YXRlID0ge1xuXHRwYXJlbnQ/OiBOZ3RSZWY8SFRNTEVsZW1lbnQ+O1xuXHRjb250YWluZXJDbGFzcz86IHN0cmluZztcblx0Y29uZmlnPzogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBTdGF0cz5bMF07XG59O1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZ3RzLXN0YXRzLWdsJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGF0c0dMIHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzU3RhdHNHTFN0YXRlPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAncGFyZW50JyB9KSBzZXQgX3BhcmVudChwYXJlbnQ6IE5ndFJlZjxIVE1MRWxlbWVudD4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBwYXJlbnQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2NvbnRhaW5lckNsYXNzJyB9KSBzZXQgX2NvbnRhaW5lckNsYXNzKGNvbnRhaW5lckNsYXNzOiBzdHJpbmcpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjb250YWluZXJDbGFzcyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY29uZmlnJyB9KSBzZXQgX2NvbmZpZyhjb25maWc6IE5ndHNTdGF0c0dMU3RhdGVbJ2NvbmZpZyddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29uZmlnIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXHRwcml2YXRlIGdsID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyk7XG5cblx0cHJpdmF0ZSBjb25maWcgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbmZpZycpO1xuXHRwcml2YXRlIHBhcmVudCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgncGFyZW50Jyk7XG5cdHByaXZhdGUgY29udGFpbmVyQ2xhc3MgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbnRhaW5lckNsYXNzJyk7XG5cblx0cHJpdmF0ZSBzdGF0cyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbY29uZmlnLCBnbF0gPSBbdGhpcy5jb25maWcoKSB8fCB7fSwgdGhpcy5nbCgpXTtcblx0XHRjb25zdCBzdGF0cyA9IG5ldyBTdGF0cyhjb25maWcpO1xuXHRcdHN0YXRzLmluaXQoZ2wuZG9tRWxlbWVudCk7XG5cdFx0cmV0dXJuIHN0YXRzO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgW3BhcmVudCwgc3RhdHMsIGNvbnRhaW5lckNsYXNzXSA9IFt0aGlzLnBhcmVudCgpLCB0aGlzLnN0YXRzKCksIHRoaXMuY29udGFpbmVyQ2xhc3MoKV07XG5cdFx0XHRjb25zdCBub2RlID0gcGFyZW50ID8gKGlzLnJlZihwYXJlbnQpID8gcGFyZW50Lm5hdGl2ZUVsZW1lbnQgOiBwYXJlbnQpIDogdGhpcy5kb2N1bWVudC5ib2R5O1xuXHRcdFx0bm9kZS5hcHBlbmRDaGlsZChzdGF0cy5jb250YWluZXIpO1xuXHRcdFx0aWYgKGNvbnRhaW5lckNsYXNzKSBzdGF0cy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCguLi5jb250YWluZXJDbGFzcy5zcGxpdCgnICcpLmZpbHRlcihCb29sZWFuKSk7XG5cblx0XHRcdGNvbnN0IGJlZ2luID0gYWRkRWZmZWN0KCgpID0+IHN0YXRzLmJlZ2luKCkpO1xuXHRcdFx0Y29uc3QgZW5kID0gYWRkQWZ0ZXJFZmZlY3QoKCkgPT4gc3RhdHMuZW5kKCkpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0bm9kZS5yZW1vdmVDaGlsZChzdGF0cy5jb250YWluZXIpO1xuXHRcdFx0XHRiZWdpbigpO1xuXHRcdFx0XHRlbmQoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect, runInInjectionContext, } from '@angular/core';
|
|
2
|
+
import { NgtPortal, NgtPortalContent, assertInjectionContext, extend, injectBeforeRender, injectNgtRef, injectNgtStore, is, signalStore, } from 'angular-three';
|
|
3
|
+
import { MeshLineGeometry, MeshLineMaterial } from 'meshline';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { Group, Mesh } from 'three';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const shiftLeft = (collection, steps = 1) => {
|
|
8
|
+
collection.set(collection.subarray(steps));
|
|
9
|
+
collection.fill(-Infinity, -steps);
|
|
10
|
+
return collection;
|
|
11
|
+
};
|
|
12
|
+
const defaultSettings = {
|
|
13
|
+
width: 0.2,
|
|
14
|
+
length: 1,
|
|
15
|
+
decay: 1,
|
|
16
|
+
local: false,
|
|
17
|
+
stride: 0,
|
|
18
|
+
interval: 1,
|
|
19
|
+
};
|
|
20
|
+
export function injectNgtsTrail(targetFactory, settingsFactory, { injector } = {}) {
|
|
21
|
+
injector = assertInjectionContext(injectNgtsTrail, injector);
|
|
22
|
+
return runInInjectionContext(injector, () => {
|
|
23
|
+
const points = injectNgtRef();
|
|
24
|
+
let frameCount = 0;
|
|
25
|
+
const prevPosition = new THREE.Vector3();
|
|
26
|
+
const worldPosition = new THREE.Vector3();
|
|
27
|
+
const _target = computed(() => {
|
|
28
|
+
const _target = targetFactory();
|
|
29
|
+
if (is.ref(_target))
|
|
30
|
+
return _target.nativeElement;
|
|
31
|
+
return _target;
|
|
32
|
+
});
|
|
33
|
+
const _settings = computed(() => ({ ...defaultSettings, ...settingsFactory() }));
|
|
34
|
+
const _length = computed(() => _settings().length);
|
|
35
|
+
effect(() => {
|
|
36
|
+
const [target, length] = [_target(), _length()];
|
|
37
|
+
if (target) {
|
|
38
|
+
points.nativeElement = Float32Array.from({ length: length * 10 * 3 }, (_, i) => target.position.getComponent(i % 3));
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
injectBeforeRender(() => {
|
|
42
|
+
const [target, _points, { local, decay, stride, interval }] = [
|
|
43
|
+
_target(),
|
|
44
|
+
points.nativeElement,
|
|
45
|
+
_settings(),
|
|
46
|
+
];
|
|
47
|
+
if (!target)
|
|
48
|
+
return;
|
|
49
|
+
if (!_points)
|
|
50
|
+
return;
|
|
51
|
+
if (frameCount === 0) {
|
|
52
|
+
let newPosition;
|
|
53
|
+
if (local) {
|
|
54
|
+
newPosition = target.position;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
target.getWorldPosition(worldPosition);
|
|
58
|
+
newPosition = worldPosition;
|
|
59
|
+
}
|
|
60
|
+
const steps = 1 * decay;
|
|
61
|
+
for (let i = 0; i < steps; i++) {
|
|
62
|
+
if (newPosition.distanceTo(prevPosition) < stride)
|
|
63
|
+
continue;
|
|
64
|
+
shiftLeft(_points, 3);
|
|
65
|
+
_points.set(newPosition.toArray(), _points.length - 3);
|
|
66
|
+
}
|
|
67
|
+
prevPosition.copy(newPosition);
|
|
68
|
+
}
|
|
69
|
+
frameCount++;
|
|
70
|
+
frameCount = frameCount % interval;
|
|
71
|
+
});
|
|
72
|
+
return points;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
extend({ Group, Mesh });
|
|
76
|
+
export class NgtsTrail {
|
|
77
|
+
set _color(color) {
|
|
78
|
+
this.inputs.set({ color });
|
|
79
|
+
}
|
|
80
|
+
set _attenuation(attenuation) {
|
|
81
|
+
this.inputs.set({ attenuation });
|
|
82
|
+
}
|
|
83
|
+
set _target(target) {
|
|
84
|
+
this.inputs.set({ target });
|
|
85
|
+
}
|
|
86
|
+
set _settings(settings) {
|
|
87
|
+
this.inputs.set({ settings: { ...defaultSettings, ...settings } });
|
|
88
|
+
}
|
|
89
|
+
constructor() {
|
|
90
|
+
this.inputs = signalStore({ settings: defaultSettings, color: 'hotpink' });
|
|
91
|
+
this.trailRef = injectNgtRef();
|
|
92
|
+
this.groupRef = injectNgtRef();
|
|
93
|
+
this.children = this.groupRef.children('both');
|
|
94
|
+
this.store = injectNgtStore();
|
|
95
|
+
this.size = this.store.select('size');
|
|
96
|
+
this.target = this.inputs.select('target');
|
|
97
|
+
this.settings = this.inputs.select('settings');
|
|
98
|
+
this.width = computed(() => this.settings().width);
|
|
99
|
+
this.color = this.inputs.select('color');
|
|
100
|
+
this.attenuation = this.inputs.select('attenuation');
|
|
101
|
+
this.anchor = computed(() => {
|
|
102
|
+
const target = this.target();
|
|
103
|
+
if (target)
|
|
104
|
+
return target;
|
|
105
|
+
const group = this.groupRef.nativeElement;
|
|
106
|
+
if (group) {
|
|
107
|
+
return group.children.find((child) => child instanceof THREE.Object3D) || null;
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
});
|
|
111
|
+
this.points = injectNgtsTrail(this.anchor, this.settings);
|
|
112
|
+
this.scene = this.store.select('scene');
|
|
113
|
+
this.geometry = new MeshLineGeometry();
|
|
114
|
+
this.material = computed(() => {
|
|
115
|
+
const [width, color, size] = [this.width(), this.color(), this.size()];
|
|
116
|
+
const m = new MeshLineMaterial({
|
|
117
|
+
lineWidth: 0.1 * width,
|
|
118
|
+
color,
|
|
119
|
+
sizeAttenuation: 1,
|
|
120
|
+
resolution: new THREE.Vector2(size.width, size.height),
|
|
121
|
+
});
|
|
122
|
+
// TODO: understand this first
|
|
123
|
+
// Get and apply first <meshLineMaterial /> from children
|
|
124
|
+
// let matOverride: React.ReactElement | undefined;
|
|
125
|
+
// if (children) {
|
|
126
|
+
// if (Array.isArray(children)) {
|
|
127
|
+
// matOverride = children.find((child: React.ReactNode) => {
|
|
128
|
+
// const c = child as React.ReactElement;
|
|
129
|
+
// return typeof c.type === 'string' && c.type === 'meshLineMaterial';
|
|
130
|
+
// }) as React.ReactElement | undefined;
|
|
131
|
+
// } else {
|
|
132
|
+
// const c = children as React.ReactElement;
|
|
133
|
+
// if (typeof c.type === 'string' && c.type === 'meshLineMaterial') {
|
|
134
|
+
// matOverride = c;
|
|
135
|
+
// }
|
|
136
|
+
// }
|
|
137
|
+
// }
|
|
138
|
+
// if (typeof matOverride?.props === 'object') {
|
|
139
|
+
// m.setValues(matOverride.props);
|
|
140
|
+
// }
|
|
141
|
+
return m;
|
|
142
|
+
});
|
|
143
|
+
this.setMaterialSize();
|
|
144
|
+
this.beforeRender();
|
|
145
|
+
}
|
|
146
|
+
setMaterialSize() {
|
|
147
|
+
effect(() => {
|
|
148
|
+
const [material, size] = [this.material(), this.size()];
|
|
149
|
+
material.uniforms['resolution'].value.set(size.width, size.height);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
beforeRender() {
|
|
153
|
+
injectBeforeRender(() => {
|
|
154
|
+
const [points, attenuation] = [this.points.nativeElement, this.attenuation()];
|
|
155
|
+
if (!points)
|
|
156
|
+
return;
|
|
157
|
+
this.geometry.setPoints(points, attenuation);
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsTrail, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsTrail, isStandalone: true, selector: "ngts-trail", inputs: { trailRef: "trailRef", _color: ["color", "_color"], _attenuation: ["attenuation", "_attenuation"], _target: ["target", "_target"], _settings: ["settings", "_settings"] }, ngImport: i0, template: `
|
|
162
|
+
<ngt-group>
|
|
163
|
+
<ngt-portal [container]="scene()" [autoRender]="false">
|
|
164
|
+
<ng-template ngtPortalContent>
|
|
165
|
+
<ngt-mesh [ref]="trailRef" [geometry]="geometry" [material]="material()" />
|
|
166
|
+
</ng-template>
|
|
167
|
+
</ngt-portal>
|
|
168
|
+
<ngt-group [ref]="groupRef">
|
|
169
|
+
<ng-content />
|
|
170
|
+
</ngt-group>
|
|
171
|
+
</ngt-group>
|
|
172
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"], outputs: ["beforeRender"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[ngtPortalContent]" }] }); }
|
|
173
|
+
}
|
|
174
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsTrail, decorators: [{
|
|
175
|
+
type: Component,
|
|
176
|
+
args: [{
|
|
177
|
+
selector: 'ngts-trail',
|
|
178
|
+
standalone: true,
|
|
179
|
+
template: `
|
|
180
|
+
<ngt-group>
|
|
181
|
+
<ngt-portal [container]="scene()" [autoRender]="false">
|
|
182
|
+
<ng-template ngtPortalContent>
|
|
183
|
+
<ngt-mesh [ref]="trailRef" [geometry]="geometry" [material]="material()" />
|
|
184
|
+
</ng-template>
|
|
185
|
+
</ngt-portal>
|
|
186
|
+
<ngt-group [ref]="groupRef">
|
|
187
|
+
<ng-content />
|
|
188
|
+
</ngt-group>
|
|
189
|
+
</ngt-group>
|
|
190
|
+
`,
|
|
191
|
+
imports: [NgtPortal, NgtPortalContent],
|
|
192
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
193
|
+
}]
|
|
194
|
+
}], ctorParameters: function () { return []; }, propDecorators: { trailRef: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], _color: [{
|
|
197
|
+
type: Input,
|
|
198
|
+
args: [{ alias: 'color' }]
|
|
199
|
+
}], _attenuation: [{
|
|
200
|
+
type: Input,
|
|
201
|
+
args: [{ alias: 'attenuation' }]
|
|
202
|
+
}], _target: [{
|
|
203
|
+
type: Input,
|
|
204
|
+
args: [{ alias: 'target' }]
|
|
205
|
+
}], _settings: [{
|
|
206
|
+
type: Input,
|
|
207
|
+
args: [{ alias: 'settings' }]
|
|
208
|
+
}] } });
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvdHJhaWwvdHJhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04scUJBQXFCLEdBRXJCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBRWhCLHNCQUFzQixFQUN0QixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsRUFBRSxFQUNGLFdBQVcsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRXBDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBd0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFnQixFQUFFO0lBQ3ZFLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxPQUFPLFVBQVUsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFnQkYsTUFBTSxlQUFlLEdBQXNCO0lBQzFDLEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLENBQUM7SUFDVCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxLQUFLO0lBQ1osTUFBTSxFQUFFLENBQUM7SUFDVCxRQUFRLEVBQUUsQ0FBQztDQUNYLENBQUM7QUFFRixNQUFNLFVBQVUs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dCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRydW5JbkluamVjdGlvbkNvbnRleHQsXG5cdHR5cGUgSW5qZWN0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Tmd0UG9ydGFsLFxuXHROZ3RQb3J0YWxDb250ZW50LFxuXHROZ3RSZWYsXG5cdGFzc2VydEluamVjdGlvbkNvbnRleHQsXG5cdGV4dGVuZCxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHRpbmplY3ROZ3RSZWYsXG5cdGluamVjdE5ndFN0b3JlLFxuXHRpcyxcblx0c2lnbmFsU3RvcmUsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTWVzaExpbmVHZW9tZXRyeSwgTWVzaExpbmVNYXRlcmlhbCB9IGZyb20gJ21lc2hsaW5lJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEdyb3VwLCBNZXNoIH0gZnJvbSAndGhyZWUnO1xuXG5jb25zdCBzaGlmdExlZnQgPSAoY29sbGVjdGlvbjogRmxvYXQzMkFycmF5LCBzdGVwcyA9IDEpOiBGbG9hdDMyQXJyYXkgPT4ge1xuXHRjb2xsZWN0aW9uLnNldChjb2xsZWN0aW9uLnN1YmFycmF5KHN0ZXBzKSk7XG5cdGNvbGxlY3Rpb24uZmlsbCgtSW5maW5pdHksIC1zdGVwcyk7XG5cdHJldHVybiBjb2xsZWN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0c1RyYWlsU2V0dGluZ3MgPSB7XG5cdHdpZHRoOiBudW1iZXI7XG5cdGxlbmd0aDogbnVtYmVyO1xuXHRkZWNheTogbnVtYmVyO1xuXHQvKipcblx0ICogV2V0aGVyIHRvIHVzZSB0aGUgdGFyZ2V0J3Mgd29ybGQgb3IgbG9jYWwgcG9zaXRpb25zXG5cdCAqL1xuXHRsb2NhbDogYm9vbGVhbjtcblx0Ly8gTWluIGRpc3RhbmNlIGJldHdlZW4gcHJldmlvdXMgYW5kIGN1cnJlbnQgcG9pbnRzXG5cdHN0cmlkZTogbnVtYmVyO1xuXHQvLyBOdW1iZXIgb2YgZnJhbWVzIHRvIHdhaXQgYmVmb3JlIG5leHQgY2FsY3VsYXRpb25cblx0aW50ZXJ2YWw6IG51bWJlcjtcbn07XG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5nczogTmd0c1RyYWlsU2V0dGluZ3MgPSB7XG5cdHdpZHRoOiAwLjIsXG5cdGxlbmd0aDogMSxcblx0ZGVjYXk6IDEsXG5cdGxvY2FsOiBmYWxzZSxcblx0c3RyaWRlOiAwLFxuXHRpbnRlcnZhbDogMSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzVHJhaWwoXG5cdHRhcmdldEZhY3Rvcnk6ICgpID0+IE5ndFJlZjxUSFJFRS5PYmplY3QzRD4gfCBudWxsLFxuXHRzZXR0aW5nc0ZhY3Rvcnk6ICgpID0+IFBhcnRpYWw8Tmd0c1RyYWlsU2V0dGluZ3M+LFxuXHR7IGluamVjdG9yIH06IHsgaW5qZWN0b3I/OiBJbmplY3RvciB9ID0ge30sXG4pIHtcblx0aW5qZWN0b3IgPSBhc3NlcnRJbmplY3Rpb25Db250ZXh0KGluamVjdE5ndHNUcmFpbCwgaW5qZWN0b3IpO1xuXHRyZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgcG9pbnRzID0gaW5qZWN0Tmd0UmVmPEZsb2F0MzJBcnJheT4oKTtcblx0XHRsZXQgZnJhbWVDb3VudCA9IDA7XG5cblx0XHRjb25zdCBwcmV2UG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuXHRcdGNvbnN0IHdvcmxkUG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuXG5cdFx0Y29uc3QgX3RhcmdldCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IF90YXJnZXQgPSB0YXJnZXRGYWN0b3J5KCk7XG5cdFx0XHRpZiAoaXMucmVmKF90YXJnZXQpKSByZXR1cm4gX3RhcmdldC5uYXRpdmVFbGVtZW50O1xuXHRcdFx0cmV0dXJuIF90YXJnZXQ7XG5cdFx0fSk7XG5cblx0XHRjb25zdCBfc2V0dGluZ3MgPSBjb21wdXRlZCgoKSA9PiAoeyAuLi5kZWZhdWx0U2V0dGluZ3MsIC4uLnNldHRpbmdzRmFjdG9yeSgpIH0pKTtcblx0XHRjb25zdCBfbGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gX3NldHRpbmdzKCkubGVuZ3RoKTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbdGFyZ2V0LCBsZW5ndGhdID0gW190YXJnZXQoKSwgX2xlbmd0aCgpXTtcblx0XHRcdGlmICh0YXJnZXQpIHtcblx0XHRcdFx0cG9pbnRzLm5hdGl2ZUVsZW1lbnQgPSBGbG9hdDMyQXJyYXkuZnJvbSh7IGxlbmd0aDogbGVuZ3RoICogMTAgKiAzIH0sIChfLCBpKSA9PlxuXHRcdFx0XHRcdHRhcmdldC5wb3NpdGlvbi5nZXRDb21wb25lbnQoaSAlIDMpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFt0YXJnZXQsIF9wb2ludHMsIHsgbG9jYWwsIGRlY2F5LCBzdHJpZGUsIGludGVydmFsIH1dID0gW1xuXHRcdFx0XHRfdGFyZ2V0KCksXG5cdFx0XHRcdHBvaW50cy5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHRfc2V0dGluZ3MoKSxcblx0XHRcdF07XG5cdFx0XHRpZiAoIXRhcmdldCkgcmV0dXJuO1xuXHRcdFx0aWYgKCFfcG9pbnRzKSByZXR1cm47XG5cblx0XHRcdGlmIChmcmFtZUNvdW50ID09PSAwKSB7XG5cdFx0XHRcdGxldCBuZXdQb3NpdGlvbjogVEhSRUUuVmVjdG9yMztcblx0XHRcdFx0aWYgKGxvY2FsKSB7XG5cdFx0XHRcdFx0bmV3UG9zaXRpb24gPSB0YXJnZXQucG9zaXRpb247XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFyZ2V0LmdldFdvcmxkUG9zaXRpb24od29ybGRQb3NpdGlvbik7XG5cdFx0XHRcdFx0bmV3UG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgc3RlcHMgPSAxICogZGVjYXk7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcHM7IGkrKykge1xuXHRcdFx0XHRcdGlmIChuZXdQb3NpdGlvbi5kaXN0YW5jZVRvKHByZXZQb3NpdGlvbikgPCBzdHJpZGUpIGNvbnRpbnVlO1xuXG5cdFx0XHRcdFx0c2hpZnRMZWZ0KF9wb2ludHMsIDMpO1xuXHRcdFx0XHRcdF9wb2ludHMuc2V0KG5ld1Bvc2l0aW9uLnRvQXJyYXkoKSwgX3BvaW50cy5sZW5ndGggLSAzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwcmV2UG9zaXRpb24uY29weShuZXdQb3NpdGlvbik7XG5cdFx0XHR9XG5cblx0XHRcdGZyYW1lQ291bnQrKztcblx0XHRcdGZyYW1lQ291bnQgPSBmcmFtZUNvdW50ICUgaW50ZXJ2YWw7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gcG9pbnRzO1xuXHR9KTtcbn1cblxuZXhwb3J0IHR5cGUgTmd0c1RyYWlsU3RhdGUgPSB7XG5cdGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uO1xuXHRhdHRlbnVhdGlvbjogKHdpZHRoOiBudW1iZXIpID0+IG51bWJlcjtcblx0c2V0dGluZ3M6IE5ndHNUcmFpbFNldHRpbmdzO1xuXHR0YXJnZXQ/OiBOZ3RSZWY8VEhSRUUuT2JqZWN0M0Q+O1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQnbmd0cy10cmFpbCc6IE5ndHNUcmFpbFN0YXRlO1xuXHR9XG59XG5cbmV4dGVuZCh7IEdyb3VwLCBNZXNoIH0pO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXRyYWlsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWdyb3VwPlxuXHRcdFx0PG5ndC1wb3J0YWwgW2NvbnRhaW5lcl09XCJzY2VuZSgpXCIgW2F1dG9SZW5kZXJdPVwiZmFsc2VcIj5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIG5ndFBvcnRhbENvbnRlbnQ+XG5cdFx0XHRcdFx0PG5ndC1tZXNoIFtyZWZdPVwidHJhaWxSZWZcIiBbZ2VvbWV0cnldPVwiZ2VvbWV0cnlcIiBbbWF0ZXJpYWxdPVwibWF0ZXJpYWwoKVwiIC8+XG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHQ8L25ndC1wb3J0YWw+XG5cdFx0XHQ8bmd0LWdyb3VwIFtyZWZdPVwiZ3JvdXBSZWZcIj5cblx0XHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRcdDwvbmd0LWdyb3VwPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0UG9ydGFsLCBOZ3RQb3J0YWxDb250ZW50XSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzVHJhaWwge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNUcmFpbFN0YXRlPih7IHNldHRpbmdzOiBkZWZhdWx0U2V0dGluZ3MsIGNvbG9yOiAnaG90cGluaycgfSk7XG5cblx0QElucHV0KCkgdHJhaWxSZWYgPSBpbmplY3ROZ3RSZWY8TWVzaD4oKTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2NvbG9yJyB9KSBzZXQgX2NvbG9yKGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2F0dGVudWF0aW9uJyB9KSBzZXQgX2F0dGVudWF0aW9uKGF0dGVudWF0aW9uOiAod2lkdGg6IG51bWJlcikgPT4gbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgYXR0ZW51YXRpb24gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3RhcmdldCcgfSkgc2V0IF90YXJnZXQodGFyZ2V0OiBOZ3RSZWY8VEhSRUUuT2JqZWN0M0Q+KSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgdGFyZ2V0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzZXR0aW5ncycgfSkgc2V0IF9zZXR0aW5ncyhzZXR0aW5nczogUGFydGlhbDxOZ3RzVHJhaWxTZXR0aW5ncz4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzZXR0aW5nczogeyAuLi5kZWZhdWx0U2V0dGluZ3MsIC4uLnNldHRpbmdzIH0gfSk7XG5cdH1cblxuXHRncm91cFJlZiA9IGluamVjdE5ndFJlZjxHcm91cD4oKTtcblxuXHRwcml2YXRlIGNoaWxkcmVuID0gdGhpcy5ncm91cFJlZi5jaGlsZHJlbignYm90aCcpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXHRwcml2YXRlIHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXG5cdHByaXZhdGUgdGFyZ2V0ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCd0YXJnZXQnKTtcblx0cHJpdmF0ZSBzZXR0aW5ncyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc2V0dGluZ3MnKTtcblx0cHJpdmF0ZSB3aWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2V0dGluZ3MoKS53aWR0aCk7XG5cdHByaXZhdGUgY29sb3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbG9yJyk7XG5cdHByaXZhdGUgYXR0ZW51YXRpb24gPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2F0dGVudWF0aW9uJyk7XG5cblx0cHJpdmF0ZSBhbmNob3IgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgdGFyZ2V0ID0gdGhpcy50YXJnZXQoKTtcblx0XHRpZiAodGFyZ2V0KSByZXR1cm4gdGFyZ2V0O1xuXHRcdGNvbnN0IGdyb3VwID0gdGhpcy5ncm91cFJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChncm91cCkge1xuXHRcdFx0cmV0dXJuIGdyb3VwLmNoaWxkcmVuLmZpbmQoKGNoaWxkKSA9PiBjaGlsZCBpbnN0YW5jZW9mIFRIUkVFLk9iamVjdDNEKSB8fCBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fSk7XG5cblx0cHJpdmF0ZSBwb2ludHMgPSBpbmplY3ROZ3RzVHJhaWwodGhpcy5hbmNob3IsIHRoaXMuc2V0dGluZ3MpO1xuXG5cdHNjZW5lID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NjZW5lJyk7XG5cdGdlb21ldHJ5ID0gbmV3IE1lc2hMaW5lR2VvbWV0cnkoKTtcblx0bWF0ZXJpYWwgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW3dpZHRoLCBjb2xvciwgc2l6ZV0gPSBbdGhpcy53aWR0aCgpLCB0aGlzLmNvbG9yKCksIHRoaXMuc2l6ZSgpXTtcblxuXHRcdGNvbnN0IG0gPSBuZXcgTWVzaExpbmVNYXRlcmlhbCh7XG5cdFx0XHRsaW5lV2lkdGg6IDAuMSAqIHdpZHRoLFxuXHRcdFx0Y29sb3IsXG5cdFx0XHRzaXplQXR0ZW51YXRpb246IDEsXG5cdFx0XHRyZXNvbHV0aW9uOiBuZXcgVEhSRUUuVmVjdG9yMihzaXplLndpZHRoLCBzaXplLmhlaWdodCksXG5cdFx0fSk7XG5cblx0XHQvLyBUT0RPOiB1bmRlcnN0YW5kIHRoaXMgZmlyc3Rcblx0XHQvLyBHZXQgYW5kIGFwcGx5IGZpcnN0IDxtZXNoTGluZU1hdGVyaWFsIC8+IGZyb20gY2hpbGRyZW5cblx0XHQvLyBsZXQgbWF0T3ZlcnJpZGU6IFJlYWN0LlJlYWN0RWxlbWVudCB8IHVuZGVmaW5lZDtcblx0XHQvLyBpZiAoY2hpbGRyZW4pIHtcblx0XHQvLyBcdGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuXHRcdC8vIFx0XHRtYXRPdmVycmlkZSA9IGNoaWxkcmVuLmZpbmQoKGNoaWxkOiBSZWFjdC5SZWFjdE5vZGUpID0+IHtcblx0XHQvLyBcdFx0XHRjb25zdCBjID0gY2hpbGQgYXMgUmVhY3QuUmVhY3RFbGVtZW50O1xuXHRcdC8vIFx0XHRcdHJldHVybiB0eXBlb2YgYy50eXBlID09PSAnc3RyaW5nJyAmJiBjLnR5cGUgPT09ICdtZXNoTGluZU1hdGVyaWFsJztcblx0XHQvLyBcdFx0fSkgYXMgUmVhY3QuUmVhY3RFbGVtZW50IHwgdW5kZWZpbmVkO1xuXHRcdC8vIFx0fSBlbHNlIHtcblx0XHQvLyBcdFx0Y29uc3QgYyA9IGNoaWxkcmVuIGFzIFJlYWN0LlJlYWN0RWxlbWVudDtcblx0XHQvLyBcdFx0aWYgKHR5cGVvZiBjLnR5cGUgPT09ICdzdHJpbmcnICYmIGMudHlwZSA9PT0gJ21lc2hMaW5lTWF0ZXJpYWwnKSB7XG5cdFx0Ly8gXHRcdFx0bWF0T3ZlcnJpZGUgPSBjO1xuXHRcdC8vIFx0XHR9XG5cdFx0Ly8gXHR9XG5cdFx0Ly8gfVxuXHRcdC8vIGlmICh0eXBlb2YgbWF0T3ZlcnJpZGU/LnByb3BzID09PSAnb2JqZWN0Jykge1xuXHRcdC8vIFx0bS5zZXRWYWx1ZXMobWF0T3ZlcnJpZGUucHJvcHMpO1xuXHRcdC8vIH1cblxuXHRcdHJldHVybiBtO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnNldE1hdGVyaWFsU2l6ZSgpO1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdH1cblxuXHRwcml2YXRlIHNldE1hdGVyaWFsU2l6ZSgpIHtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW21hdGVyaWFsLCBzaXplXSA9IFt0aGlzLm1hdGVyaWFsKCksIHRoaXMuc2l6ZSgpXTtcblx0XHRcdG1hdGVyaWFsLnVuaWZvcm1zWydyZXNvbHV0aW9uJ10udmFsdWUuc2V0KHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgYmVmb3JlUmVuZGVyKCkge1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBbcG9pbnRzLCBhdHRlbnVhdGlvbl0gPSBbdGhpcy5wb2ludHMubmF0aXZlRWxlbWVudCwgdGhpcy5hdHRlbnVhdGlvbigpXTtcblx0XHRcdGlmICghcG9pbnRzKSByZXR1cm47XG5cdFx0XHR0aGlzLmdlb21ldHJ5LnNldFBvaW50cyhwb2ludHMsIGF0dGVudWF0aW9uKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { computed, runInInjectionContext } from '@angular/core';
|
|
2
|
+
import { assertInjectionContext, injectBeforeRender } from 'angular-three';
|
|
3
|
+
import { TrailTexture } from './trail-texture';
|
|
4
|
+
export function injectNgtsTrailTexture(trailConfigFn, { injector } = {}) {
|
|
5
|
+
injector = assertInjectionContext(injectNgtsTrailTexture, injector);
|
|
6
|
+
return runInInjectionContext(injector, () => {
|
|
7
|
+
const config = computed(() => trailConfigFn() || {});
|
|
8
|
+
const trail = computed(() => new TrailTexture(config()));
|
|
9
|
+
const texture = computed(() => trail().texture);
|
|
10
|
+
injectBeforeRender(({ delta }) => {
|
|
11
|
+
trail().update(delta);
|
|
12
|
+
});
|
|
13
|
+
const onMove = (ev) => trail().addTouch(ev.uv);
|
|
14
|
+
return { texture, onMove };
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXRyYWlsLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvdHJhaWwtdGV4dHVyZS9pbmplY3QtdHJhaWwtdGV4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBaUIsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxNQUFNLFVBQVUsc0JBQXNCLENBQ3JDLGFBQXlDLEVBQ3pDLEVBQUUsUUFBUSxLQUE4QixFQUFFO0lBRTFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxzQkFBc0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRSxPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDM0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhELGtCQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBK0IsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFHLENBQUMsQ0FBQztRQUU3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBjb21wdXRlZCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RUaHJlZUV2ZW50LCBhc3NlcnRJbmplY3Rpb25Db250ZXh0LCBpbmplY3RCZWZvcmVSZW5kZXIgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFRyYWlsVGV4dHVyZSwgdHlwZSBUcmFpbENvbmZpZyB9IGZyb20gJy4vdHJhaWwtdGV4dHVyZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzVHJhaWxUZXh0dXJlKFxuXHR0cmFpbENvbmZpZ0ZuOiAoKSA9PiBQYXJ0aWFsPFRyYWlsQ29uZmlnPixcblx0eyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9LFxuKSB7XG5cdGluamVjdG9yID0gYXNzZXJ0SW5qZWN0aW9uQ29udGV4dChpbmplY3ROZ3RzVHJhaWxUZXh0dXJlLCBpbmplY3Rvcik7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBjb25maWcgPSBjb21wdXRlZCgoKSA9PiB0cmFpbENvbmZpZ0ZuKCkgfHwge30pO1xuXHRcdGNvbnN0IHRyYWlsID0gY29tcHV0ZWQoKCkgPT4gbmV3IFRyYWlsVGV4dHVyZShjb25maWcoKSkpO1xuXHRcdGNvbnN0IHRleHR1cmUgPSBjb21wdXRlZCgoKSA9PiB0cmFpbCgpLnRleHR1cmUpO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGRlbHRhIH0pID0+IHtcblx0XHRcdHRyYWlsKCkudXBkYXRlKGRlbHRhKTtcblx0XHR9KTtcblxuXHRcdGNvbnN0IG9uTW92ZSA9IChldjogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB0cmFpbCgpLmFkZFRvdWNoKGV2LnV2ISk7XG5cblx0XHRyZXR1cm4geyB0ZXh0dXJlLCBvbk1vdmUgfTtcblx0fSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Texture } from 'three';
|
|
2
|
+
// default ease
|
|
3
|
+
const easeCircleOut = (x) => Math.sqrt(1 - Math.pow(x - 1, 2));
|
|
4
|
+
// smooth new sample (measurement) based on previous sample (current)
|
|
5
|
+
function smoothAverage(current, measurement, smoothing = 0.9) {
|
|
6
|
+
return measurement * smoothing + current * (1.0 - smoothing);
|
|
7
|
+
}
|
|
8
|
+
export class TrailTexture {
|
|
9
|
+
constructor({ size = 256, maxAge = 750, radius = 0.3, intensity = 0.2, interpolate = 0, smoothing = 0, minForce = 0.3, blend = 'screen', // source-over is canvas default. Others are slower
|
|
10
|
+
ease = easeCircleOut, } = {}) {
|
|
11
|
+
this.size = size;
|
|
12
|
+
this.maxAge = maxAge;
|
|
13
|
+
this.radius = radius;
|
|
14
|
+
this.intensity = intensity;
|
|
15
|
+
this.ease = ease;
|
|
16
|
+
this.interpolate = interpolate;
|
|
17
|
+
this.smoothing = smoothing;
|
|
18
|
+
this.minForce = minForce;
|
|
19
|
+
this.blend = blend;
|
|
20
|
+
this.trail = [];
|
|
21
|
+
this.force = 0;
|
|
22
|
+
this.initTexture();
|
|
23
|
+
}
|
|
24
|
+
initTexture() {
|
|
25
|
+
this.canvas = document.createElement('canvas');
|
|
26
|
+
this.canvas.width = this.canvas.height = this.size;
|
|
27
|
+
this.ctx = this.canvas.getContext('2d');
|
|
28
|
+
this.ctx.fillStyle = 'black';
|
|
29
|
+
this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
|
|
30
|
+
this.texture = new Texture(this.canvas);
|
|
31
|
+
this.canvas.id = 'touchTexture';
|
|
32
|
+
this.canvas.style.width = this.canvas.style.height = `${this.canvas.width}px`;
|
|
33
|
+
}
|
|
34
|
+
update(delta) {
|
|
35
|
+
this.clear();
|
|
36
|
+
// age points
|
|
37
|
+
this.trail.forEach((point, i) => {
|
|
38
|
+
point.age += delta * 1000;
|
|
39
|
+
// remove old
|
|
40
|
+
if (point.age > this.maxAge) {
|
|
41
|
+
this.trail.splice(i, 1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
// reset force when empty (when smoothing)
|
|
45
|
+
if (!this.trail.length)
|
|
46
|
+
this.force = 0;
|
|
47
|
+
this.trail.forEach((point) => {
|
|
48
|
+
this.drawTouch(point);
|
|
49
|
+
});
|
|
50
|
+
this.texture.needsUpdate = true;
|
|
51
|
+
}
|
|
52
|
+
clear() {
|
|
53
|
+
this.ctx.globalCompositeOperation = 'source-over';
|
|
54
|
+
this.ctx.fillStyle = 'black';
|
|
55
|
+
this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
|
|
56
|
+
}
|
|
57
|
+
addTouch(point) {
|
|
58
|
+
const last = this.trail[this.trail.length - 1];
|
|
59
|
+
if (last) {
|
|
60
|
+
const dx = last.x - point.x;
|
|
61
|
+
const dy = last.y - point.y;
|
|
62
|
+
const dd = dx * dx + dy * dy;
|
|
63
|
+
const force = Math.max(this.minForce, Math.min(dd * 10000, 1));
|
|
64
|
+
this.force = smoothAverage(force, this.force, this.smoothing);
|
|
65
|
+
if (!!this.interpolate) {
|
|
66
|
+
const lines = Math.ceil(dd / Math.pow((this.radius * 0.5) / this.interpolate, 2));
|
|
67
|
+
if (lines > 1) {
|
|
68
|
+
for (let i = 1; i < lines; i++) {
|
|
69
|
+
this.trail.push({
|
|
70
|
+
x: last.x - (dx / lines) * i,
|
|
71
|
+
y: last.y - (dy / lines) * i,
|
|
72
|
+
age: 0,
|
|
73
|
+
force,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
this.trail.push({ x: point.x, y: point.y, age: 0, force: this.force });
|
|
80
|
+
}
|
|
81
|
+
drawTouch(point) {
|
|
82
|
+
const pos = {
|
|
83
|
+
x: point.x * this.size,
|
|
84
|
+
y: (1 - point.y) * this.size,
|
|
85
|
+
};
|
|
86
|
+
let intensity = 1;
|
|
87
|
+
if (point.age < this.maxAge * 0.3) {
|
|
88
|
+
intensity = this.ease(point.age / (this.maxAge * 0.3));
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
intensity = this.ease(1 - (point.age - this.maxAge * 0.3) / (this.maxAge * 0.7));
|
|
92
|
+
}
|
|
93
|
+
intensity *= point.force;
|
|
94
|
+
// apply blending
|
|
95
|
+
this.ctx.globalCompositeOperation = this.blend;
|
|
96
|
+
const radius = this.size * this.radius * intensity;
|
|
97
|
+
const grd = this.ctx.createRadialGradient(pos.x, pos.y, Math.max(0, radius * 0.25), pos.x, pos.y, Math.max(0, radius));
|
|
98
|
+
grd.addColorStop(0, `rgba(255, 255, 255, ${this.intensity})`);
|
|
99
|
+
grd.addColorStop(1, `rgba(0, 0, 0, 0.0)`);
|
|
100
|
+
this.ctx.beginPath();
|
|
101
|
+
this.ctx.fillStyle = grd;
|
|
102
|
+
this.ctx.arc(pos.x, pos.y, Math.max(0, radius), 0, Math.PI * 2);
|
|
103
|
+
this.ctx.fill();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaWwtdGV4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy90cmFpbC10ZXh0dXJlL3RyYWlsLXRleHR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQThCaEMsZUFBZTtBQUNmLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV2RSxxRUFBcUU7QUFDckUsU0FBUyxhQUFhLENBQUMsT0FBZSxFQUFFLFdBQW1CLEVBQUUsU0FBUyxHQUFHLEdBQUc7SUFDM0UsT0FBTyxXQUFXLEdBQUcsU0FBUyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQsTUFBTSxPQUFPLFlBQVk7SUFnQnhCLFlBQVksRUFDWCxJQUFJLEdBQUcsR0FBRyxFQUNWLE1BQU0sR0FBRyxHQUFHLEVBQ1osTUFBTSxHQUFHLEdBQUcsRUFDWixTQUFTLEdBQUcsR0FBRyxFQUNmLFdBQVcsR0FBRyxDQUFDLEVBQ2YsU0FBUyxHQUFHLENBQUMsRUFDYixRQUFRLEdBQUcsR0FBRyxFQUNkLEtBQUssR0FBRyxRQUFRLEVBQUUsbURBQW1EO0lBQ3JFLElBQUksR0FBRyxhQUFhLE1BQ0osRUFBRTtRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxH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LEtBQUssQ0FBQztRQUUvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQ3hDLEdBQUcsQ0FBQyxDQUFDLEVBQ0wsR0FBRyxDQUFDLENBQUMsRUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQzFCLEdBQUcsQ0FBQyxDQUFDLEVBQ0wsR0FBRyxDQUFDLENBQUMsRUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FDbkIsQ0FBQztRQUNGLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHR1cmUgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCB0eXBlIFBvaW50ID0ge1xuXHR4OiBudW1iZXI7XG5cdHk6IG51bWJlcjtcblx0YWdlOiBudW1iZXI7XG5cdGZvcmNlOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBUcmFpbENvbmZpZyA9IHtcblx0LyoqIHRleHR1cmUgc2l6ZSAoZGVmYXVsdDogMjU2eDI1NikgKi9cblx0c2l6ZT86IG51bWJlcjtcblx0LyoqIE1heCBhZ2UgKG1zKSBvZiB0cmFpbCBwb2ludHMgKGRlZmF1bHQ6IDc1MCkgKi9cblx0bWF4QWdlPzogbnVtYmVyO1xuXHQvKiogVHJhaWwgcmFkaXVzIChkZWZhdWx0OiAwLjMpICovXG5cdHJhZGl1cz86IG51bWJlcjtcblx0LyoqIENhbnZhcyB0cmFpbCBvcGFjaXR5IChkZWZhdWx0OiAwLjIpICovXG5cdGludGVuc2l0eT86IG51bWJlcjtcblx0LyoqIEFkZCBwb2ludHMgaW4gYmV0d2VlbiBzbG93IHBvaW50ZXIgZXZlbnRzIChkZWZhdWx0OiAwKSAqL1xuXHRpbnRlcnBvbGF0ZT86IG51bWJlcjtcblx0LyoqIE1vdmluZyBhdmVyYWdlIG9mIHBvaW50ZXIgZm9yY2UgKGRlZmF1bHQ6IDApICovXG5cdHNtb290aGluZz86IG51bWJlcjtcblx0LyoqIE1pbmltdW0gcG9pbnRlciBmb3JjZSAoZGVmYXVsdDogMC4zKSAqL1xuXHRtaW5Gb3JjZT86IG51bWJlcjtcblx0LyoqIEJsZW5kIG1vZGUgKGRlZmF1bHQ6ICdzY3JlZW4nKSAqL1xuXHRibGVuZD86IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFsnZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uJ107XG5cdC8qKiBFYXNpbmcgKGRlZmF1bHQ6IGVhc2VDaXJjT3V0KSAqL1xuXHRlYXNlPzogKHQ6IG51bWJlcikgPT4gbnVtYmVyO1xufTtcblxuLy8gZGVmYXVsdCBlYXNlXG5jb25zdCBlYXNlQ2lyY2xlT3V0ID0gKHg6IG51bWJlcikgPT4gTWF0aC5zcXJ0KDEgLSBNYXRoLnBvdyh4IC0gMSwgMikpO1xuXG4vLyBzbW9vdGggbmV3IHNhbXBsZSAobWVhc3VyZW1lbnQpIGJhc2VkIG9uIHByZXZpb3VzIHNhbXBsZSAoY3VycmVudClcbmZ1bmN0aW9uIHNtb290aEF2ZXJhZ2UoY3VycmVudDogbnVtYmVyLCBtZWFzdXJlbWVudDogbnVtYmVyLCBzbW9vdGhpbmcgPSAwLjkpIHtcblx0cmV0dXJuIG1lYXN1cmVtZW50ICogc21vb3RoaW5nICsgY3VycmVudCAqICgxLjAgLSBzbW9vdGhpbmcpO1xufVxuXG5leHBvcnQgY2xhc3MgVHJhaWxUZXh0dXJlIHtcblx0dHJhaWw6IFBvaW50W107XG5cdGNhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xuXHRjdHghOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG5cdHRleHR1cmUhOiBUZXh0dXJlO1xuXHRmb3JjZTogbnVtYmVyO1xuXHRzaXplOiBudW1iZXI7XG5cdG1heEFnZTogbnVtYmVyO1xuXHRyYWRpdXM6IG51bWJlcjtcblx0aW50ZW5zaXR5OiBudW1iZXI7XG5cdGVhc2U6ICh0OiBudW1iZXIpID0+IG51bWJlcjtcblx0bWluRm9yY2U6IG51bWJlcjtcblx0aW50ZXJwb2xhdGU6IG51bWJlcjtcblx0c21vb3RoaW5nOiBudW1iZXI7XG5cdGJsZW5kOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRbJ2dsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiddO1xuXG5cdGNvbnN0cnVjdG9yKHtcblx0XHRzaXplID0gMjU2LFxuXHRcdG1heEFnZSA9IDc1MCxcblx0XHRyYWRpdXMgPSAwLjMsXG5cdFx0aW50ZW5zaXR5ID0gMC4yLFxuXHRcdGludGVycG9sYXRlID0gMCxcblx0XHRzbW9vdGhpbmcgPSAwLFxuXHRcdG1pbkZvcmNlID0gMC4zLFxuXHRcdGJsZW5kID0gJ3NjcmVlbicsIC8vIHNvdXJjZS1vdmVyIGlzIGNhbnZhcyBkZWZhdWx0LiBPdGhlcnMgYXJlIHNsb3dlclxuXHRcdGVhc2UgPSBlYXNlQ2lyY2xlT3V0LFxuXHR9OiBUcmFpbENvbmZpZyA9IHt9KSB7XG5cdFx0dGhpcy5zaXplID0gc2l6ZTtcblx0XHR0aGlzLm1heEFnZSA9IG1heEFnZTtcblx0XHR0aGlzLnJhZGl1cyA9IHJhZGl1cztcblx0XHR0aGlzLmludGVuc2l0eSA9IGludGVuc2l0eTtcblx0XHR0aGlzLmVhc2UgPSBlYXNlO1xuXHRcdHRoaXMuaW50ZXJwb2xhdGUgPSBpbnRlcnBvbGF0ZTtcblx0XHR0aGlzLnNtb290aGluZyA9IHNtb290aGluZztcblx0XHR0aGlzLm1pbkZvcmNlID0gbWluRm9yY2U7XG5cdFx0dGhpcy5ibGVuZCA9IGJsZW5kIGFzIEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbjtcblxuXHRcdHRoaXMudHJhaWwgPSBbXTtcblx0XHR0aGlzLmZvcmNlID0gMDtcblx0XHR0aGlzLmluaXRUZXh0dXJlKCk7XG5cdH1cblxuXHRpbml0VGV4dHVyZSgpIHtcblx0XHR0aGlzLmNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuXHRcdHRoaXMuY2FudmFzLndpZHRoID0gdGhpcy5jYW52YXMuaGVpZ2h0ID0gdGhpcy5zaXplO1xuXHRcdHRoaXMuY3R4ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSE7XG5cdFx0dGhpcy5jdHguZmlsbFN0eWxlID0gJ2JsYWNrJztcblx0XHR0aGlzLmN0eC5maWxsUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcblxuXHRcdHRoaXMudGV4dHVyZSA9IG5ldyBUZXh0dXJlKHRoaXMuY2FudmFzKTtcblxuXHRcdHRoaXMuY2FudmFzLmlkID0gJ3RvdWNoVGV4dHVyZSc7XG5cdFx0dGhpcy5jYW52YXMuc3R5bGUud2lkdGggPSB0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQgPSBgJHt0aGlzLmNhbnZhcy53aWR0aH1weGA7XG5cdH1cblxuXHR1cGRhdGUoZGVsdGE6IG51bWJlcikge1xuXHRcdHRoaXMuY2xlYXIoKTtcblxuXHRcdC8vIGFnZSBwb2ludHNcblx0XHR0aGlzLnRyYWlsLmZvckVhY2goKHBvaW50LCBpKSA9PiB7XG5cdFx0XHRwb2ludC5hZ2UgKz0gZGVsdGEgKiAxMDAwO1xuXHRcdFx0Ly8gcmVtb3ZlIG9sZFxuXHRcdFx0aWYgKHBvaW50LmFnZSA+IHRoaXMubWF4QWdlKSB7XG5cdFx0XHRcdHRoaXMudHJhaWwuc3BsaWNlKGksIDEpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gcmVzZXQgZm9yY2Ugd2hlbiBlbXB0eSAod2hlbiBzbW9vdGhpbmcpXG5cdFx0aWYgKCF0aGlzLnRyYWlsLmxlbmd0aCkgdGhpcy5mb3JjZSA9IDA7XG5cblx0XHR0aGlzLnRyYWlsLmZvckVhY2goKHBvaW50KSA9PiB7XG5cdFx0XHR0aGlzLmRyYXdUb3VjaChwb2ludCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnRleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHR9XG5cblx0Y2xlYXIoKSB7XG5cdFx0dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcblx0XHR0aGlzLmN0eC5maWxsU3R5bGUgPSAnYmxhY2snO1xuXHRcdHRoaXMuY3R4LmZpbGxSZWN0KDAsIDAsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuXHR9XG5cblx0YWRkVG91Y2gocG9pbnQ6IFBpY2s8UG9pbnQsICd4JyB8ICd5Jz4pIHtcblx0XHRjb25zdCBsYXN0ID0gdGhpcy50cmFpbFt0aGlzLnRyYWlsLmxlbmd0aCAtIDFdO1xuXG5cdFx0aWYgKGxhc3QpIHtcblx0XHRcdGNvbnN0IGR4ID0gbGFzdC54IC0gcG9pbnQueDtcblx0XHRcdGNvbnN0IGR5ID0gbGFzdC55IC0gcG9pbnQueTtcblx0XHRcdGNvbnN0IGRkID0gZHggKiBkeCArIGR5ICogZHk7XG5cblx0XHRcdGNvbnN0IGZvcmNlID0gTWF0aC5tYXgodGhpcy5taW5Gb3JjZSwgTWF0aC5taW4oZGQgKiAxMDAwMCwgMSkpO1xuXG5cdFx0XHR0aGlzLmZvcmNlID0gc21vb3RoQXZlcmFnZShmb3JjZSwgdGhpcy5mb3JjZSwgdGhpcy5zbW9vdGhpbmcpO1xuXG5cdFx0XHRpZiAoISF0aGlzLmludGVycG9sYXRlKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmVzID0gTWF0aC5jZWlsKGRkIC8gTWF0aC5wb3coKHRoaXMucmFkaXVzICogMC41KSAvIHRoaXMuaW50ZXJwb2xhdGUsIDIpKTtcblxuXHRcdFx0XHRpZiAobGluZXMgPiAxKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBsaW5lczsgaSsrKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRyYWlsLnB1c2goe1xuXHRcdFx0XHRcdFx0XHR4OiBsYXN0LnggLSAoZHggLyBsaW5lcykgKiBpLFxuXHRcdFx0XHRcdFx0XHR5OiBsYXN0LnkgLSAoZHkgLyBsaW5lcykgKiBpLFxuXHRcdFx0XHRcdFx0XHRhZ2U6IDAsXG5cdFx0XHRcdFx0XHRcdGZvcmNlLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMudHJhaWwucHVzaCh7IHg6IHBvaW50LngsIHk6IHBvaW50LnksIGFnZTogMCwgZm9yY2U6IHRoaXMuZm9yY2UgfSk7XG5cdH1cblxuXHRkcmF3VG91Y2gocG9pbnQ6IFBvaW50KSB7XG5cdFx0Y29uc3QgcG9zID0ge1xuXHRcdFx0eDogcG9pbnQueCAqIHRoaXMuc2l6ZSxcblx0XHRcdHk6ICgxIC0gcG9pbnQueSkgKiB0aGlzLnNpemUsXG5cdFx0fTtcblxuXHRcdGxldCBpbnRlbnNpdHkgPSAxO1xuXHRcdGlmIChwb2ludC5hZ2UgPCB0aGlzLm1heEFnZSAqIDAuMykge1xuXHRcdFx0aW50ZW5zaXR5ID0gdGhpcy5lYXNlKHBvaW50LmFnZSAvICh0aGlzLm1heEFnZSAqIDAuMykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbnRlbnNpdHkgPSB0aGlzLmVhc2UoMSAtIChwb2ludC5hZ2UgLSB0aGlzLm1heEFnZSAqIDAuMykgLyAodGhpcy5tYXhBZ2UgKiAwLjcpKTtcblx0XHR9XG5cblx0XHRpbnRlbnNpdHkgKj0gcG9pbnQuZm9yY2U7XG5cblx0XHQvLyBhcHBseSBibGVuZGluZ1xuXHRcdHRoaXMuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IHRoaXMuYmxlbmQ7XG5cblx0XHRjb25zdCByYWRpdXMgPSB0aGlzLnNpemUgKiB0aGlzLnJhZGl1cyAqIGludGVuc2l0eTtcblx0XHRjb25zdCBncmQgPSB0aGlzLmN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudChcblx0XHRcdHBvcy54LFxuXHRcdFx0cG9zLnksXG5cdFx0XHRNYXRoLm1heCgwLCByYWRpdXMgKiAwLjI1KSxcblx0XHRcdHBvcy54LFxuXHRcdFx0cG9zLnksXG5cdFx0XHRNYXRoLm1heCgwLCByYWRpdXMpLFxuXHRcdCk7XG5cdFx0Z3JkLmFkZENvbG9yU3RvcCgwLCBgcmdiYSgyNTUsIDI1NSwgMjU1LCAke3RoaXMuaW50ZW5zaXR5fSlgKTtcblx0XHRncmQuYWRkQ29sb3JTdG9wKDEsIGByZ2JhKDAsIDAsIDAsIDAuMClgKTtcblxuXHRcdHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xuXHRcdHRoaXMuY3R4LmZpbGxTdHlsZSA9IGdyZDtcblx0XHR0aGlzLmN0eC5hcmMocG9zLngsIHBvcy55LCBNYXRoLm1heCgwLCByYWRpdXMpLCAwLCBNYXRoLlBJICogMik7XG5cdFx0dGhpcy5jdHguZmlsbCgpO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLW1vZGlmaWVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9tb2RpZmllcnMvc3JjL2FuZ3VsYXItdGhyZWUtc29iYS1tb2RpZmllcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|