angular-three-soba 2.2.0 → 2.3.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/abstractions/lib/catmull-rom-line.d.ts +148 -148
- package/abstractions/lib/edges.d.ts +166 -166
- package/abstractions/lib/grid.d.ts +30 -30
- package/abstractions/lib/line.d.ts +10 -9
- package/abstractions/lib/prism-geometry.d.ts +4 -4
- package/abstractions/lib/rounded-box.d.ts +3 -3
- package/abstractions/lib/text-3d.d.ts +38 -38
- package/abstractions/lib/text.d.ts +2 -3
- package/cameras/lib/cube-camera.d.ts +2 -2
- package/cameras/lib/orthographic-camera.d.ts +7 -8
- package/cameras/lib/perspective-camera.d.ts +2 -3
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +1 -1
- package/esm2022/abstractions/lib/billboard.mjs +3 -3
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/edges.mjs +30 -34
- package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
- package/esm2022/abstractions/lib/grid.mjs +3 -3
- package/esm2022/abstractions/lib/helper.mjs +18 -20
- package/esm2022/abstractions/lib/line.mjs +25 -28
- package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
- package/esm2022/abstractions/lib/text-3d.mjs +14 -17
- package/esm2022/abstractions/lib/text.mjs +11 -16
- package/esm2022/cameras/lib/camera-content.mjs +3 -3
- package/esm2022/cameras/lib/cube-camera.mjs +18 -27
- package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
- package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
- package/esm2022/controls/lib/camera-controls.mjs +3 -3
- package/esm2022/controls/lib/orbit-controls.mjs +3 -3
- package/esm2022/controls/lib/scroll-controls.mjs +124 -130
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +6 -6
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +12 -12
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +9 -9
- package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +6 -4
- package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +44 -47
- package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +3 -3
- package/esm2022/gizmos/lib/transform-controls.mjs +3 -3
- package/esm2022/loaders/lib/loader.mjs +3 -3
- package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
- package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
- package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
- package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
- package/esm2022/materials/lib/point-material.mjs +3 -3
- package/esm2022/misc/lib/bake-shadows.mjs +8 -10
- package/esm2022/misc/lib/computed-attribute.mjs +15 -19
- package/esm2022/misc/lib/decal.mjs +56 -53
- package/esm2022/misc/lib/fbo.mjs +10 -10
- package/esm2022/misc/lib/html/html-content.mjs +62 -67
- package/esm2022/misc/lib/html/html.mjs +3 -3
- package/esm2022/misc/lib/intersect.mjs +6 -9
- package/esm2022/misc/lib/sampler.mjs +42 -42
- package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
- package/esm2022/performances/lib/adaptive-events.mjs +12 -16
- package/esm2022/performances/lib/detailed.mjs +14 -18
- package/esm2022/performances/lib/instances/instances.mjs +16 -22
- package/esm2022/performances/lib/points/points.mjs +19 -25
- package/esm2022/performances/lib/segments/segments.mjs +11 -14
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
- package/esm2022/staging/index.mjs +3 -2
- package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
- package/esm2022/staging/lib/backdrop.mjs +19 -23
- package/esm2022/staging/lib/bb-anchor.mjs +3 -3
- package/esm2022/staging/lib/bounds.mjs +39 -43
- package/esm2022/staging/lib/camera-shake.mjs +14 -18
- package/esm2022/staging/lib/caustics.mjs +24 -28
- package/esm2022/staging/lib/center.mjs +28 -32
- package/esm2022/staging/lib/contact-shadows.mjs +3 -3
- package/esm2022/staging/lib/environment/environment.mjs +338 -0
- package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
- package/esm2022/staging/lib/float.mjs +3 -3
- package/esm2022/staging/lib/lightformer.mjs +18 -22
- package/esm2022/staging/lib/mask.mjs +8 -12
- package/esm2022/staging/lib/matcap-texture.mjs +9 -11
- package/esm2022/staging/lib/normal-texture.mjs +9 -11
- package/esm2022/staging/lib/randomized-lights.mjs +9 -13
- package/esm2022/staging/lib/render-texture.mjs +19 -20
- package/esm2022/staging/lib/sky.mjs +3 -3
- package/esm2022/staging/lib/spot-light.mjs +32 -40
- package/esm2022/staging/lib/stage.mjs +13 -17
- package/esm2022/stats/lib/stats.mjs +21 -27
- package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +57 -64
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +129 -135
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +87 -88
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +3 -3
- package/fesm2022/angular-three-soba-materials.mjs +52 -62
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +188 -195
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +90 -114
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +427 -430
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +20 -26
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
- package/materials/lib/custom-shader-material.d.ts +3 -3
- package/materials/lib/mesh-refraction-material.d.ts +3 -3
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +5 -5
- package/misc/lib/decal.d.ts +5 -5
- package/misc/lib/html/html-content.d.ts +6 -6
- package/misc/lib/html/html.d.ts +1 -1
- package/misc/lib/sampler.d.ts +2 -4
- package/package.json +12 -12
- package/performances/lib/instances/instances.d.ts +11 -11
- package/performances/lib/points/points.d.ts +20 -20
- package/performances/lib/segments/segments.d.ts +4 -4
- package/shaders/lib/mesh-refraction-material.d.ts +2 -5
- package/staging/index.d.ts +2 -1
- package/staging/lib/camera-shake.d.ts +0 -1
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/center.d.ts +2 -2
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
- package/staging/lib/environment/inject-environment.d.ts +33 -0
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/mask.d.ts +1 -1
- package/staging/lib/matcap-texture.d.ts +0 -1
- package/staging/lib/normal-texture.d.ts +0 -1
- package/staging/lib/render-texture.d.ts +1 -1
- package/staging/lib/sky.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +2 -2
- package/staging/lib/stage.d.ts +7 -6
- package/esm2022/staging/lib/environment.mjs +0 -481
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, effect, input, viewChild } from '@angular/core';
|
|
2
2
|
import { checkNeedsUpdate, getLocalState, omit } from 'angular-three';
|
|
3
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
3
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
4
|
import { EdgesGeometry } from 'three';
|
|
6
5
|
import { NgtsLine } from './line';
|
|
@@ -16,44 +15,41 @@ export class NgtsEdges {
|
|
|
16
15
|
this.lineOptions = computed(() => ({ ...this.parameters(), raycast: () => null }));
|
|
17
16
|
this.tmpPoints = [0, 0, 0, 1, 0, 0];
|
|
18
17
|
this.line = viewChild.required(NgtsLine);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
checkNeedsUpdate(line.geometry.attributes['instanceEnd']);
|
|
45
|
-
line.computeLineDistances();
|
|
46
|
-
});
|
|
18
|
+
effect(() => {
|
|
19
|
+
const line = this.line().lineRef()?.nativeElement;
|
|
20
|
+
if (!line)
|
|
21
|
+
return;
|
|
22
|
+
const lS = getLocalState(line);
|
|
23
|
+
if (!lS)
|
|
24
|
+
return;
|
|
25
|
+
const parent = lS.parent();
|
|
26
|
+
if (!parent)
|
|
27
|
+
return;
|
|
28
|
+
const { geometry: explicitGeometry, threshold } = this.options();
|
|
29
|
+
const geometry = explicitGeometry ?? parent.geometry;
|
|
30
|
+
if (!geometry)
|
|
31
|
+
return;
|
|
32
|
+
const cached = this.memoizedGeometry === geometry && this.memoizedThreshold === threshold;
|
|
33
|
+
if (cached)
|
|
34
|
+
return;
|
|
35
|
+
this.memoizedGeometry = geometry;
|
|
36
|
+
this.memoizedThreshold = threshold;
|
|
37
|
+
const points = new EdgesGeometry(geometry, threshold).attributes['position']
|
|
38
|
+
.array;
|
|
39
|
+
line.geometry.setPositions(points);
|
|
40
|
+
checkNeedsUpdate(line.geometry.attributes['instanceStart']);
|
|
41
|
+
checkNeedsUpdate(line.geometry.attributes['instanceEnd']);
|
|
42
|
+
line.computeLineDistances();
|
|
47
43
|
});
|
|
48
44
|
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsEdges, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", 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
47
|
<ngts-line [points]="tmpPoints" [options]="lineOptions()">
|
|
52
48
|
<ng-content />
|
|
53
49
|
</ngts-line>
|
|
54
50
|
`, isInline: true, dependencies: [{ kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
55
51
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsEdges, decorators: [{
|
|
57
53
|
type: Component,
|
|
58
54
|
args: [{
|
|
59
55
|
selector: 'ngts-edges',
|
|
@@ -67,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
67
63
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
68
64
|
}]
|
|
69
65
|
}], ctorParameters: () => [] });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvYWJzdHJhY3Rpb25zL3NyYy9saWIvZWRnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBVyxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBd0QsYUFBYSxFQUFRLE1BQU0sT0FBTyxDQUFDO0FBRWxHLE9BQU8sRUFBNkIsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDOztBQVk3RCxNQUFNLGNBQWMsR0FBcUI7SUFDeEMsU0FBUyxFQUFFLENBQUM7SUFDWixTQUFTLEVBQUUsRUFBRTtDQUNiLENBQUM7QUFhRixNQUFNLE9BQU8sU0FBUztJQVlyQjtRQVhBLFlBQU8sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFekQsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUUsY0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV6QyxTQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQU1uQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsQ0FBQztZQUNsRCxJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPO1lBRWxCLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBRWhCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQVUsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBRXBCLE1BQU0sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pFLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDckQsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTztZQUV0QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLENBQUM7WUFDMUYsSUFBSSxNQUFNO2dCQUFFLE9BQU87WUFFbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztZQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1lBRW5DLE1BQU0sTUFBTSxHQUFJLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFxQjtpQkFDL0YsS0FBcUIsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQzVELGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXhDVyxTQUFTO2tHQUFULFNBQVMsc1BBT0ssUUFBUSxnRUFmeEI7Ozs7RUFJVCw0REFDUyxRQUFROzsyRkFHTixTQUFTO2tCQVhyQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO29CQUNuQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbnB1dCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjaGVja05lZWRzVXBkYXRlLCBnZXRMb2NhbFN0YXRlLCBOZ3RNZXNoLCBvbWl0IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5LCBDb2xvclJlcHJlc2VudGF0aW9uLCBFZGdlc0dlb21ldHJ5LCBNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTGluZU1hdGVyaWFsUGFyYW1ldGVycyB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBOZ3RMaW5lMiwgTmd0TGluZU1hdGVyaWFsLCBOZ3RzTGluZSB9IGZyb20gJy4vbGluZSc7XG5cbmV4cG9ydCB0eXBlIE5ndHNFZGdlc09wdGlvbnMgPSBQYXJ0aWFsPE5ndE1lc2g+ICYge1xuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cdGxpbmVXaWR0aD86IG51bWJlcjtcbn0gJiBPbWl0PExpbmVNYXRlcmlhbFBhcmFtZXRlcnMsICd2ZXJ0ZXhDb2xvcnMnIHwgJ2NvbG9yJz4gJlxuXHRPbWl0PFBhcnRpYWw8Tmd0TGluZTI+LCAnZ2VvbWV0cnknPiAmXG5cdE9taXQ8UGFydGlhbDxOZ3RMaW5lTWF0ZXJpYWw+LCAnY29sb3InIHwgJ3ZlcnRleENvbG9ycyc+ICYge1xuXHRcdGdlb21ldHJ5PzogQnVmZmVyR2VvbWV0cnk7XG5cdFx0Y29sb3I/OiBDb2xvclJlcHJlc2VudGF0aW9uO1xuXHR9O1xuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c0VkZ2VzT3B0aW9ucyA9IHtcblx0bGluZVdpZHRoOiAxLFxuXHR0aHJlc2hvbGQ6IDE1LFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1lZGdlcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndHMtbGluZSBbcG9pbnRzXT1cInRtcFBvaW50c1wiIFtvcHRpb25zXT1cImxpbmVPcHRpb25zKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3RzLWxpbmU+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RzTGluZV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzRWRnZXMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHByaXZhdGUgcGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ3RocmVzaG9sZCcsICdnZW9tZXRyeSddKTtcblxuXHRwcm90ZWN0ZWQgbGluZU9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiAoeyAuLi50aGlzLnBhcmFtZXRlcnMoKSwgcmF5Y2FzdDogKCkgPT4gbnVsbCB9KSk7XG5cdHByb3RlY3RlZCB0bXBQb2ludHMgPSBbMCwgMCwgMCwgMSwgMCwgMF07XG5cblx0bGluZSA9IHZpZXdDaGlsZC5yZXF1aXJlZChOZ3RzTGluZSk7XG5cblx0cHJpdmF0ZSBtZW1vaXplZEdlb21ldHJ5PzogQnVmZmVyR2VvbWV0cnk7XG5cdHByaXZhdGUgbWVtb2l6ZWRUaHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGxpbmUgPSB0aGlzLmxpbmUoKS5saW5lUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIWxpbmUpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgbFMgPSBnZXRMb2NhbFN0YXRlKGxpbmUpO1xuXHRcdFx0aWYgKCFsUykgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBwYXJlbnQgPSBsUy5wYXJlbnQoKSBhcyBNZXNoO1xuXHRcdFx0aWYgKCFwYXJlbnQpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgeyBnZW9tZXRyeTogZXhwbGljaXRHZW9tZXRyeSwgdGhyZXNob2xkIH0gPSB0aGlzLm9wdGlvbnMoKTtcblx0XHRcdGNvbnN0IGdlb21ldHJ5ID0gZXhwbGljaXRHZW9tZXRyeSA/PyBwYXJlbnQuZ2VvbWV0cnk7XG5cdFx0XHRpZiAoIWdlb21ldHJ5KSByZXR1cm47XG5cblx0XHRcdGNvbnN0IGNhY2hlZCA9IHRoaXMubWVtb2l6ZWRHZW9tZXRyeSA9PT0gZ2VvbWV0cnkgJiYgdGhpcy5tZW1vaXplZFRocmVzaG9sZCA9PT0gdGhyZXNob2xkO1xuXHRcdFx0aWYgKGNhY2hlZCkgcmV0dXJuO1xuXG5cdFx0XHR0aGlzLm1lbW9pemVkR2VvbWV0cnkgPSBnZW9tZXRyeTtcblx0XHRcdHRoaXMubWVtb2l6ZWRUaHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG5cblx0XHRcdGNvbnN0IHBvaW50cyA9IChuZXcgRWRnZXNHZW9tZXRyeShnZW9tZXRyeSwgdGhyZXNob2xkKS5hdHRyaWJ1dGVzWydwb3NpdGlvbiddIGFzIEJ1ZmZlckF0dHJpYnV0ZSlcblx0XHRcdFx0LmFycmF5IGFzIEZsb2F0MzJBcnJheTtcblx0XHRcdGxpbmUuZ2VvbWV0cnkuc2V0UG9zaXRpb25zKHBvaW50cyk7XG5cdFx0XHRjaGVja05lZWRzVXBkYXRlKGxpbmUuZ2VvbWV0cnkuYXR0cmlidXRlc1snaW5zdGFuY2VTdGFydCddKTtcblx0XHRcdGNoZWNrTmVlZHNVcGRhdGUobGluZS5nZW9tZXRyeS5hdHRyaWJ1dGVzWydpbnN0YW5jZUVuZCddKTtcblx0XHRcdGxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -56,8 +56,8 @@ export class NgtsGradientTexture {
|
|
|
56
56
|
});
|
|
57
57
|
extend({ CanvasTexture });
|
|
58
58
|
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsGradientTexture, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", 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
61
|
<ngt-canvas-texture
|
|
62
62
|
*args="[canvas()]"
|
|
63
63
|
[attach]="attach()"
|
|
@@ -68,7 +68,7 @@ export class NgtsGradientTexture {
|
|
|
68
68
|
</ngt-canvas-texture>
|
|
69
69
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
70
70
|
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsGradientTexture, decorators: [{
|
|
72
72
|
type: Component,
|
|
73
73
|
args: [{
|
|
74
74
|
selector: 'ngts-gradient-texture',
|
|
@@ -70,8 +70,8 @@ export class NgtsGrid {
|
|
|
70
70
|
worldPlanePosition.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", 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
75
|
<ngt-mesh #mesh [frustumCulled]="false" [parameters]="parameters()">
|
|
76
76
|
<ngt-plane-geometry *args="planeArgs()" />
|
|
77
77
|
<ngt-grid-material [transparent]="true" [side]="side()" [parameters]="uniforms()">
|
|
@@ -81,7 +81,7 @@ export class NgtsGrid {
|
|
|
81
81
|
</ngt-mesh>
|
|
82
82
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
83
83
|
}
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsGrid, decorators: [{
|
|
85
85
|
type: Component,
|
|
86
86
|
args: [{
|
|
87
87
|
selector: 'ngts-grid',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
|
|
2
2
|
import { extend, getLocalState, injectBeforeRender, injectStore, resolveRef } from 'angular-three';
|
|
3
3
|
import { assertInjector } from 'ngxtension/assert-injector';
|
|
4
4
|
import { Object3D } from 'three';
|
|
@@ -7,27 +7,25 @@ export function injectHelper(object, helperConstructor, { injector, args = () =>
|
|
|
7
7
|
return assertInjector(injectHelper, injector, () => {
|
|
8
8
|
const store = injectStore();
|
|
9
9
|
const scene = store.select('scene');
|
|
10
|
-
const helper =
|
|
11
|
-
effect((onCleanup) => {
|
|
12
|
-
let currentHelper = undefined;
|
|
10
|
+
const helper = computed(() => {
|
|
13
11
|
const maybeObject3D = object();
|
|
14
12
|
if (!maybeObject3D)
|
|
15
|
-
return;
|
|
13
|
+
return null;
|
|
16
14
|
const object3D = resolveRef(maybeObject3D);
|
|
17
15
|
if (!object3D)
|
|
18
|
-
return;
|
|
19
|
-
currentHelper = new (helperConstructor())(object3D, ...args());
|
|
16
|
+
return null;
|
|
17
|
+
const currentHelper = new (helperConstructor())(object3D, ...args());
|
|
18
|
+
currentHelper.traverse((child) => (child.raycast = () => null));
|
|
19
|
+
return currentHelper;
|
|
20
|
+
});
|
|
21
|
+
effect((onCleanup) => {
|
|
22
|
+
const currentHelper = helper();
|
|
20
23
|
if (!currentHelper)
|
|
21
24
|
return;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
25
|
-
// Prevent the helpers from blocking rays
|
|
26
|
-
currentHelper.traverse((child) => (child.raycast = () => null));
|
|
27
|
-
scene().add(currentHelper);
|
|
25
|
+
const _scene = scene();
|
|
26
|
+
_scene.add(currentHelper);
|
|
28
27
|
onCleanup(() => {
|
|
29
|
-
|
|
30
|
-
scene().remove(currentHelper);
|
|
28
|
+
_scene.remove(currentHelper);
|
|
31
29
|
currentHelper.dispose?.();
|
|
32
30
|
});
|
|
33
31
|
});
|
|
@@ -36,7 +34,7 @@ export function injectHelper(object, helperConstructor, { injector, args = () =>
|
|
|
36
34
|
if (currentHelper)
|
|
37
35
|
currentHelper.update();
|
|
38
36
|
});
|
|
39
|
-
return helper
|
|
37
|
+
return helper;
|
|
40
38
|
});
|
|
41
39
|
}
|
|
42
40
|
export class NgtsHelper {
|
|
@@ -56,12 +54,12 @@ export class NgtsHelper {
|
|
|
56
54
|
this.helper = injectHelper(this.parent, this.type, { args: this.options });
|
|
57
55
|
extend({ Object3D });
|
|
58
56
|
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHelper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", 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
59
|
<ngt-object3D #helper />
|
|
62
60
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
63
61
|
}
|
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHelper, decorators: [{
|
|
65
63
|
type: Component,
|
|
66
64
|
args: [{
|
|
67
65
|
standalone: true,
|
|
@@ -73,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
73
71
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
74
72
|
}]
|
|
75
73
|
}], ctorParameters: () => [] });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2Fic3RyYWN0aW9ucy9zcmMvbGliL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFHTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBSWpDLE1BQU0sVUFBVSxZQUFZLENBSTNCLE1BQWdFLEVBQ2hFLGlCQUFxQyxFQUNyQyxFQUNDLFFBQVEsRUFDUixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBZ0UsTUFDYSxFQUFFO0lBRTdGLE9BQU8sY0FBYyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ2xELE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFcEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QixNQUFNLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUVoQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFFM0IsTUFBTSxhQUFhLEdBQW9CLEtBQUssaUJBQWlCLEVBQVUsRUFBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdGLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sYUFBYSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGFBQWE7Z0JBQUUsT0FBTztZQUUzQixNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUV2QixNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTFCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDN0IsYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILGtCQUFrQixDQUFDLEdBQUcsRUFBRTtZQUN2QixNQUFNLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUMvQixJQUFJLGFBQWE7Z0JBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFXRCxNQUFNLE9BQU8sVUFBVTtJQWtCdEI7UUFqQkEsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWdCLENBQUM7UUFDdEMsWUFBTyxHQUFHLEtBQUssQ0FDZCxFQUFnRSxDQUNoRSxDQUFDO1FBRUYsY0FBUyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQXVCLFFBQVEsQ0FBQyxDQUFDO1FBRXZELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDOUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUNwQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUN4QixPQUFPLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILFdBQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBR3JFLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQzs4R0FwQlcsVUFBVTtrR0FBVixVQUFVLDBiQU5aOztFQUVUOzsyRkFJVyxVQUFVO2tCQVR0QixTQUFTO21CQUFDO29CQUNWLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOztFQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3Rvcixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5cbnR5cGUgSGVscGVyQXJnczxUPiA9IFQgZXh0ZW5kcyBbaW5mZXIgXywgLi4uaW5mZXIgUl0gPyBSIDogbmV2ZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RIZWxwZXI8XG5cdFRDb25zdHJ1Y3RvciBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IE9iamVjdDNELFxuXHRUSGVscGVySW5zdGFuY2UgZXh0ZW5kcyBJbnN0YW5jZVR5cGU8VENvbnN0cnVjdG9yPiAmIHsgdXBkYXRlOiAoKSA9PiB2b2lkOyBkaXNwb3NlOiAoKSA9PiB2b2lkIH0sXG4+KFxuXHRvYmplY3Q6ICgpID0+IEVsZW1lbnRSZWY8T2JqZWN0M0Q+IHwgT2JqZWN0M0QgfCB1bmRlZmluZWQgfCBudWxsLFxuXHRoZWxwZXJDb25zdHJ1Y3RvcjogKCkgPT4gVENvbnN0cnVjdG9yLFxuXHR7XG5cdFx0aW5qZWN0b3IsXG5cdFx0YXJncyA9ICgpID0+IFtdIGFzIHVua25vd24gYXMgSGVscGVyQXJnczxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VENvbnN0cnVjdG9yPj4sXG5cdH06IHsgaW5qZWN0b3I/OiBJbmplY3RvcjsgYXJncz86ICgpID0+IEhlbHBlckFyZ3M8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPFRDb25zdHJ1Y3Rvcj4+IH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0SGVscGVyLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCBzY2VuZSA9IHN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblxuXHRcdGNvbnN0IGhlbHBlciA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IG1heWJlT2JqZWN0M0QgPSBvYmplY3QoKTtcblx0XHRcdGlmICghbWF5YmVPYmplY3QzRCkgcmV0dXJuIG51bGw7XG5cblx0XHRcdGNvbnN0IG9iamVjdDNEID0gcmVzb2x2ZVJlZihtYXliZU9iamVjdDNEKTtcblx0XHRcdGlmICghb2JqZWN0M0QpIHJldHVybiBudWxsO1xuXG5cdFx0XHRjb25zdCBjdXJyZW50SGVscGVyOiBUSGVscGVySW5zdGFuY2UgPSBuZXcgKGhlbHBlckNvbnN0cnVjdG9yKCkgYXMgYW55KShvYmplY3QzRCwgLi4uYXJncygpKTtcblx0XHRcdGN1cnJlbnRIZWxwZXIudHJhdmVyc2UoKGNoaWxkKSA9PiAoY2hpbGQucmF5Y2FzdCA9ICgpID0+IG51bGwpKTtcblx0XHRcdHJldHVybiBjdXJyZW50SGVscGVyO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGN1cnJlbnRIZWxwZXIgPSBoZWxwZXIoKTtcblx0XHRcdGlmICghY3VycmVudEhlbHBlcikgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBfc2NlbmUgPSBzY2VuZSgpO1xuXG5cdFx0XHRfc2NlbmUuYWRkKGN1cnJlbnRIZWxwZXIpO1xuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRfc2NlbmUucmVtb3ZlKGN1cnJlbnRIZWxwZXIpO1xuXHRcdFx0XHRjdXJyZW50SGVscGVyLmRpc3Bvc2U/LigpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgY3VycmVudEhlbHBlciA9IGhlbHBlcigpO1xuXHRcdFx0aWYgKGN1cnJlbnRIZWxwZXIpIGN1cnJlbnRIZWxwZXIudXBkYXRlKCk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gaGVscGVyO1xuXHR9KTtcbn1cblxuQENvbXBvbmVudCh7XG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNlbGVjdG9yOiAnbmd0cy1oZWxwZXInLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3Qtb2JqZWN0M0QgI2hlbHBlciAvPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzSGVscGVyPFRDb25zdHJ1Y3RvciBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IE9iamVjdDNEPiB7XG5cdHR5cGUgPSBpbnB1dC5yZXF1aXJlZDxUQ29uc3RydWN0b3I+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dDxIZWxwZXJBcmdzPENvbnN0cnVjdG9yUGFyYW1ldGVyczxUQ29uc3RydWN0b3I+Pj4oXG5cdFx0W10gYXMgdW5rbm93biBhcyBIZWxwZXJBcmdzPENvbnN0cnVjdG9yUGFyYW1ldGVyczxUQ29uc3RydWN0b3I+Pixcblx0KTtcblxuXHRoZWxwZXJSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxPYmplY3QzRD4+KCdoZWxwZXInKTtcblxuXHRwcml2YXRlIHBhcmVudCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBoZWxwZXIgPSB0aGlzLmhlbHBlclJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKCFoZWxwZXIpIHJldHVybjtcblx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShoZWxwZXIpO1xuXHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXHRcdHJldHVybiBsb2NhbFN0YXRlLnBhcmVudCgpO1xuXHR9KTtcblxuXHRoZWxwZXIgPSBpbmplY3RIZWxwZXIodGhpcy5wYXJlbnQsIHRoaXMudHlwZSwgeyBhcmdzOiB0aGlzLm9wdGlvbnMgfSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgT2JqZWN0M0QgfSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
|
|
2
2
|
import { checkNeedsUpdate, injectStore, NgtArgs, omit, pick } from 'angular-three';
|
|
3
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
3
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
4
|
import { Color, Vector2, Vector3, Vector4 } from 'three';
|
|
6
5
|
import { Line2, LineGeometry, LineMaterial, LineSegments2, LineSegmentsGeometry, } from 'three-stdlib';
|
|
@@ -26,12 +25,13 @@ export class NgtsLine {
|
|
|
26
25
|
this.vertexColors = pick(this.options, 'vertexColors');
|
|
27
26
|
this.dashed = pick(this.options, 'dashed');
|
|
28
27
|
this.color = pick(this.options, 'color');
|
|
29
|
-
this.lineWidth = pick(this.options, 'lineWidth');
|
|
30
|
-
this.linewidth = pick(this.options, 'linewidth');
|
|
31
28
|
this.vertex = computed(() => Boolean(this.vertexColors()));
|
|
32
29
|
this.resolution = computed(() => [this.size().width, this.size().height]);
|
|
30
|
+
this.lineWidth = pick(this.options, 'lineWidth');
|
|
31
|
+
this.linewidth = pick(this.options, 'linewidth');
|
|
33
32
|
this.line2 = computed(() => (this.segments() ? new LineSegments2() : new Line2()));
|
|
34
33
|
this.lineMaterial = new LineMaterial();
|
|
34
|
+
this.actualLineWidth = computed(() => this.linewidth() ?? this.lineWidth() ?? 1);
|
|
35
35
|
this.itemSize = computed(() => (this.vertexColors()?.[0]?.length === 4 ? 4 : 3));
|
|
36
36
|
this.lineGeometry = computed(() => {
|
|
37
37
|
const geom = this.segments() ? new LineSegmentsGeometry() : new LineGeometry();
|
|
@@ -56,29 +56,26 @@ export class NgtsLine {
|
|
|
56
56
|
}
|
|
57
57
|
return geom;
|
|
58
58
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
lineGeometry.dispose();
|
|
75
|
-
lineMaterial.dispose();
|
|
76
|
-
};
|
|
59
|
+
effect(() => {
|
|
60
|
+
const [lineMaterial, dashed] = [this.lineMaterial, this.dashed()];
|
|
61
|
+
if (dashed) {
|
|
62
|
+
lineMaterial.defines['USE_DASH'] = '';
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
delete lineMaterial.defines['USE_DASH'];
|
|
66
|
+
}
|
|
67
|
+
checkNeedsUpdate(lineMaterial);
|
|
68
|
+
});
|
|
69
|
+
effect((onCleanup) => {
|
|
70
|
+
const [lineGeometry, lineMaterial] = [this.lineGeometry(), this.lineMaterial];
|
|
71
|
+
onCleanup(() => {
|
|
72
|
+
lineGeometry.dispose();
|
|
73
|
+
lineMaterial.dispose();
|
|
77
74
|
});
|
|
78
75
|
});
|
|
79
76
|
}
|
|
80
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
81
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsLine, isStandalone: true, selector: "ngts-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: "lineRef", first: true, predicate: ["line"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
82
79
|
<ngt-primitive *args="[line2()]" #line [parameters]="parameters()">
|
|
83
80
|
<ngt-primitive *args="[lineGeometry()]" attach="geometry" (attached)="onGeometryAttached($any($event))" />
|
|
84
81
|
<ngt-primitive
|
|
@@ -87,7 +84,7 @@ export class NgtsLine {
|
|
|
87
84
|
[color]="color()"
|
|
88
85
|
[vertexColors]="vertex()"
|
|
89
86
|
[resolution]="resolution()"
|
|
90
|
-
[linewidth]="
|
|
87
|
+
[linewidth]="actualLineWidth()"
|
|
91
88
|
[dashed]="dashed()"
|
|
92
89
|
[transparent]="itemSize() === 4"
|
|
93
90
|
[parameters]="parameters()"
|
|
@@ -96,7 +93,7 @@ export class NgtsLine {
|
|
|
96
93
|
</ngt-primitive>
|
|
97
94
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
98
95
|
}
|
|
99
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsLine, decorators: [{
|
|
100
97
|
type: Component,
|
|
101
98
|
args: [{
|
|
102
99
|
selector: 'ngts-line',
|
|
@@ -110,7 +107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
110
107
|
[color]="color()"
|
|
111
108
|
[vertexColors]="vertex()"
|
|
112
109
|
[resolution]="resolution()"
|
|
113
|
-
[linewidth]="
|
|
110
|
+
[linewidth]="actualLineWidth()"
|
|
114
111
|
[dashed]="dashed()"
|
|
115
112
|
[transparent]="itemSize() === 4"
|
|
116
113
|
[parameters]="parameters()"
|
|
@@ -123,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
123
120
|
imports: [NgtArgs],
|
|
124
121
|
}]
|
|
125
122
|
}], ctorParameters: () => [] });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi9saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBRXRCLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBa0IsT0FBTyxFQUFtQixJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUF1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5RSxPQUFPLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixZQUFZLEVBRVosYUFBYSxFQUNiLG9CQUFvQixHQUNwQixNQUFNLGNBQWMsQ0FBQzs7QUFrQnRCLE1BQU0sY0FBYyxHQUFvQjtJQUN2QyxTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxLQUFLO0lBQ2YsS0FBSyxFQUFFLFFBQVE7Q0FDZixDQUFDO0FBMEJGLE1BQU0sT0FBTyxRQUFRO0lBcURwQixpR0FBaUc7SUFDakcsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQXVEO1FBQ2pGLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDtRQXpEQSxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBbUYsQ0FBQztRQUMzRyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFD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QUFVLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZDLENBQUM7cUJBQU0sQ0FBQztvQkFDUCxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pDLENBQUM7Z0JBQ0QsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNmLE1BQU0sQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM5RSxPQUFPLEdBQUcsRUFBRTtvQkFDWCxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3ZCLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBaEZXLFFBQVE7a0dBQVIsUUFBUSwwYkFyQlY7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQlQsNERBR1MsT0FBTzs7MkZBRUwsUUFBUTtrQkF4QnBCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjaGVja05lZWRzVXBkYXRlLCBpbmplY3RTdG9yZSwgTmd0QWZ0ZXJBdHRhY2gsIE5ndEFyZ3MsIE5ndE9iamVjdDNETm9kZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ29sb3IsIENvbG9yUmVwcmVzZW50YXRpb24sIFZlY3RvcjIsIFZlY3RvcjMsIFZlY3RvcjQgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQge1xuXHRMaW5lMixcblx0TGluZUdlb21ldHJ5LFxuXHRMaW5lTWF0ZXJpYWwsXG5cdExpbmVNYXRlcmlhbFBhcmFtZXRlcnMsXG5cdExpbmVTZWdtZW50czIsXG5cdExpbmVTZWdtZW50c0dlb21ldHJ5LFxufSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHBvcnQgdHlwZSBOZ3RMaW5lMiA9IE5ndE9iamVjdDNETm9kZTxMaW5lMiwgdHlwZW9mIExpbmUyPjtcbmV4cG9ydCB0eXBlIE5ndExpbmVNYXRlcmlhbCA9IE5ndE9iamVjdDNETm9kZTxMaW5lTWF0ZXJpYWwsIFtMaW5lTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5cbmV4cG9ydCB0eXBlIE5ndHNMaW5lT3B0aW9ucyA9IE9taXQ8TGluZU1hdGVyaWFsUGFyYW1ldGVycywgJ3ZlcnRleENvbG9ycycgfCAnY29sb3InPiAmXG5cdE9taXQ8UGFydGlhbDxOZ3RMaW5lMj4sICdfX25ndF9hcmdzX18nPiAmXG5cdE9taXQ8UGFydGlhbDxOZ3RMaW5lTWF0ZXJpYWw+LCAnY29sb3InIHwgJ3ZlcnRleENvbG9ycycgfCAnX19uZ3RfYXJnc19fJz4gJiB7XG5cdFx0LyoqIEFycmF5IG9mIGNvbG9ycywgWzAsIDAsIDBdICovXG5cdFx0dmVydGV4Q29sb3JzPzogQXJyYXk8Q29sb3JSZXByZXNlbnRhdGlvbiB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdPjtcblx0XHQvKiogTGluZSB3aWR0aCwgMSAqL1xuXHRcdGxpbmVXaWR0aDogbnVtYmVyO1xuXHRcdC8qKiBTZWdtZW50cywgZmFsc2UgKi9cblx0XHRzZWdtZW50czogYm9vbGVhbjtcblx0XHQvKiogQ29sb3IgKi9cblx0XHRjb2xvcj86IENvbG9yUmVwcmVzZW50YXRpb247XG5cdH07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzTGluZU9wdGlvbnMgPSB7XG5cdGxpbmVXaWR0aDogMSxcblx0c2VnbWVudHM6IGZhbHNlLFxuXHRjb2xvcjogMHhmZmZmZmYsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWxpbmUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2xpbmUyKCldXCIgI2xpbmUgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltsaW5lR2VvbWV0cnkoKV1cIiBhdHRhY2g9XCJnZW9tZXRyeVwiIChhdHRhY2hlZCk9XCJvbkdlb21ldHJ5QXR0YWNoZWQoJGFueSgkZXZlbnQpKVwiIC8+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZVxuXHRcdFx0XHQqYXJncz1cIltsaW5lTWF0ZXJpYWxdXCJcblx0XHRcdFx0YXR0YWNoPVwibWF0ZXJpYWxcIlxuXHRcdFx0XHRbY29sb3JdPVwiY29sb3IoKVwiXG5cdFx0XHRcdFt2ZXJ0ZXhDb2xvcnNdPVwidmVydGV4KClcIlxuXHRcdFx0XHRbcmVzb2x1dGlvbl09XCJyZXNvbHV0aW9uKClcIlxuXHRcdFx0XHRbbGluZXdpZHRoXT1cImxpbmV3aWR0aCgpID8/IGxpbmVXaWR0aCgpID8/IDFcIlxuXHRcdFx0XHRbZGFzaGVkXT1cImRhc2hlZCgpXCJcblx0XHRcdFx0W3RyYW5zcGFyZW50XT1cIml0ZW1TaXplKCkgPT09IDRcIlxuXHRcdFx0XHRbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIlxuXHRcdFx0Lz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNMaW5lIHtcblx0cG9pbnRzID0gaW5wdXQucmVxdWlyZWQ8QXJyYXk8VmVjdG9yMyB8IFZlY3RvcjIgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBbbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyPj4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnY29sb3InLCAndmVydGV4Q29sb3JzJywgJ2xpbmVXaWR0aCcsICdzZWdtZW50cycsICdsaW5ld2lkdGgnLCAnZGFzaGVkJ10pO1xuXG5cdGxpbmVSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxMaW5lMiB8IExpbmVTZWdtZW50czI+PignbGluZScpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXG5cdHByaXZhdGUgc2VnbWVudHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NlZ21lbnRzJyk7XG5cdHByaXZhdGUgdmVydGV4Q29sb3JzID0gcGljayh0aGlzLm9wdGlvbnMsICd2ZXJ0ZXhDb2xvcnMnKTtcblxuXHRkYXNoZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rhc2hlZCcpO1xuXHRjb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29sb3InKTtcblx0bGluZVdpZHRoID0gcGljayh0aGlzLm9wdGlvbnMsICdsaW5lV2lkdGgnKTtcblx0bGluZXdpZHRoID0gcGljayh0aGlzLm9wdGlvbnMsICdsaW5ld2lkdGgnKTtcblx0dmVydGV4ID0gY29tcHV0ZWQoKCkgPT4gQm9vbGVhbih0aGlzLnZlcnRleENvbG9ycygpKSk7XG5cdHJlc29sdXRpb24gPSBjb21wdXRlZCgoKSA9PiBbdGhpcy5zaXplKCkud2lkdGgsIHRoaXMuc2l6ZSgpLmhlaWdodF0pO1xuXG5cdGxpbmUyID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuc2VnbWVudHMoKSA/IG5ldyBMaW5lU2VnbWVudHMyKCkgOiBuZXcgTGluZTIoKSkpO1xuXHRsaW5lTWF0ZXJpYWwgPSBuZXcgTGluZU1hdGVyaWFsKCk7XG5cblx0aXRlbVNpemUgPSBjb21wdXRlZCgoKSA9PiAoKHRoaXMudmVydGV4Q29sb3JzKCk/LlswXSBhcyBudW1iZXJbXSB8IHVuZGVmaW5lZCk/Lmxlbmd0aCA9PT0gNCA/IDQgOiAzKSk7XG5cblx0bGluZUdlb21ldHJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGdlb20gPSB0aGlzLnNlZ21lbnRzKCkgPyBuZXcgTGluZVNlZ21lbnRzR2VvbWV0cnkoKSA6IG5ldyBMaW5lR2VvbWV0cnkoKTtcblx0XHRjb25zdCBwVmFsdWVzID0gdGhpcy5wb2ludHMoKS5tYXAoKHApID0+IHtcblx0XHRcdGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHApO1xuXHRcdFx0cmV0dXJuIHAgaW5zdGFuY2VvZiBWZWN0b3IzIHx8IHAgaW5zdGFuY2VvZiBWZWN0b3I0XG5cdFx0XHRcdD8gW3AueCwgcC55LCBwLnpdXG5cdFx0XHRcdDogcCBpbnN0YW5jZW9mIFZlY3RvcjJcblx0XHRcdFx0XHQ/IFtwLngsIHAueSwgMF1cblx0XHRcdFx0XHQ6IGlzQXJyYXkgJiYgcC5sZW5ndGggPT09IDNcblx0XHRcdFx0XHRcdD8gW3BbMF0sIHBbMV0sIHBbMl1dXG5cdFx0XHRcdFx0XHQ6IGlzQXJyYXkgJiYgcC5sZW5ndGggPT09IDJcblx0XHRcdFx0XHRcdFx0PyBbcFswXSwgcFsxXSwgMF1cblx0XHRcdFx0XHRcdFx0OiBwO1xuXHRcdH0pO1xuXG5cdFx0Z2VvbS5zZXRQb3NpdGlvbnMocFZhbHVlcy5mbGF0KCkpO1xuXG5cdFx0Y29uc3QgdmVydGV4Q29sb3JzID0gdGhpcy52ZXJ0ZXhDb2xvcnMoKTtcblxuXHRcdGlmICh2ZXJ0ZXhDb2xvcnMpIHtcblx0XHRcdGNvbnN0IGNWYWx1ZXMgPSB2ZXJ0ZXhDb2xvcnMubWFwKChjKSA9PiAoYyBpbnN0YW5jZW9mIENvbG9yID8gYy50b0FycmF5KCkgOiBjKSk7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gZmxhdCgpIGlzbid0IGRlZmluZWRcblx0XHRcdGdlb20uc2V0Q29sb3JzKGNWYWx1ZXMuZmxhdCgpLCB0aGlzLml0ZW1TaXplKCkpO1xuXHRcdH1cblxuXHRcdHJldHVybiBnZW9tO1xuXHR9KTtcblxuXHQvLyBOT1RFOiB1c2UgYXR0YWNoZWQgZXZlbnQgdG8gY2FsbCBjb21wdXRlTGluZURpc3RhbmNlcyB0byBlbnN1cmUgdGhlIGdlb21ldHJ5IGhhcyBiZWVuIGF0dGFjaGVkXG5cdG9uR2VvbWV0cnlBdHRhY2hlZCh7IHBhcmVudCB9OiBOZ3RBZnRlckF0dGFjaDxMaW5lR2VvbWV0cnksIExpbmUyIHwgTGluZVNlZ21lbnRzMj4pIHtcblx0XHRwYXJlbnQuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IFtsaW5lTWF0ZXJpYWwsIGRhc2hlZF0gPSBbdGhpcy5saW5lTWF0ZXJpYWwsIHRoaXMuZGFzaGVkKCldO1xuXHRcdFx0XHRpZiAoZGFzaGVkKSB7XG5cdFx0XHRcdFx0bGluZU1hdGVyaWFsLmRlZmluZXNbJ1VTRV9EQVNIJ10gPSAnJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWxldGUgbGluZU1hdGVyaWFsLmRlZmluZXNbJ1VTRV9EQVNIJ107XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2hlY2tOZWVkc1VwZGF0ZShsaW5lTWF0ZXJpYWwpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbbGluZUdlb21ldHJ5LCBsaW5lTWF0ZXJpYWxdID0gW3RoaXMubGluZUdlb21ldHJ5KCksIHRoaXMubGluZU1hdGVyaWFsXTtcblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRsaW5lR2VvbWV0cnkuZGlzcG9zZSgpO1xuXHRcdFx0XHRcdGxpbmVNYXRlcmlhbC5kaXNwb3NlKCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi9saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsTUFBTSxFQUVOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBa0IsT0FBTyxFQUFtQixJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUF1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5RSxPQUFPLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixZQUFZLEVBRVosYUFBYSxFQUNiLG9CQUFvQixHQUNwQixNQUFNLGNBQWMsQ0FBQzs7QUFrQnRCLE1BQU0sY0FBYyxHQUFvQjtJQUN2QyxTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxLQUFLO0lBQ2YsS0FBSyxFQUFFLFFBQVE7Q0FDZixDQUFDO0FBMEJGLE1BQU0sT0FBTyxRQUFRO0lBdURwQixpR0FBaUc7SUFDakcsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQXVEO1FBQ2pGLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDtRQTNEQSxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBbUYsQ0FBQztRQUMzRyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFB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Q0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN2QixZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBOUVXLFFBQVE7a0dBQVIsUUFBUSwwYkFyQlY7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQlQsNERBR1MsT0FBTzs7MkZBRUwsUUFBUTtrQkF4QnBCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjaGVja05lZWRzVXBkYXRlLCBpbmplY3RTdG9yZSwgTmd0QWZ0ZXJBdHRhY2gsIE5ndEFyZ3MsIE5ndE9iamVjdDNETm9kZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ29sb3IsIENvbG9yUmVwcmVzZW50YXRpb24sIFZlY3RvcjIsIFZlY3RvcjMsIFZlY3RvcjQgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQge1xuXHRMaW5lMixcblx0TGluZUdlb21ldHJ5LFxuXHRMaW5lTWF0ZXJpYWwsXG5cdExpbmVNYXRlcmlhbFBhcmFtZXRlcnMsXG5cdExpbmVTZWdtZW50czIsXG5cdExpbmVTZWdtZW50c0dlb21ldHJ5LFxufSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHBvcnQgdHlwZSBOZ3RMaW5lMiA9IE5ndE9iamVjdDNETm9kZTxMaW5lMiwgdHlwZW9mIExpbmUyPjtcbmV4cG9ydCB0eXBlIE5ndExpbmVNYXRlcmlhbCA9IE5ndE9iamVjdDNETm9kZTxMaW5lTWF0ZXJpYWwsIFtMaW5lTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5cbmV4cG9ydCB0eXBlIE5ndHNMaW5lT3B0aW9ucyA9IE9taXQ8TGluZU1hdGVyaWFsUGFyYW1ldGVycywgJ3ZlcnRleENvbG9ycycgfCAnY29sb3InPiAmXG5cdE9taXQ8UGFydGlhbDxOZ3RMaW5lMj4sICdfX25ndF9hcmdzX18nPiAmXG5cdE9taXQ8UGFydGlhbDxOZ3RMaW5lTWF0ZXJpYWw+LCAnY29sb3InIHwgJ3ZlcnRleENvbG9ycycgfCAnX19uZ3RfYXJnc19fJz4gJiB7XG5cdFx0LyoqIEFycmF5IG9mIGNvbG9ycywgWzAsIDAsIDBdICovXG5cdFx0dmVydGV4Q29sb3JzPzogQXJyYXk8Q29sb3JSZXByZXNlbnRhdGlvbiB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdPjtcblx0XHQvKiogTGluZSB3aWR0aCwgMSAqL1xuXHRcdGxpbmVXaWR0aDogbnVtYmVyO1xuXHRcdC8qKiBTZWdtZW50cywgZmFsc2UgKi9cblx0XHRzZWdtZW50czogYm9vbGVhbjtcblx0XHQvKiogQ29sb3IgKi9cblx0XHRjb2xvcj86IENvbG9yUmVwcmVzZW50YXRpb247XG5cdH07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzTGluZU9wdGlvbnMgPSB7XG5cdGxpbmVXaWR0aDogMSxcblx0c2VnbWVudHM6IGZhbHNlLFxuXHRjb2xvcjogMHhmZmZmZmYsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWxpbmUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2xpbmUyKCldXCIgI2xpbmUgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltsaW5lR2VvbWV0cnkoKV1cIiBhdHRhY2g9XCJnZW9tZXRyeVwiIChhdHRhY2hlZCk9XCJvbkdlb21ldHJ5QXR0YWNoZWQoJGFueSgkZXZlbnQpKVwiIC8+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZVxuXHRcdFx0XHQqYXJncz1cIltsaW5lTWF0ZXJpYWxdXCJcblx0XHRcdFx0YXR0YWNoPVwibWF0ZXJpYWxcIlxuXHRcdFx0XHRbY29sb3JdPVwiY29sb3IoKVwiXG5cdFx0XHRcdFt2ZXJ0ZXhDb2xvcnNdPVwidmVydGV4KClcIlxuXHRcdFx0XHRbcmVzb2x1dGlvbl09XCJyZXNvbHV0aW9uKClcIlxuXHRcdFx0XHRbbGluZXdpZHRoXT1cImFjdHVhbExpbmVXaWR0aCgpXCJcblx0XHRcdFx0W2Rhc2hlZF09XCJkYXNoZWQoKVwiXG5cdFx0XHRcdFt0cmFuc3BhcmVudF09XCJpdGVtU2l6ZSgpID09PSA0XCJcblx0XHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHRcdC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzTGluZSB7XG5cdHBvaW50cyA9IGlucHV0LnJlcXVpcmVkPEFycmF5PFZlY3RvcjMgfCBWZWN0b3IyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgW251bWJlciwgbnVtYmVyXSB8IG51bWJlcj4+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2NvbG9yJywgJ3ZlcnRleENvbG9ycycsICdsaW5lV2lkdGgnLCAnc2VnbWVudHMnLCAnbGluZXdpZHRoJywgJ2Rhc2hlZCddKTtcblxuXHRsaW5lUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8TGluZTIgfCBMaW5lU2VnbWVudHMyPj4oJ2xpbmUnKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRwcml2YXRlIHNlZ21lbnRzID0gcGljayh0aGlzLm9wdGlvbnMsICdzZWdtZW50cycpO1xuXHRwcml2YXRlIHZlcnRleENvbG9ycyA9IHBpY2sodGhpcy5vcHRpb25zLCAndmVydGV4Q29sb3JzJyk7XG5cblx0cHJvdGVjdGVkIGRhc2hlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGFzaGVkJyk7XG5cdHByb3RlY3RlZCBjb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29sb3InKTtcblx0cHJvdGVjdGVkIHZlcnRleCA9IGNvbXB1dGVkKCgpID0+IEJvb2xlYW4odGhpcy52ZXJ0ZXhDb2xvcnMoKSkpO1xuXHRwcm90ZWN0ZWQgcmVzb2x1dGlvbiA9IGNvbXB1dGVkKCgpID0+IFt0aGlzLnNpemUoKS53aWR0aCwgdGhpcy5zaXplKCkuaGVpZ2h0XSk7XG5cblx0cHJpdmF0ZSBsaW5lV2lkdGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbmVXaWR0aCcpO1xuXHRwcml2YXRlIGxpbmV3aWR0aCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGluZXdpZHRoJyk7XG5cblx0bGluZTIgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5zZWdtZW50cygpID8gbmV3IExpbmVTZWdtZW50czIoKSA6IG5ldyBMaW5lMigpKSk7XG5cdGxpbmVNYXRlcmlhbCA9IG5ldyBMaW5lTWF0ZXJpYWwoKTtcblxuXHRwcm90ZWN0ZWQgYWN0dWFsTGluZVdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5saW5ld2lkdGgoKSA/PyB0aGlzLmxpbmVXaWR0aCgpID8/IDEpO1xuXHRwcm90ZWN0ZWQgaXRlbVNpemUgPSBjb21wdXRlZCgoKSA9PiAoKHRoaXMudmVydGV4Q29sb3JzKCk/LlswXSBhcyBudW1iZXJbXSB8IHVuZGVmaW5lZCk/Lmxlbmd0aCA9PT0gNCA/IDQgOiAzKSk7XG5cblx0bGluZUdlb21ldHJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGdlb20gPSB0aGlzLnNlZ21lbnRzKCkgPyBuZXcgTGluZVNlZ21lbnRzR2VvbWV0cnkoKSA6IG5ldyBMaW5lR2VvbWV0cnkoKTtcblx0XHRjb25zdCBwVmFsdWVzID0gdGhpcy5wb2ludHMoKS5tYXAoKHApID0+IHtcblx0XHRcdGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHApO1xuXHRcdFx0cmV0dXJuIHAgaW5zdGFuY2VvZiBWZWN0b3IzIHx8IHAgaW5zdGFuY2VvZiBWZWN0b3I0XG5cdFx0XHRcdD8gW3AueCwgcC55LCBwLnpdXG5cdFx0XHRcdDogcCBpbnN0YW5jZW9mIFZlY3RvcjJcblx0XHRcdFx0XHQ/IFtwLngsIHAueSwgMF1cblx0XHRcdFx0XHQ6IGlzQXJyYXkgJiYgcC5sZW5ndGggPT09IDNcblx0XHRcdFx0XHRcdD8gW3BbMF0sIHBbMV0sIHBbMl1dXG5cdFx0XHRcdFx0XHQ6IGlzQXJyYXkgJiYgcC5sZW5ndGggPT09IDJcblx0XHRcdFx0XHRcdFx0PyBbcFswXSwgcFsxXSwgMF1cblx0XHRcdFx0XHRcdFx0OiBwO1xuXHRcdH0pO1xuXG5cdFx0Z2VvbS5zZXRQb3NpdGlvbnMocFZhbHVlcy5mbGF0KCkpO1xuXG5cdFx0Y29uc3QgdmVydGV4Q29sb3JzID0gdGhpcy52ZXJ0ZXhDb2xvcnMoKTtcblxuXHRcdGlmICh2ZXJ0ZXhDb2xvcnMpIHtcblx0XHRcdGNvbnN0IGNWYWx1ZXMgPSB2ZXJ0ZXhDb2xvcnMubWFwKChjKSA9PiAoYyBpbnN0YW5jZW9mIENvbG9yID8gYy50b0FycmF5KCkgOiBjKSk7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gZmxhdCgpIGlzbid0IGRlZmluZWRcblx0XHRcdGdlb20uc2V0Q29sb3JzKGNWYWx1ZXMuZmxhdCgpLCB0aGlzLml0ZW1TaXplKCkpO1xuXHRcdH1cblxuXHRcdHJldHVybiBnZW9tO1xuXHR9KTtcblxuXHQvLyBOT1RFOiB1c2UgYXR0YWNoZWQgZXZlbnQgdG8gY2FsbCBjb21wdXRlTGluZURpc3RhbmNlcyB0byBlbnN1cmUgdGhlIGdlb21ldHJ5IGhhcyBiZWVuIGF0dGFjaGVkXG5cdG9uR2VvbWV0cnlBdHRhY2hlZCh7IHBhcmVudCB9OiBOZ3RBZnRlckF0dGFjaDxMaW5lR2VvbWV0cnksIExpbmUyIHwgTGluZVNlZ21lbnRzMj4pIHtcblx0XHRwYXJlbnQuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbbGluZU1hdGVyaWFsLCBkYXNoZWRdID0gW3RoaXMubGluZU1hdGVyaWFsLCB0aGlzLmRhc2hlZCgpXTtcblx0XHRcdGlmIChkYXNoZWQpIHtcblx0XHRcdFx0bGluZU1hdGVyaWFsLmRlZmluZXNbJ1VTRV9EQVNIJ10gPSAnJztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlbGV0ZSBsaW5lTWF0ZXJpYWwuZGVmaW5lc1snVVNFX0RBU0gnXTtcblx0XHRcdH1cblx0XHRcdGNoZWNrTmVlZHNVcGRhdGUobGluZU1hdGVyaWFsKTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBbbGluZUdlb21ldHJ5LCBsaW5lTWF0ZXJpYWxdID0gW3RoaXMubGluZUdlb21ldHJ5KCksIHRoaXMubGluZU1hdGVyaWFsXTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XG5cdFx0XHRcdGxpbmVHZW9tZXRyeS5kaXNwb3NlKCk7XG5cdFx0XHRcdGxpbmVNYXRlcmlhbC5kaXNwb3NlKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -21,14 +21,14 @@ export class NgtsPrismGeometry {
|
|
|
21
21
|
this.geometryRef = viewChild('geometry');
|
|
22
22
|
extend({ ExtrudeGeometry });
|
|
23
23
|
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
25
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPrismGeometry, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsPrismGeometry, isStandalone: true, selector: "ngts-prism-geometry", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, vertices: { classPropertyName: "vertices", publicName: "vertices", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "geometryRef", first: true, predicate: ["geometry"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
26
26
|
<ngt-extrude-geometry #geometry *args="[shape(), parameters()]" [attach]="attach()">
|
|
27
27
|
<ng-content />
|
|
28
28
|
</ngt-extrude-geometry>
|
|
29
29
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30
30
|
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPrismGeometry, decorators: [{
|
|
32
32
|
type: Component,
|
|
33
33
|
args: [{
|
|
34
34
|
selector: 'ngts-prism-geometry',
|
|
@@ -49,14 +49,14 @@ export class NgtsQuadraticBezierLine {
|
|
|
49
49
|
}
|
|
50
50
|
return this.curve.getPoints(segments);
|
|
51
51
|
}
|
|
52
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
53
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsQuadraticBezierLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsQuadraticBezierLine, isStandalone: true, selector: "ngts-quadratic-bezier-line", inputs: { start: { classPropertyName: "start", publicName: "start", isSignal: true, isRequired: false, transformFunction: null }, end: { classPropertyName: "end", publicName: "end", isSignal: true, isRequired: false, transformFunction: null }, mid: { classPropertyName: "mid", publicName: "mid", isSignal: true, isRequired: false, 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: `
|
|
54
54
|
<ngts-line [points]="points()" [options]="parameters()">
|
|
55
55
|
<ng-content />
|
|
56
56
|
</ngts-line>
|
|
57
57
|
`, isInline: true, dependencies: [{ kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
58
58
|
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsQuadraticBezierLine, decorators: [{
|
|
60
60
|
type: Component,
|
|
61
61
|
args: [{
|
|
62
62
|
selector: 'ngts-quadratic-bezier-line',
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, untracked, viewChild, } from '@angular/core';
|
|
2
2
|
import { extend, NgtArgs, omit, pick } from 'angular-three';
|
|
3
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
3
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
4
|
import { ExtrudeGeometry, Mesh, Shape } from 'three';
|
|
6
5
|
import { toCreasedNormals } from 'three-stdlib';
|
|
@@ -71,28 +70,23 @@ export class NgtsRoundedBox {
|
|
|
71
70
|
};
|
|
72
71
|
});
|
|
73
72
|
extend({ ExtrudeGeometry, Mesh });
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
this.shape();
|
|
81
|
-
this.params();
|
|
82
|
-
geometry.center();
|
|
83
|
-
toCreasedNormals(geometry, untracked(this.creaseAngle));
|
|
84
|
-
});
|
|
73
|
+
effect(() => {
|
|
74
|
+
const geometry = this.geometryRef()?.nativeElement;
|
|
75
|
+
if (!geometry)
|
|
76
|
+
return;
|
|
77
|
+
geometry.center();
|
|
78
|
+
toCreasedNormals(geometry, untracked(this.creaseAngle));
|
|
85
79
|
});
|
|
86
80
|
}
|
|
87
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
88
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsRoundedBox, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsRoundedBox, isStandalone: true, selector: "ngts-rounded-box", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }, { propertyName: "geometryRef", first: true, predicate: ["geometry"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
89
83
|
<ngt-mesh #mesh [parameters]="parameters()">
|
|
90
84
|
<ngt-extrude-geometry #geometry *args="[shape(), params()]" />
|
|
91
85
|
<ng-content />
|
|
92
86
|
</ngt-mesh>
|
|
93
87
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
94
88
|
}
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsRoundedBox, decorators: [{
|
|
96
90
|
type: Component,
|
|
97
91
|
args: [{
|
|
98
92
|
selector: 'ngts-rounded-box',
|
|
@@ -108,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
108
102
|
imports: [NgtArgs],
|
|
109
103
|
}]
|
|
110
104
|
}], ctorParameters: () => [] });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmRlZC1ib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvYWJzdHJhY3Rpb25zL3NyYy9saWIvcm91bmRlZC1ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBRU4sS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQVcsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFaEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBRXBCLFNBQVMsV0FBVyxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsT0FBZTtJQUNsRSxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQzFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDN0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMs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ZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGlucHV0LFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIE5ndEFyZ3MsIE5ndE1lc2gsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEV4dHJ1ZGVHZW9tZXRyeSwgTWVzaCwgU2hhcGUgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyB0b0NyZWFzZWROb3JtYWxzIH0gZnJvbSAndGhyZWUtc3RkbGliJztcblxuY29uc3QgZXBzID0gMC4wMDAwMTtcblxuZnVuY3Rpb24gY3JlYXRlU2hhcGUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHJhZGl1czA6IG51bWJlcikge1xuXHRjb25zdCBzaGFwZSA9IG5ldyBTaGFwZSgpO1xuXHRjb25zdCByYWRpdXMgPSByYWRpdXMwIC0gZXBzO1xuXHRzaGFwZS5hYnNhcmMoZXBzLCBlcHMsIGVwcywgLU1hdGguUEkgLyAyLCAtTWF0aC5QSSwgdHJ1ZSk7XG5cdHNoYXBlLmFic2FyYyhlcHMsIGhlaWdodCAtIHJhZGl1cyAqIDIsIGVwcywgTWF0aC5QSSwgTWF0aC5QSSAvIDIsIHRydWUpO1xuXHRzaGFwZS5hYnNhcmMod2lkdGggLSByYWRpdXMgKiAyLCBoZWlnaHQgLSByYWRpdXMgKiAyLCBlcHMsIE1hdGguUEkgLyAyLCAwLCB0cnVlKTtcblx0c2hhcGUuYWJzYXJjKHdpZHRoIC0gcmFkaXVzICogMiwgZXBzLCBlcHMsIDAsIC1NYXRoLlBJIC8gMiwgdHJ1ZSk7XG5cdHJldHVybiBzaGFwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzUm91bmRlZEJveE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndE1lc2g+IHtcblx0d2lkdGg6IG51bWJlcjtcblx0aGVpZ2h0OiBudW1iZXI7XG5cdGRlcHRoOiBudW1iZXI7XG5cdHJhZGl1czogbnVtYmVyO1xuXHRzbW9vdGhuZXNzOiBudW1iZXI7XG5cdGJldmVsU2VnbWVudHM6IG51bWJlcjtcblx0c3RlcHM6IG51bWJlcjtcblx0Y3JlYXNlQW5nbGU6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNSb3VuZGVkQm94T3B0aW9ucyA9IHtcblx0d2lkdGg6IDEsXG5cdGhlaWdodDogMSxcblx0ZGVwdGg6IDEsXG5cdHJhZGl1czogMC4wNSxcblx0c21vb3RobmVzczogNCxcblx0YmV2ZWxTZWdtZW50czogNCxcblx0Y3JlYXNlQW5nbGU6IDAuNCxcblx0c3RlcHM6IDEsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXJvdW5kZWQtYm94Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2ggI21lc2ggW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmd0LWV4dHJ1ZGUtZ2VvbWV0cnkgI2dlb21ldHJ5ICphcmdzPVwiW3NoYXBlKCksIHBhcmFtcygpXVwiIC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1JvdW5kZWRCb3gge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCd3aWR0aCcsXG5cdFx0J2hlaWdodCcsXG5cdFx0J2RlcHRoJyxcblx0XHQncmFkaXVzJyxcblx0XHQnc21vb3RobmVzcycsXG5cdFx0J2JldmVsU2VnbWVudHMnLFxuXHRcdCdzdGVwcycsXG5cdFx0J2NyZWFzZUFuZ2xlJyxcblx0XSk7XG5cblx0cHJpdmF0ZSB3aWR0aCA9IHBpY2sodGhpcy5vcHRpb25zLCAnd2lkdGgnKTtcblx0cHJpdmF0ZSBoZWlnaHQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2hlaWdodCcpO1xuXHRwcml2YXRlIGRlcHRoID0gcGljayh0aGlzLm9wdGlvbnMsICdkZXB0aCcpO1xuXHRwcml2YXRlIHJhZGl1cyA9IHBpY2sodGhpcy5vcHRpb25zLCAncmFkaXVzJyk7XG5cdHByaXZhdGUgc21vb3RobmVzcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc21vb3RobmVzcycpO1xuXHRwcml2YXRlIGJldmVsU2VnbWVudHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2JldmVsU2VnbWVudHMnKTtcblx0cHJpdmF0ZSBzdGVwcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc3RlcHMnKTtcblx0cHJpdmF0ZSBjcmVhc2VBbmdsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnY3JlYXNlQW5nbGUnKTtcblxuXHRtZXNoUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8TWVzaD4+KCdtZXNoJyk7XG5cdGdlb21ldHJ5UmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8RXh0cnVkZUdlb21ldHJ5Pj4oJ2dlb21ldHJ5Jyk7XG5cblx0cHJvdGVjdGVkIHNoYXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFt3aWR0aCwgaGVpZ2h0LCByYWRpdXNdID0gW3RoaXMud2lkdGgoKSwgdGhpcy5oZWlnaHQoKSwgdGhpcy5yYWRpdXMoKV07XG5cdFx0cmV0dXJuIGNyZWF0ZVNoYXBlKHdpZHRoLCBoZWlnaHQsIHJhZGl1cyk7XG5cdH0pO1xuXHRwcm90ZWN0ZWQgcGFyYW1zID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtkZXB0aCwgcmFkaXVzLCBzbW9vdGhuZXNzLCBiZXZlbFNlZ21lbnRzLCBzdGVwc10gPSBbXG5cdFx0XHR0aGlzLmRlcHRoKCksXG5cdFx0XHR0aGlzLnJhZGl1cygpLFxuXHRcdFx0dGhpcy5zbW9vdGhuZXNzKCksXG5cdFx0XHR1bnRyYWNrZWQodGhpcy5iZXZlbFNlZ21lbnRzKSxcblx0XHRcdHVudHJhY2tlZCh0aGlzLnN0ZXBzKSxcblx0XHRdO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGRlcHRoOiBkZXB0aCAtIHJhZGl1cyAqIDIsXG5cdFx0XHRiZXZlbEVuYWJsZWQ6IHRydWUsXG5cdFx0XHRiZXZlbFNlZ21lbnRzOiBiZXZlbFNlZ21lbnRzICogMixcblx0XHRcdHN0ZXBzLFxuXHRcdFx0YmV2ZWxTaXplOiByYWRpdXMgLSBlcHMsXG5cdFx0XHRiZXZlbFRoaWNrbmVzczogcmFkaXVzLFxuXHRcdFx0Y3VydmVTZWdtZW50czogc21vb3RobmVzcyxcblx0XHR9O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBFeHRydWRlR2VvbWV0cnksIE1lc2ggfSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZ2VvbWV0cnkgPSB0aGlzLmdlb21ldHJ5UmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIWdlb21ldHJ5KSByZXR1cm47XG5cblx0XHRcdGdlb21ldHJ5LmNlbnRlcigpO1xuXHRcdFx0dG9DcmVhc2VkTm9ybWFscyhnZW9tZXRyeSwgdW50cmFja2VkKHRoaXMuY3JlYXNlQW5nbGUpKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|