angular-three-soba 1.2.0 → 1.3.1
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/cameras/README.md +3 -0
- package/cameras/index.d.ts +3 -0
- package/cameras/lib/camera/camera-content.d.ts +13 -0
- package/cameras/lib/camera/camera.d.ts +19 -0
- package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +17 -0
- package/cameras/lib/perspective-camera/perspective-camera.d.ts +9 -0
- package/esm2020/cameras/angular-three-soba-cameras.mjs +5 -0
- package/esm2020/cameras/index.mjs +4 -0
- package/esm2020/cameras/lib/camera/camera-content.mjs +20 -0
- package/esm2020/cameras/lib/camera/camera.mjs +74 -0
- package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +92 -0
- package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +46 -0
- package/esm2020/misc/index.mjs +2 -1
- package/esm2020/misc/lib/fbo/fbo.mjs +38 -0
- package/esm2020/performance/lib/stats/stats.mjs +4 -2
- package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +14 -12
- package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +6 -3
- package/fesm2015/angular-three-soba-cameras.mjs +224 -0
- package/fesm2015/angular-three-soba-cameras.mjs.map +1 -0
- package/fesm2015/angular-three-soba-misc.mjs +34 -2
- package/fesm2015/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2015/angular-three-soba-performance.mjs +3 -1
- package/fesm2015/angular-three-soba-performance.mjs.map +1 -1
- package/fesm2015/angular-three-soba-staging.mjs +17 -12
- package/fesm2015/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2020/angular-three-soba-cameras.mjs +224 -0
- package/fesm2020/angular-three-soba-cameras.mjs.map +1 -0
- package/fesm2020/angular-three-soba-misc.mjs +38 -2
- package/fesm2020/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2020/angular-three-soba-performance.mjs +3 -1
- package/fesm2020/angular-three-soba-performance.mjs.map +1 -1
- package/fesm2020/angular-three-soba-staging.mjs +17 -12
- package/fesm2020/angular-three-soba-staging.mjs.map +1 -1
- package/misc/index.d.ts +1 -0
- package/misc/lib/fbo/fbo.d.ts +13 -0
- package/package.json +11 -1
- package/plugin/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class NgtsCameraContent {
|
|
5
|
+
readonly template: TemplateRef<any>;
|
|
6
|
+
ngtsCameraContent: boolean | '';
|
|
7
|
+
static ngTemplateContextGuard(_: NgtsCameraContent, ctx: unknown): ctx is {
|
|
8
|
+
target: THREE.WebGLRenderTarget;
|
|
9
|
+
group?: THREE.Group;
|
|
10
|
+
};
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsCameraContent, never>;
|
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgtsCameraContent, "ng-template[ngtsCameraContent]", never, { "ngtsCameraContent": "ngtsCameraContent"; }, {}, never, never, true, never>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { NgtCamera, NgtRxStore, NgtStore } from 'angular-three';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare abstract class NgtsCamera<TCamera extends NgtCamera> extends NgtRxStore implements OnInit {
|
|
5
|
+
set makeDefault(makeDefault: boolean);
|
|
6
|
+
set manual(manual: boolean);
|
|
7
|
+
set frames(frames: number);
|
|
8
|
+
set resolution(resolution: number);
|
|
9
|
+
set envMap(envMap: THREE.Texture);
|
|
10
|
+
cameraRef: import("angular-three").NgtInjectedRef<TCamera>;
|
|
11
|
+
protected readonly store: NgtStore;
|
|
12
|
+
readonly fboRef: import("angular-three").NgtInjectedRef<import("three").WebGLRenderTarget>;
|
|
13
|
+
initialize(): void;
|
|
14
|
+
ngOnInit(): void;
|
|
15
|
+
private setDefaultCamera;
|
|
16
|
+
private updateProjectionMatrix;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsCamera<any>, never>;
|
|
18
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgtsCamera<any>, never, never, { "makeDefault": "makeDefault"; "manual": "manual"; "frames": "frames"; "resolution": "resolution"; "envMap": "envMap"; "cameraRef": "cameraRef"; }, {}, never, never, false, never>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NgtsCamera } from '../camera/camera';
|
|
2
|
+
import { NgtsCameraContent } from '../camera/camera-content';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class NgtsOrthographicCamera extends NgtsCamera<THREE.OrthographicCamera> {
|
|
5
|
+
cameraContent?: NgtsCameraContent;
|
|
6
|
+
set left(left: number);
|
|
7
|
+
set right(right: number);
|
|
8
|
+
set top(top: number);
|
|
9
|
+
set bottom(bottom: number);
|
|
10
|
+
initialize(): void;
|
|
11
|
+
readonly left$: import("rxjs").Observable<any>;
|
|
12
|
+
readonly right$: import("rxjs").Observable<any>;
|
|
13
|
+
readonly top$: import("rxjs").Observable<any>;
|
|
14
|
+
readonly bottom$: import("rxjs").Observable<any>;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsOrthographicCamera, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtsOrthographicCamera, "ngts-orthographic-camera", never, { "left": "left"; "right": "right"; "top": "top"; "bottom": "bottom"; }, {}, ["cameraContent"], never, true, never>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PerspectiveCamera } from 'three';
|
|
2
|
+
import { NgtsCamera } from '../camera/camera';
|
|
3
|
+
import { NgtsCameraContent } from '../camera/camera-content';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class NgtsPerspectiveCamera extends NgtsCamera<PerspectiveCamera> {
|
|
6
|
+
cameraContent?: NgtsCameraContent;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsPerspectiveCamera, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtsPerspectiveCamera, "ngts-perspective-camera", never, {}, {}, ["cameraContent"], never, true, never>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLWNhbWVyYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9jYW1lcmFzL3NyYy9hbmd1bGFyLXRocmVlLXNvYmEtY2FtZXJhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './lib/camera/camera-content';
|
|
2
|
+
export * from './lib/orthographic-camera/orthographic-camera';
|
|
3
|
+
export * from './lib/perspective-camera/perspective-camera';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9jYW1lcmFzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw2Q0FBNkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NhbWVyYS9jYW1lcmEtY29udGVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vcnRob2dyYXBoaWMtY2FtZXJhL29ydGhvZ3JhcGhpYy1jYW1lcmEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVyc3BlY3RpdmUtY2FtZXJhL3BlcnNwZWN0aXZlLWNhbWVyYSc7XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Directive, inject, Input, TemplateRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class NgtsCameraContent {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.template = inject(TemplateRef);
|
|
6
|
+
this.ngtsCameraContent = '';
|
|
7
|
+
}
|
|
8
|
+
static ngTemplateContextGuard(_, ctx) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
NgtsCameraContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCameraContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
+
NgtsCameraContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsCameraContent, isStandalone: true, selector: "ng-template[ngtsCameraContent]", inputs: { ngtsCameraContent: "ngtsCameraContent" }, ngImport: i0 });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCameraContent, decorators: [{
|
|
15
|
+
type: Directive,
|
|
16
|
+
args: [{ selector: 'ng-template[ngtsCameraContent]', standalone: true }]
|
|
17
|
+
}], propDecorators: { ngtsCameraContent: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}] } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLWNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9jYW1lcmFzL3NyYy9saWIvY2FtZXJhL2NhbWVyYS1jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSXRFLE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFYSxhQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9CLHNCQUFpQixHQUFpQixFQUFFLENBQUM7S0FRakQ7SUFORyxNQUFNLENBQUMsc0JBQXNCLENBQ3pCLENBQW9CLEVBQ3BCLEdBQVk7UUFFWixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzs4R0FUUSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGdDQUFnQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7OEJBRzlELGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmd0c0NhbWVyYUNvbnRlbnRdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNDYW1lcmFDb250ZW50IHtcbiAgICByZWFkb25seSB0ZW1wbGF0ZSA9IGluamVjdChUZW1wbGF0ZVJlZik7XG4gICAgQElucHV0KCkgbmd0c0NhbWVyYUNvbnRlbnQ6IGJvb2xlYW4gfCAnJyA9ICcnO1xuXG4gICAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoXG4gICAgICAgIF86IE5ndHNDYW1lcmFDb250ZW50LFxuICAgICAgICBjdHg6IHVua25vd25cbiAgICApOiBjdHggaXMgeyB0YXJnZXQ6IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OyBncm91cD86IFRIUkVFLkdyb3VwIH0ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Directive, inject, Input } from '@angular/core';
|
|
2
|
+
import { injectNgtRef, NgtRxStore, NgtStore } from 'angular-three';
|
|
3
|
+
import { injectNgtsFBO } from 'angular-three-soba/misc';
|
|
4
|
+
import { combineLatest, map } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NgtsCamera extends NgtRxStore {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.cameraRef = injectNgtRef();
|
|
10
|
+
this.store = inject(NgtStore);
|
|
11
|
+
this.fboRef = injectNgtsFBO(() => this.select('resolution').pipe(map((resolution) => ({ width: resolution }))));
|
|
12
|
+
}
|
|
13
|
+
set makeDefault(makeDefault) {
|
|
14
|
+
this.set({ makeDefault });
|
|
15
|
+
}
|
|
16
|
+
set manual(manual) {
|
|
17
|
+
this.set({ manual });
|
|
18
|
+
}
|
|
19
|
+
set frames(frames) {
|
|
20
|
+
this.set({ frames });
|
|
21
|
+
}
|
|
22
|
+
set resolution(resolution) {
|
|
23
|
+
this.set({ resolution });
|
|
24
|
+
}
|
|
25
|
+
set envMap(envMap) {
|
|
26
|
+
this.set({ envMap });
|
|
27
|
+
}
|
|
28
|
+
initialize() {
|
|
29
|
+
super.initialize();
|
|
30
|
+
this.set({ resolution: 256, frames: Infinity, makeDefault: false, manual: false });
|
|
31
|
+
}
|
|
32
|
+
ngOnInit() {
|
|
33
|
+
this.hold(this.cameraRef.$, (camera) => {
|
|
34
|
+
camera.updateProjectionMatrix();
|
|
35
|
+
this.setDefaultCamera();
|
|
36
|
+
this.updateProjectionMatrix();
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
setDefaultCamera() {
|
|
40
|
+
this.effect(combineLatest([this.cameraRef.$, this.select('makeDefault')]), ([camera, makeDefault]) => {
|
|
41
|
+
if (makeDefault) {
|
|
42
|
+
const { camera: oldCamera } = this.store.get();
|
|
43
|
+
this.store.set({ camera });
|
|
44
|
+
return () => {
|
|
45
|
+
this.store.set({ camera: oldCamera });
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
updateProjectionMatrix() {
|
|
51
|
+
this.effect(combineLatest([this.cameraRef.$, this.select('manual')]), ([camera, manual]) => {
|
|
52
|
+
if (!manual && camera)
|
|
53
|
+
camera.updateProjectionMatrix();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
NgtsCamera.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCamera, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
58
|
+
NgtsCamera.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsCamera, inputs: { makeDefault: "makeDefault", manual: "manual", frames: "frames", resolution: "resolution", envMap: "envMap", cameraRef: "cameraRef" }, usesInheritance: true, ngImport: i0 });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCamera, decorators: [{
|
|
60
|
+
type: Directive
|
|
61
|
+
}], propDecorators: { makeDefault: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], manual: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], frames: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], resolution: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], envMap: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], cameraRef: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}] } });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvY2FtZXJhcy9zcmMvbGliL2NhbWVyYS9jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQWEsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRzFDLE1BQU0sT0FBZ0IsVUFBc0MsU0FBUSxVQUFVO0lBRDlFOztRQXNCYSxjQUFTLEdBQUcsWUFBWSxFQUFXLENBQUM7UUFFMUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxXQUFNLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBZ0N2SDtJQXZERyxJQUFhLFdBQVcsQ0FBQyxXQUFvQjtRQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBZTtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxVQUFVLENBQUMsVUFBa0I7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQXFCO1FBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFPUSxVQUFVO1FBQ2YsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDakcsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sR0FBRyxFQUFFO29CQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQzFDLENBQUMsQ0FBQzthQUNMO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ3ZGLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTTtnQkFBRSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3VHQXZEaUIsVUFBVTsyRkFBVixVQUFVOzJGQUFWLFVBQVU7a0JBRC9CLFNBQVM7OEJBRU8sV0FBVztzQkFBdkIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0UmVmLCBOZ3RDYW1lcmEsIE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RzRkJPIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5ndHNDYW1lcmE8VENhbWVyYSBleHRlbmRzIE5ndENhbWVyYT4gZXh0ZW5kcyBOZ3RSeFN0b3JlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBzZXQgbWFrZURlZmF1bHQobWFrZURlZmF1bHQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtYWtlRGVmYXVsdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWFudWFsKG1hbnVhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IG1hbnVhbCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZnJhbWVzKGZyYW1lczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZnJhbWVzIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJlc29sdXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGVudk1hcChlbnZNYXA6IFRIUkVFLlRleHR1cmUpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBlbnZNYXAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgY2FtZXJhUmVmID0gaW5qZWN0Tmd0UmVmPFRDYW1lcmE+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICAgIHJlYWRvbmx5IGZib1JlZiA9IGluamVjdE5ndHNGQk8oKCkgPT4gdGhpcy5zZWxlY3QoJ3Jlc29sdXRpb24nKS5waXBlKG1hcCgocmVzb2x1dGlvbikgPT4gKHsgd2lkdGg6IHJlc29sdXRpb24gfSkpKSk7XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCkge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgcmVzb2x1dGlvbjogMjU2LCBmcmFtZXM6IEluZmluaXR5LCBtYWtlRGVmYXVsdDogZmFsc2UsIG1hbnVhbDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaG9sZCh0aGlzLmNhbWVyYVJlZi4kLCAoY2FtZXJhKSA9PiB7XG4gICAgICAgICAgICBjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0Q2FtZXJhKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0Q2FtZXJhKCkge1xuICAgICAgICB0aGlzLmVmZmVjdChjb21iaW5lTGF0ZXN0KFt0aGlzLmNhbWVyYVJlZi4kLCB0aGlzLnNlbGVjdCgnbWFrZURlZmF1bHQnKV0pLCAoW2NhbWVyYSwgbWFrZURlZmF1bHRdKSA9PiB7XG4gICAgICAgICAgICBpZiAobWFrZURlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNhbWVyYTogb2xkQ2FtZXJhIH0gPSB0aGlzLnN0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0KHsgY2FtZXJhIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0KHsgY2FtZXJhOiBvbGRDYW1lcmEgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkge1xuICAgICAgICB0aGlzLmVmZmVjdChjb21iaW5lTGF0ZXN0KFt0aGlzLmNhbWVyYVJlZi4kLCB0aGlzLnNlbGVjdCgnbWFudWFsJyldKSwgKFtjYW1lcmEsIG1hbnVhbF0pID0+IHtcbiAgICAgICAgICAgIGlmICghbWFudWFsICYmIGNhbWVyYSkgY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { Component, ContentChild, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
3
|
+
import { extend, NgtPush } from 'angular-three';
|
|
4
|
+
import { combineLatest, map } from 'rxjs';
|
|
5
|
+
import { Group, OrthographicCamera } from 'three';
|
|
6
|
+
import { NgtsCamera } from '../camera/camera';
|
|
7
|
+
import { NgtsCameraContent } from '../camera/camera-content';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
extend({ OrthographicCamera, Group });
|
|
10
|
+
export class NgtsOrthographicCamera extends NgtsCamera {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.left$ = combineLatest([this.select('left'), this.store.select('size')]).pipe(map(([left, size]) => left ?? size.width / -2));
|
|
14
|
+
this.right$ = combineLatest([this.select('right'), this.store.select('size')]).pipe(map(([right, size]) => right ?? size.width / 2));
|
|
15
|
+
this.top$ = combineLatest([this.select('top'), this.store.select('size')]).pipe(map(([top, size]) => top ?? size.height / 2));
|
|
16
|
+
this.bottom$ = combineLatest([this.select('bottom'), this.store.select('size')]).pipe(map(([bottom, size]) => bottom ?? size.height / -2));
|
|
17
|
+
}
|
|
18
|
+
set left(left) {
|
|
19
|
+
this.set({ left });
|
|
20
|
+
}
|
|
21
|
+
set right(right) {
|
|
22
|
+
this.set({ right });
|
|
23
|
+
}
|
|
24
|
+
set top(top) {
|
|
25
|
+
this.set({ top });
|
|
26
|
+
}
|
|
27
|
+
set bottom(bottom) {
|
|
28
|
+
this.set({ bottom });
|
|
29
|
+
}
|
|
30
|
+
initialize() {
|
|
31
|
+
super.initialize();
|
|
32
|
+
this.set({ left: 0, right: 0, top: 0, bottom: 0 });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
NgtsOrthographicCamera.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsOrthographicCamera, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
+
NgtsOrthographicCamera.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtsOrthographicCamera, isStandalone: true, selector: "ngts-orthographic-camera", inputs: { left: "left", right: "right", top: "top", bottom: "bottom" }, queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
37
|
+
<ngt-orthographic-camera
|
|
38
|
+
ngtCompound
|
|
39
|
+
[ref]="cameraRef"
|
|
40
|
+
[left]="left$ | ngtPush"
|
|
41
|
+
[right]="right$ | ngtPush"
|
|
42
|
+
[top]="top$ | ngtPush"
|
|
43
|
+
[bottom]="bottom$ | ngtPush"
|
|
44
|
+
>
|
|
45
|
+
<ng-container
|
|
46
|
+
*ngIf="cameraContent && !cameraContent.ngtsCameraContent"
|
|
47
|
+
[ngTemplateOutlet]="cameraContent.template"
|
|
48
|
+
/>
|
|
49
|
+
</ngt-orthographic-camera>
|
|
50
|
+
<ngt-group #group *ngIf="cameraContent && cameraContent.ngtsCameraContent">
|
|
51
|
+
<ng-container *ngTemplateOutlet="cameraContent.template; context: { fbo: fboRef.nativeElement, group }" />
|
|
52
|
+
</ngt-group>
|
|
53
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }] });
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsOrthographicCamera, decorators: [{
|
|
55
|
+
type: Component,
|
|
56
|
+
args: [{
|
|
57
|
+
selector: 'ngts-orthographic-camera',
|
|
58
|
+
standalone: true,
|
|
59
|
+
template: `
|
|
60
|
+
<ngt-orthographic-camera
|
|
61
|
+
ngtCompound
|
|
62
|
+
[ref]="cameraRef"
|
|
63
|
+
[left]="left$ | ngtPush"
|
|
64
|
+
[right]="right$ | ngtPush"
|
|
65
|
+
[top]="top$ | ngtPush"
|
|
66
|
+
[bottom]="bottom$ | ngtPush"
|
|
67
|
+
>
|
|
68
|
+
<ng-container
|
|
69
|
+
*ngIf="cameraContent && !cameraContent.ngtsCameraContent"
|
|
70
|
+
[ngTemplateOutlet]="cameraContent.template"
|
|
71
|
+
/>
|
|
72
|
+
</ngt-orthographic-camera>
|
|
73
|
+
<ngt-group #group *ngIf="cameraContent && cameraContent.ngtsCameraContent">
|
|
74
|
+
<ng-container *ngTemplateOutlet="cameraContent.template; context: { fbo: fboRef.nativeElement, group }" />
|
|
75
|
+
</ngt-group>
|
|
76
|
+
`,
|
|
77
|
+
imports: [NgIf, NgTemplateOutlet, NgtPush],
|
|
78
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
79
|
+
}]
|
|
80
|
+
}], propDecorators: { cameraContent: [{
|
|
81
|
+
type: ContentChild,
|
|
82
|
+
args: [NgtsCameraContent]
|
|
83
|
+
}], left: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], right: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], top: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], bottom: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}] } });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3J0aG9ncmFwaGljLWNhbWVyYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL2NhbWVyYXMvc3JjL2xpYi9vcnRob2dyYXBoaWMtY2FtZXJhL29ydGhvZ3JhcGhpYy1jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFN0QsTUFBTSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQTBCdEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFVBQW9DO0lBeEJoRjs7UUFnRGEsVUFBSyxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakYsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ2pELENBQUM7UUFFTyxXQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNuRixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQ2xELENBQUM7UUFFTyxTQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQy9DLENBQUM7UUFFTyxZQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyRixHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDdEQsQ0FBQztLQUNMO0lBcENHLElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQWEsR0FBRyxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O21IQXRCUSxzQkFBc0I7dUdBQXRCLHNCQUFzQix1TUFDakIsaUJBQWlCLHVFQXRCckI7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUJULDREQUNTLElBQUksNkZBQUUsZ0JBQWdCLCtJQUFFLE9BQU87MkZBR2hDLHNCQUFzQjtrQkF4QmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQztvQkFDMUMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzhCQUVvQyxhQUFhO3NCQUE3QyxZQUFZO3VCQUFDLGlCQUFpQjtnQkFFbEIsSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLEdBQUc7c0JBQWYsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgTmd0UHVzaCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHcm91cCwgT3J0aG9ncmFwaGljQ2FtZXJhIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYSB9IGZyb20gJy4uL2NhbWVyYS9jYW1lcmEnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYUNvbnRlbnQgfSBmcm9tICcuLi9jYW1lcmEvY2FtZXJhLWNvbnRlbnQnO1xuXG5leHRlbmQoeyBPcnRob2dyYXBoaWNDYW1lcmEsIEdyb3VwIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtb3J0aG9ncmFwaGljLWNhbWVyYScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmFcbiAgICAgICAgICAgIG5ndENvbXBvdW5kXG4gICAgICAgICAgICBbcmVmXT1cImNhbWVyYVJlZlwiXG4gICAgICAgICAgICBbbGVmdF09XCJsZWZ0JCB8IG5ndFB1c2hcIlxuICAgICAgICAgICAgW3JpZ2h0XT1cInJpZ2h0JCB8IG5ndFB1c2hcIlxuICAgICAgICAgICAgW3RvcF09XCJ0b3AkIHwgbmd0UHVzaFwiXG4gICAgICAgICAgICBbYm90dG9tXT1cImJvdHRvbSQgfCBuZ3RQdXNoXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FtZXJhQ29udGVudCAmJiAhY2FtZXJhQ29udGVudC5uZ3RzQ2FtZXJhQ29udGVudFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FtZXJhQ29udGVudC50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L25ndC1vcnRob2dyYXBoaWMtY2FtZXJhPlxuICAgICAgICA8bmd0LWdyb3VwICNncm91cCAqbmdJZj1cImNhbWVyYUNvbnRlbnQgJiYgY2FtZXJhQ29udGVudC5uZ3RzQ2FtZXJhQ29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhbWVyYUNvbnRlbnQudGVtcGxhdGU7IGNvbnRleHQ6IHsgZmJvOiBmYm9SZWYubmF0aXZlRWxlbWVudCwgZ3JvdXAgfVwiIC8+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIE5ndFB1c2hdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c09ydGhvZ3JhcGhpY0NhbWVyYSBleHRlbmRzIE5ndHNDYW1lcmE8VEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhPiB7XG4gICAgQENvbnRlbnRDaGlsZChOZ3RzQ2FtZXJhQ29udGVudCkgY2FtZXJhQ29udGVudD86IE5ndHNDYW1lcmFDb250ZW50O1xuXG4gICAgQElucHV0KCkgc2V0IGxlZnQobGVmdDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVmdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmlnaHQocmlnaHQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJpZ2h0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCB0b3AodG9wOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0b3AgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJvdHRvbShib3R0b206IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGJvdHRvbSB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVmdDogMCwgcmlnaHQ6IDAsIHRvcDogMCwgYm90dG9tOiAwIH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IGxlZnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ2xlZnQnKSwgdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKV0pLnBpcGUoXG4gICAgICAgIG1hcCgoW2xlZnQsIHNpemVdKSA9PiBsZWZ0ID8/IHNpemUud2lkdGggLyAtMilcbiAgICApO1xuXG4gICAgcmVhZG9ubHkgcmlnaHQkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ3JpZ2h0JyksIHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyldKS5waXBlKFxuICAgICAgICBtYXAoKFtyaWdodCwgc2l6ZV0pID0+IHJpZ2h0ID8/IHNpemUud2lkdGggLyAyKVxuICAgICk7XG5cbiAgICByZWFkb25seSB0b3AkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ3RvcCcpLCB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpXSkucGlwZShcbiAgICAgICAgbWFwKChbdG9wLCBzaXplXSkgPT4gdG9wID8/IHNpemUuaGVpZ2h0IC8gMilcbiAgICApO1xuXG4gICAgcmVhZG9ubHkgYm90dG9tJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0KCdib3R0b20nKSwgdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKV0pLnBpcGUoXG4gICAgICAgIG1hcCgoW2JvdHRvbSwgc2l6ZV0pID0+IGJvdHRvbSA/PyBzaXplLmhlaWdodCAvIC0yKVxuICAgICk7XG59XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { Component, ContentChild, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
3
|
+
import { extend } from 'angular-three';
|
|
4
|
+
import { Group, PerspectiveCamera } from 'three';
|
|
5
|
+
import { NgtsCamera } from '../camera/camera';
|
|
6
|
+
import { NgtsCameraContent } from '../camera/camera-content';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
extend({ PerspectiveCamera, Group });
|
|
9
|
+
export class NgtsPerspectiveCamera extends NgtsCamera {
|
|
10
|
+
}
|
|
11
|
+
NgtsPerspectiveCamera.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsPerspectiveCamera, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
NgtsPerspectiveCamera.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtsPerspectiveCamera, isStandalone: true, selector: "ngts-perspective-camera", queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
13
|
+
<ngt-perspective-camera [ref]="cameraRef" ngtCompound>
|
|
14
|
+
<ng-container
|
|
15
|
+
*ngIf="cameraContent && !cameraContent.ngtsCameraContent"
|
|
16
|
+
[ngTemplateOutlet]="cameraContent.template"
|
|
17
|
+
/>
|
|
18
|
+
</ngt-perspective-camera>
|
|
19
|
+
<ngt-group #group *ngIf="cameraContent && cameraContent.ngtsCameraContent">
|
|
20
|
+
<ng-container *ngTemplateOutlet="cameraContent.template; context: { fbo: fboRef.nativeElement, group }" />
|
|
21
|
+
</ngt-group>
|
|
22
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsPerspectiveCamera, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{
|
|
26
|
+
selector: 'ngts-perspective-camera',
|
|
27
|
+
standalone: true,
|
|
28
|
+
template: `
|
|
29
|
+
<ngt-perspective-camera [ref]="cameraRef" ngtCompound>
|
|
30
|
+
<ng-container
|
|
31
|
+
*ngIf="cameraContent && !cameraContent.ngtsCameraContent"
|
|
32
|
+
[ngTemplateOutlet]="cameraContent.template"
|
|
33
|
+
/>
|
|
34
|
+
</ngt-perspective-camera>
|
|
35
|
+
<ngt-group #group *ngIf="cameraContent && cameraContent.ngtsCameraContent">
|
|
36
|
+
<ng-container *ngTemplateOutlet="cameraContent.template; context: { fbo: fboRef.nativeElement, group }" />
|
|
37
|
+
</ngt-group>
|
|
38
|
+
`,
|
|
39
|
+
imports: [NgIf, NgTemplateOutlet],
|
|
40
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
41
|
+
}]
|
|
42
|
+
}], propDecorators: { cameraContent: [{
|
|
43
|
+
type: ContentChild,
|
|
44
|
+
args: [NgtsCameraContent]
|
|
45
|
+
}] } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc3BlY3RpdmUtY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvY2FtZXJhcy9zcmMvbGliL3BlcnNwZWN0aXZlLWNhbWVyYS9wZXJzcGVjdGl2ZS1jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRTdELE1BQU0sQ0FBQyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFtQnJDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxVQUE2Qjs7a0hBQTNELHFCQUFxQjtzR0FBckIscUJBQXFCLDhIQUNoQixpQkFBaUIsdUVBZnJCOzs7Ozs7Ozs7O0tBVVQsNERBQ1MsSUFBSSw2RkFBRSxnQkFBZ0I7MkZBR3ZCLHFCQUFxQjtrQkFqQmpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7OztLQVVUO29CQUNELE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzhCQUVvQyxhQUFhO3NCQUE3QyxZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAsIFBlcnNwZWN0aXZlQ2FtZXJhIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYSB9IGZyb20gJy4uL2NhbWVyYS9jYW1lcmEnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYUNvbnRlbnQgfSBmcm9tICcuLi9jYW1lcmEvY2FtZXJhLWNvbnRlbnQnO1xuXG5leHRlbmQoeyBQZXJzcGVjdGl2ZUNhbWVyYSwgR3JvdXAgfSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1wZXJzcGVjdGl2ZS1jYW1lcmEnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1wZXJzcGVjdGl2ZS1jYW1lcmEgW3JlZl09XCJjYW1lcmFSZWZcIiBuZ3RDb21wb3VuZD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNhbWVyYUNvbnRlbnQgJiYgIWNhbWVyYUNvbnRlbnQubmd0c0NhbWVyYUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhbWVyYUNvbnRlbnQudGVtcGxhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9uZ3QtcGVyc3BlY3RpdmUtY2FtZXJhPlxuICAgICAgICA8bmd0LWdyb3VwICNncm91cCAqbmdJZj1cImNhbWVyYUNvbnRlbnQgJiYgY2FtZXJhQ29udGVudC5uZ3RzQ2FtZXJhQ29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhbWVyYUNvbnRlbnQudGVtcGxhdGU7IGNvbnRleHQ6IHsgZmJvOiBmYm9SZWYubmF0aXZlRWxlbWVudCwgZ3JvdXAgfVwiIC8+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXRdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1BlcnNwZWN0aXZlQ2FtZXJhIGV4dGVuZHMgTmd0c0NhbWVyYTxQZXJzcGVjdGl2ZUNhbWVyYT4ge1xuICAgIEBDb250ZW50Q2hpbGQoTmd0c0NhbWVyYUNvbnRlbnQpIGNhbWVyYUNvbnRlbnQ/OiBOZ3RzQ2FtZXJhQ29udGVudDtcbn1cbiJdfQ==
|
package/esm2020/misc/index.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export * from './lib/bake-shadows/bake-shadows';
|
|
2
|
-
|
|
2
|
+
export * from './lib/fbo/fbo';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9taXNjL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYmFrZS1zaGFkb3dzL2Jha2Utc2hhZG93cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYm8vZmJvJztcbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { injectNgtDestroy, injectNgtRef, NgtStore, safeDetectChanges } from 'angular-three';
|
|
3
|
+
import { isObservable, of, takeUntil } from 'rxjs';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
export function injectNgtsFBO(paramsFactory) {
|
|
6
|
+
const store = inject(NgtStore);
|
|
7
|
+
const targetRef = injectNgtRef();
|
|
8
|
+
const { destroy$, cdr } = injectNgtDestroy(() => {
|
|
9
|
+
targetRef.nativeElement?.dispose();
|
|
10
|
+
});
|
|
11
|
+
const params = paramsFactory({});
|
|
12
|
+
const params$ = isObservable(params) ? params : of(params);
|
|
13
|
+
params$.pipe(takeUntil(destroy$)).subscribe(({ width, height, settings }) => {
|
|
14
|
+
const { gl, size, viewport } = store.get();
|
|
15
|
+
const _width = typeof width === 'number' ? width : size.width * viewport.dpr;
|
|
16
|
+
const _height = typeof height === 'number' ? height : size.height * viewport.dpr;
|
|
17
|
+
const _settings = (typeof width === 'number' ? settings : width) || {};
|
|
18
|
+
const { samples, ...targetSettings } = _settings;
|
|
19
|
+
if (!targetRef.nativeElement) {
|
|
20
|
+
const target = new THREE.WebGLRenderTarget(_width, _height, {
|
|
21
|
+
minFilter: THREE.LinearFilter,
|
|
22
|
+
magFilter: THREE.LinearFilter,
|
|
23
|
+
encoding: gl.outputEncoding,
|
|
24
|
+
type: THREE.HalfFloatType,
|
|
25
|
+
...targetSettings,
|
|
26
|
+
});
|
|
27
|
+
if (samples)
|
|
28
|
+
target.samples = samples;
|
|
29
|
+
targetRef.nativeElement = target;
|
|
30
|
+
}
|
|
31
|
+
targetRef.nativeElement.setSize(_width, _height);
|
|
32
|
+
if (samples)
|
|
33
|
+
targetRef.nativeElement.samples = samples;
|
|
34
|
+
safeDetectChanges(cdr);
|
|
35
|
+
});
|
|
36
|
+
return targetRef;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmJvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvbWlzYy9zcmMvbGliL2Ziby9mYm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFhL0IsTUFBTSxVQUFVLGFBQWEsQ0FDekIsYUFBNEc7SUFFNUcsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sU0FBUyxHQUFHLFlBQVksRUFBMkIsQ0FBQztJQUMxRCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtRQUM1QyxTQUFTLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0QsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtRQUN4RSxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUM3RSxNQUFNLE9BQU8sR0FBRyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ2pGLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFFLEtBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEYsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUVqRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtZQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO2dCQUN4RCxTQUFTLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQzdCLFNBQVMsRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDN0IsUUFBUSxFQUFFLEVBQUUsQ0FBQyxjQUFjO2dCQUMzQixJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWE7Z0JBQ3pCLEdBQUcsY0FBYzthQUNwQixDQUFDLENBQUM7WUFDSCxJQUFJLE9BQU87Z0JBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDdEMsU0FBUyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7U0FDcEM7UUFFRCxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQsSUFBSSxPQUFPO1lBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZELGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgaW5qZWN0Tmd0UmVmLCBOZ3RTdG9yZSwgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5pbnRlcmZhY2UgRkJPU2V0dGluZ3M8VCBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4gZXh0ZW5kcyBUSFJFRS5XZWJHTFJlbmRlclRhcmdldE9wdGlvbnMge1xuICAgIG11bHRpc2FtcGxlPzogVDtcbiAgICBzYW1wbGVzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNGQk9QYXJhbXM8VCBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4ge1xuICAgIHdpZHRoPzogbnVtYmVyIHwgRkJPU2V0dGluZ3M8VD47XG4gICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgIHNldHRpbmdzPzogRkJPU2V0dGluZ3M8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzRkJPPFQgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+KFxuICAgIHBhcmFtc0ZhY3Rvcnk6IChkZWZhdWx0UGFyYW1zOiBQYXJ0aWFsPE5ndHNGQk9QYXJhbXM8VD4+KSA9PiBOZ3RzRkJPUGFyYW1zPFQ+IHwgT2JzZXJ2YWJsZTxOZ3RzRkJPUGFyYW1zPFQ+PlxuKSB7XG4gICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICAgIGNvbnN0IHRhcmdldFJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5XZWJHTFJlbmRlclRhcmdldD4oKTtcbiAgICBjb25zdCB7IGRlc3Ryb3kkLCBjZHIgfSA9IGluamVjdE5ndERlc3Ryb3koKCkgPT4ge1xuICAgICAgICB0YXJnZXRSZWYubmF0aXZlRWxlbWVudD8uZGlzcG9zZSgpO1xuICAgIH0pO1xuICAgIGNvbnN0IHBhcmFtcyA9IHBhcmFtc0ZhY3Rvcnkoe30pO1xuICAgIGNvbnN0IHBhcmFtcyQgPSBpc09ic2VydmFibGUocGFyYW1zKSA/IHBhcmFtcyA6IG9mKHBhcmFtcyk7XG5cbiAgICBwYXJhbXMkLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh7IHdpZHRoLCBoZWlnaHQsIHNldHRpbmdzIH0pID0+IHtcbiAgICAgICAgY29uc3QgeyBnbCwgc2l6ZSwgdmlld3BvcnQgfSA9IHN0b3JlLmdldCgpO1xuICAgICAgICBjb25zdCBfd2lkdGggPSB0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInID8gd2lkdGggOiBzaXplLndpZHRoICogdmlld3BvcnQuZHByO1xuICAgICAgICBjb25zdCBfaGVpZ2h0ID0gdHlwZW9mIGhlaWdodCA9PT0gJ251bWJlcicgPyBoZWlnaHQgOiBzaXplLmhlaWdodCAqIHZpZXdwb3J0LmRwcjtcbiAgICAgICAgY29uc3QgX3NldHRpbmdzID0gKHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgPyBzZXR0aW5ncyA6ICh3aWR0aCBhcyBGQk9TZXR0aW5ncykpIHx8IHt9O1xuXG4gICAgICAgIGNvbnN0IHsgc2FtcGxlcywgLi4udGFyZ2V0U2V0dGluZ3MgfSA9IF9zZXR0aW5ncztcblxuICAgICAgICBpZiAoIXRhcmdldFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQoX3dpZHRoLCBfaGVpZ2h0LCB7XG4gICAgICAgICAgICAgICAgbWluRmlsdGVyOiBUSFJFRS5MaW5lYXJGaWx0ZXIsXG4gICAgICAgICAgICAgICAgbWFnRmlsdGVyOiBUSFJFRS5MaW5lYXJGaWx0ZXIsXG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IGdsLm91dHB1dEVuY29kaW5nLFxuICAgICAgICAgICAgICAgIHR5cGU6IFRIUkVFLkhhbGZGbG9hdFR5cGUsXG4gICAgICAgICAgICAgICAgLi4udGFyZ2V0U2V0dGluZ3MsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChzYW1wbGVzKSB0YXJnZXQuc2FtcGxlcyA9IHNhbXBsZXM7XG4gICAgICAgICAgICB0YXJnZXRSZWYubmF0aXZlRWxlbWVudCA9IHRhcmdldDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldFJlZi5uYXRpdmVFbGVtZW50LnNldFNpemUoX3dpZHRoLCBfaGVpZ2h0KTtcbiAgICAgICAgaWYgKHNhbXBsZXMpIHRhcmdldFJlZi5uYXRpdmVFbGVtZW50LnNhbXBsZXMgPSBzYW1wbGVzO1xuICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyhjZHIpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhcmdldFJlZjtcbn1cbiJdfQ==
|
|
@@ -8,7 +8,9 @@ export class NgtsStats extends NgtRxStore {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
super(...arguments);
|
|
10
10
|
this.document = inject(DOCUMENT);
|
|
11
|
-
this.stats =
|
|
11
|
+
this.stats = Stats['default']
|
|
12
|
+
? new Stats['default']()
|
|
13
|
+
: new Stats();
|
|
12
14
|
}
|
|
13
15
|
set showPanel(showPanel) {
|
|
14
16
|
this.set({ showPanel: showPanel === undefined ? this.get('showPanel') : showPanel });
|
|
@@ -60,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
|
|
|
60
62
|
}], classes: [{
|
|
61
63
|
type: Input
|
|
62
64
|
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvbGliL3N0YXRzL3N0YXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQWdDLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sS0FBSyxLQUFLLE1BQU0sVUFBVSxDQUFDOztBQU1sQyxNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQVU7SUFKekM7O1FBS3FCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsVUFBSyxHQUFJLEtBQXNCLENBQUMsU0FBUyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxJQUFLLEtBQXNCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDMUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7S0EyQ3JCO0lBekNHLElBQWEsU0FBUyxDQUFDLFNBQWlCO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBbUM7UUFDbkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FDUCxhQUFhLENBQUM7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDcEQsQ0FBQyxFQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUFJLE9BQU8sRUFBRTtnQkFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDcEY7WUFDRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkQsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsQ0FBQztnQkFDUixHQUFHLEVBQUUsQ0FBQztZQUNWLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQzs7c0dBOUNRLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQUpyQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBT2dCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFkZEFmdGVyRWZmZWN0LCBhZGRFZmZlY3QsIE5ndEFueVJlY29yZCwgTmd0SW5qZWN0ZWRSZWYsIE5ndFJ4U3RvcmUsIHN0YXJ0V2l0aFVuZGVmaW5lZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgU3RhdHMgZnJvbSAnc3RhdHMuanMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc3RhdHMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGF0cyBleHRlbmRzIE5ndFJ4U3RvcmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdHMgPSAoU3RhdHMgYXMgTmd0QW55UmVjb3JkKVsnZGVmYXVsdCddXG4gICAgICAgID8gbmV3IChTdGF0cyBhcyBOZ3RBbnlSZWNvcmQpWydkZWZhdWx0J10oKVxuICAgICAgICA6IG5ldyBTdGF0cygpO1xuXG4gICAgQElucHV0KCkgc2V0IHNob3dQYW5lbChzaG93UGFuZWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNob3dQYW5lbDogc2hvd1BhbmVsID09PSB1bmRlZmluZWQgPyB0aGlzLmdldCgnc2hvd1BhbmVsJykgOiBzaG93UGFuZWwgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBhcmVudChwYXJlbnQ6IE5ndEluamVjdGVkUmVmPEhUTUxFbGVtZW50Pikge1xuICAgICAgICB0aGlzLnNldCh7IHBhcmVudCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY2xhc3NlcyhjbGFzc2VzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjbGFzc2VzIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoeyBzaG93UGFuZWw6IDAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0KFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3Nob3dQYW5lbCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdwYXJlbnQnKS5waXBlKHN0YXJ0V2l0aFVuZGVmaW5lZCgpKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnY2xhc3NlcycpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAoW3Nob3dQYW5lbCwgcGFyZW50LCBjbGFzc2VzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBwYXJlbnQgJiYgcGFyZW50Lm5hdGl2ZUVsZW1lbnQgPyBwYXJlbnQubmF0aXZlRWxlbWVudCA6IHRoaXMuZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRzLnNob3dQYW5lbChzaG93UGFuZWwpO1xuICAgICAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGhpcy5zdGF0cy5kb20pO1xuICAgICAgICAgICAgICAgIGlmIChjbGFzc2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHMuZG9tLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5zcGxpdCgnICcpLmZpbHRlcigoY2xzOiBzdHJpbmcpID0+IGNscykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBiZWdpbiA9IGFkZEVmZmVjdCgoKSA9PiB0aGlzLnN0YXRzLmJlZ2luKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IGFkZEFmdGVyRWZmZWN0KCgpID0+IHRoaXMuc3RhdHMuZW5kKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQodGhpcy5zdGF0cy5kb20pO1xuICAgICAgICAgICAgICAgICAgICBiZWdpbigpO1xuICAgICAgICAgICAgICAgICAgICBlbmQoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|