angular-three 2.0.0-beta.312 → 2.0.0-beta.314
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/esm2022/lib/loader.mjs +28 -32
- package/esm2022/lib/renderer/index.mjs +2 -2
- package/esm2022/lib/utils/object-events.mjs +27 -28
- package/esm2022/nativescript/lib/canvas.mjs +41 -46
- package/fesm2022/angular-three-nativescript.mjs +40 -45
- package/fesm2022/angular-three-nativescript.mjs.map +1 -1
- package/fesm2022/angular-three.mjs +52 -55
- package/fesm2022/angular-three.mjs.map +1 -1
- package/lib/utils/object-events.d.ts +3 -5
- package/nativescript/lib/canvas.d.ts +1 -2
- package/package.json +1 -1
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import '@nativescript/canvas-three';
|
|
2
2
|
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import {
|
|
3
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, createEnvironmentInjector, DestroyRef, EnvironmentInjector, inject, Injector, input, NgZone, NO_ERRORS_SCHEMA, output, untracked, viewChild, ViewContainerRef, } from '@angular/core';
|
|
4
4
|
import { registerElement } from '@nativescript/angular';
|
|
5
5
|
import { Canvas } from '@nativescript/canvas';
|
|
6
6
|
import { injectCanvasRootInitializer, injectStore, makeDpr, NgtRoutedScene, provideNgtRenderer, provideStore, } from 'angular-three';
|
|
7
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
8
7
|
import { WebGLRenderer } from 'three';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
10
9
|
registerElement('Canvas', () => Canvas);
|
|
@@ -45,53 +44,49 @@ export class NgtCanvasNative {
|
|
|
45
44
|
this.destroyRef = inject(DestroyRef);
|
|
46
45
|
this.zone = inject(NgZone);
|
|
47
46
|
this.canvasViewContainerRef = viewChild.required('canvas', { read: ViewContainerRef });
|
|
48
|
-
this.canvasElement = signal(null);
|
|
49
|
-
const autoEffect = injectAutoEffect();
|
|
50
|
-
afterNextRender(() => {
|
|
51
|
-
autoEffect(() => {
|
|
52
|
-
const canvas = this.canvasElement();
|
|
53
|
-
if (!canvas)
|
|
54
|
-
return;
|
|
55
|
-
const dpr = makeDpr(untracked(this.dpr), window);
|
|
56
|
-
const canvasWidth = canvas.clientWidth * dpr;
|
|
57
|
-
const canvasHeight = canvas.clientHeight * dpr;
|
|
58
|
-
Object.assign(canvas, { width: canvasWidth, height: canvasHeight });
|
|
59
|
-
const context = canvas.getContext('webgl2');
|
|
60
|
-
const gl = new WebGLRenderer({
|
|
61
|
-
context: context,
|
|
62
|
-
powerPreference: 'high-performance',
|
|
63
|
-
antialias: true,
|
|
64
|
-
alpha: true,
|
|
65
|
-
...untracked(this.gl),
|
|
66
|
-
});
|
|
67
|
-
this.zone.runOutsideAngular(() => {
|
|
68
|
-
this.configurator = this.initRoot(canvas);
|
|
69
|
-
this.configurator.configure({
|
|
70
|
-
gl,
|
|
71
|
-
size: { width: canvasWidth, height: canvasHeight, top: 0, left: 0 },
|
|
72
|
-
shadows: untracked(this.shadows),
|
|
73
|
-
legacy: untracked(this.legacy),
|
|
74
|
-
linear: untracked(this.linear),
|
|
75
|
-
flat: untracked(this.flat),
|
|
76
|
-
orthographic: untracked(this.orthographic),
|
|
77
|
-
frameloop: untracked(this.frameloop),
|
|
78
|
-
performance: untracked(this.performance),
|
|
79
|
-
dpr: untracked(this.dpr),
|
|
80
|
-
raycaster: untracked(this.raycaster),
|
|
81
|
-
scene: untracked(this.scene),
|
|
82
|
-
camera: untracked(this.camera),
|
|
83
|
-
lookAt: untracked(this.lookAt),
|
|
84
|
-
});
|
|
85
|
-
untracked(this.noZoneRender.bind(this));
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
47
|
this.destroyRef.onDestroy(() => {
|
|
90
48
|
this.glRef?.destroy();
|
|
91
49
|
this.glEnvironmentInjector?.destroy();
|
|
92
50
|
this.configurator?.destroy();
|
|
93
51
|
});
|
|
94
52
|
}
|
|
53
|
+
onReady(event) {
|
|
54
|
+
const canvas = event.object;
|
|
55
|
+
const dpr = makeDpr(untracked(this.dpr), window);
|
|
56
|
+
const canvasWidth = canvas.clientWidth * dpr;
|
|
57
|
+
const canvasHeight = canvas.clientHeight * dpr;
|
|
58
|
+
Object.assign(canvas, { width: canvasWidth, height: canvasHeight });
|
|
59
|
+
const context = canvas.getContext('webgl2');
|
|
60
|
+
const gl = new WebGLRenderer({
|
|
61
|
+
canvas,
|
|
62
|
+
context: context,
|
|
63
|
+
powerPreference: 'high-performance',
|
|
64
|
+
antialias: true,
|
|
65
|
+
alpha: true,
|
|
66
|
+
...untracked(this.gl),
|
|
67
|
+
});
|
|
68
|
+
gl.setSize(canvasWidth, canvasHeight);
|
|
69
|
+
this.zone.runOutsideAngular(() => {
|
|
70
|
+
this.configurator = this.initRoot(canvas);
|
|
71
|
+
this.configurator.configure({
|
|
72
|
+
gl,
|
|
73
|
+
size: { width: canvasWidth, height: canvasHeight, top: 0, left: 0 },
|
|
74
|
+
shadows: untracked(this.shadows),
|
|
75
|
+
legacy: untracked(this.legacy),
|
|
76
|
+
linear: untracked(this.linear),
|
|
77
|
+
flat: untracked(this.flat),
|
|
78
|
+
orthographic: untracked(this.orthographic),
|
|
79
|
+
frameloop: untracked(this.frameloop),
|
|
80
|
+
performance: untracked(this.performance),
|
|
81
|
+
dpr: untracked(this.dpr),
|
|
82
|
+
raycaster: untracked(this.raycaster),
|
|
83
|
+
scene: untracked(this.scene),
|
|
84
|
+
camera: untracked(this.camera),
|
|
85
|
+
lookAt: untracked(this.lookAt),
|
|
86
|
+
});
|
|
87
|
+
untracked(this.noZoneRender.bind(this));
|
|
88
|
+
});
|
|
89
|
+
}
|
|
95
90
|
noZoneRender() {
|
|
96
91
|
// NOTE: destroy previous instances if existed
|
|
97
92
|
this.glEnvironmentInjector?.destroy();
|
|
@@ -110,7 +105,7 @@ export class NgtCanvasNative {
|
|
|
110
105
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtCanvasNative, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
111
106
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtCanvasNative, isStandalone: true, selector: "NgtCanvas", inputs: { sceneGraph: { classPropertyName: "sceneGraph", publicName: "sceneGraph", isSignal: true, isRequired: true, transformFunction: null }, gl: { classPropertyName: "gl", publicName: "gl", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shadows: { classPropertyName: "shadows", publicName: "shadows", isSignal: true, isRequired: false, transformFunction: null }, legacy: { classPropertyName: "legacy", publicName: "legacy", isSignal: true, isRequired: false, transformFunction: null }, linear: { classPropertyName: "linear", publicName: "linear", isSignal: true, isRequired: false, transformFunction: null }, flat: { classPropertyName: "flat", publicName: "flat", isSignal: true, isRequired: false, transformFunction: null }, orthographic: { classPropertyName: "orthographic", publicName: "orthographic", isSignal: true, isRequired: false, transformFunction: null }, frameloop: { classPropertyName: "frameloop", publicName: "frameloop", isSignal: true, isRequired: false, transformFunction: null }, performance: { classPropertyName: "performance", publicName: "performance", isSignal: true, isRequired: false, transformFunction: null }, dpr: { classPropertyName: "dpr", publicName: "dpr", isSignal: true, isRequired: false, transformFunction: null }, raycaster: { classPropertyName: "raycaster", publicName: "raycaster", isSignal: true, isRequired: false, transformFunction: null }, scene: { classPropertyName: "scene", publicName: "scene", isSignal: true, isRequired: false, transformFunction: null }, camera: { classPropertyName: "camera", publicName: "camera", isSignal: true, isRequired: false, transformFunction: null }, lookAt: { classPropertyName: "lookAt", publicName: "lookAt", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { created: "created" }, providers: [{ provide: DOCUMENT, useValue: document }, provideStore()], viewQueries: [{ propertyName: "canvasViewContainerRef", first: true, predicate: ["canvas"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
|
|
112
107
|
<GridLayout>
|
|
113
|
-
<Canvas #canvas style="width: 100%; height: auto" (ready)="
|
|
108
|
+
<Canvas #canvas style="width: 100%; height: auto" (ready)="onReady($event)"></Canvas>
|
|
114
109
|
</GridLayout>
|
|
115
110
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
116
111
|
}
|
|
@@ -121,7 +116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
121
116
|
standalone: true,
|
|
122
117
|
template: `
|
|
123
118
|
<GridLayout>
|
|
124
|
-
<Canvas #canvas style="width: 100%; height: auto" (ready)="
|
|
119
|
+
<Canvas #canvas style="width: 100%; height: auto" (ready)="onReady($event)"></Canvas>
|
|
125
120
|
</GridLayout>
|
|
126
121
|
`,
|
|
127
122
|
providers: [{ provide: DOCUMENT, useValue: document }, provideStore()],
|
|
@@ -129,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
129
124
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
130
125
|
}]
|
|
131
126
|
}], ctorParameters: () => [] });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL25hdGl2ZXNjcmlwdC9zcmMvbGliL2NhbnZhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sZUFBZSxFQUNmLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUVULHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxFQUNULGdCQUFnQixHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFDTiwyQkFBMkIsRUFDM0IsV0FBVyxFQUNYLE9BQU8sRUFNUCxjQUFjLEVBR2Qsa0JBQWtCLEVBQ2xCLFlBQVksR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQTZCLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFakUsZUFBZSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQWN4QyxNQUFNLE9BQU8sZUFBZTtJQTJDM0I7UUExQ0EsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQWtDO1lBQzVELFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNwQixJQUFJLEtBQUssS0FBSyxRQUFRO29CQUFFLE9BQU8sY0FBYyxD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SUFBSSxDQUFDLG1CQUFtQixDQUN4QixDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDL0YsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtZQUMvQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QyxDQUFDOzhHQXBIVyxlQUFlO2tHQUFmLGVBQWUsdTdEQUpoQixDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsdUhBdUNBLGdCQUFnQiw2Q0E1QzVFOzs7O0VBSVQ7OzJGQUtXLGVBQWU7a0JBWjNCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDO29CQUN0RSxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDM0IsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAbmF0aXZlc2NyaXB0L2NhbnZhcy10aHJlZSc7XG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Ym9vbGVhbkF0dHJpYnV0ZSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q29tcG9uZW50UmVmLFxuXHRjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuXHREZXN0cm95UmVmLFxuXHRFbnZpcm9ubWVudEluamVjdG9yLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0Tmdab25lLFxuXHROT19FUlJPUlNfU0NIRU1BLFxuXHRvdXRwdXQsXG5cdHNpZ25hbCxcblx0VHlwZSxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG5cdFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVnaXN0ZXJFbGVtZW50IH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC9hbmd1bGFyJztcbmltcG9ydCB7IENhbnZhcyB9IGZyb20gJ0BuYXRpdmVzY3JpcHQvY2FudmFzJztcbmltcG9ydCB7XG5cdGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplcixcblx0aW5qZWN0U3RvcmUsXG5cdG1ha2VEcHIsXG5cdE5ndENhbnZhc0NvbmZpZ3VyYXRvcixcblx0Tmd0Q2FudmFzT3B0aW9ucyxcblx0Tmd0RHByLFxuXHROZ3RHTE9wdGlvbnMsXG5cdE5ndFBlcmZvcm1hbmNlLFxuXHROZ3RSb3V0ZWRTY2VuZSxcblx0Tmd0U2l6ZSxcblx0Tmd0U3RhdGUsXG5cdHByb3ZpZGVOZ3RSZW5kZXJlcixcblx0cHJvdmlkZVN0b3JlLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IFJheWNhc3RlciwgU2NlbmUsIFZlY3RvcjMsIFdlYkdMUmVuZGVyZXIgfSBmcm9tICd0aHJlZSc7XG5cbnJlZ2lzdGVyRWxlbWVudCgnQ2FudmFzJywgKCkgPT4gQ2FudmFzKTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnTmd0Q2FudmFzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8R3JpZExheW91dD5cblx0XHRcdDxDYW52YXMgI2NhbnZhcyBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG9cIiAocmVhZHkpPVwiY2FudmFzRWxlbWVudC5zZXQoJGFueSgkZXZlbnQpLm9iamVjdClcIj48L0NhbnZhcz5cblx0XHQ8L0dyaWRMYXlvdXQ+XG5cdGAsXG5cdHByb3ZpZGVyczogW3sgcHJvdmlkZTogRE9DVU1FTlQsIHVzZVZhbHVlOiBkb2N1bWVudCB9LCBwcm92aWRlU3RvcmUoKV0sXG5cdHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndENhbnZhc05hdGl2ZSB7XG5cdHNjZW5lR3JhcGggPSBpbnB1dC5yZXF1aXJlZDxUeXBlPGFueT4sIFR5cGU8YW55PiB8ICdyb3V0ZWQnPih7XG5cdFx0dHJhbnNmb3JtOiAodmFsdWUpID0+IHtcblx0XHRcdGlmICh2YWx1ZSA9PT0gJ3JvdXRlZCcpIHJldHVybiBOZ3RSb3V0ZWRTY2VuZTtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9LFxuXHR9KTtcblx0Z2wgPSBpbnB1dDxOZ3RHTE9wdGlvbnM+KCk7XG5cdHNpemUgPSBpbnB1dDxOZ3RTaXplPigpO1xuXHRzaGFkb3dzID0gaW5wdXQoZmFsc2UsIHtcblx0XHR0cmFuc2Zvcm06ICh2YWx1ZSkgPT4ge1xuXHRcdFx0aWYgKHZhbHVlID09PSAnJykgcmV0dXJuIGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpO1xuXHRcdFx0cmV0dXJuIHZhbHVlIGFzIE5vbk51bGxhYmxlPE5ndENhbnZhc09wdGlvbnNbJ3NoYWRvd3MnXT47XG5cdFx0fSxcblx0fSk7XG5cdGxlZ2FjeSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblx0bGluZWFyID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXHRmbGF0ID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXHRvcnRob2dyYXBoaWMgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cdGZyYW1lbG9vcCA9IGlucHV0PE5vbk51bGxhYmxlPE5ndENhbnZhc09wdGlvbnNbJ2ZyYW1lbG9vcCddPj4oJ2Fsd2F5cycpO1xuXHRwZXJmb3JtYW5jZSA9IGlucHV0PFBhcnRpYWw8T21pdDxOZ3RQZXJmb3JtYW5jZSwgJ3JlZ3Jlc3MnPj4+KCk7XG5cdGRwciA9IGlucHV0PE5ndERwcj4oWzEsIDJdKTtcblx0cmF5Y2FzdGVyID0gaW5wdXQ8UGFydGlhbDxSYXljYXN0ZXI+PigpO1xuXHRzY2VuZSA9IGlucHV0PFNjZW5lIHwgUGFydGlhbDxTY2VuZT4+KCk7XG5cdGNhbWVyYSA9IGlucHV0PE5vbk51bGxhYmxlPE5ndENhbnZhc09wdGlvbnNbJ2NhbWVyYSddPj4oKTtcblx0bG9va0F0ID0gaW5wdXQ8VmVjdG9yMyB8IFBhcmFtZXRlcnM8VmVjdG9yM1snc2V0J10+PigpO1xuXHRjcmVhdGVkID0gb3V0cHV0PE5ndFN0YXRlPigpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGluaXRSb290ID0gaW5qZWN0Q2FudmFzUm9vdEluaXRpYWxpemVyKCk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cdHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblx0cHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cblx0cHJpdmF0ZSBjYW52YXNWaWV3Q29udGFpbmVyUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkKCdjYW52YXMnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSk7XG5cblx0cHJpdmF0ZSBjb25maWd1cmF0b3I/OiBOZ3RDYW52YXNDb25maWd1cmF0b3I7XG5cdHByaXZhdGUgZ2xFbnZpcm9ubWVudEluamVjdG9yPzogRW52aXJvbm1lbnRJbmplY3Rvcjtcblx0cHJpdmF0ZSBnbFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuXG5cdGNhbnZhc0VsZW1lbnQgPSBzaWduYWw8Q2FudmFzIHwgbnVsbD4obnVsbCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHRhdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgY2FudmFzID0gdGhpcy5jYW52YXNFbGVtZW50KCk7XG5cdFx0XHRcdGlmICghY2FudmFzKSByZXR1cm47XG5cblx0XHRcdFx0Y29uc3QgZHByID0gbWFrZURwcih1bnRyYWNrZWQodGhpcy5kcHIpLCB3aW5kb3cpO1xuXHRcdFx0XHRjb25zdCBjYW52YXNXaWR0aCA9IGNhbnZhcy5jbGllbnRXaWR0aCAqIGRwcjtcblx0XHRcdFx0Y29uc3QgY2FudmFzSGVpZ2h0ID0gY2FudmFzLmNsaWVudEhlaWdodCAqIGRwcjtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihjYW52YXMsIHsgd2lkdGg6IGNhbnZhc1dpZHRoLCBoZWlnaHQ6IGNhbnZhc0hlaWdodCB9KTtcblxuXHRcdFx0XHRjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsMicpO1xuXHRcdFx0XHRjb25zdCBnbCA9IG5ldyBXZWJHTFJlbmRlcmVyKHtcblx0XHRcdFx0XHRjb250ZXh0OiBjb250ZXh0IGFzIHVua25vd24gYXMgV2ViR0xSZW5kZXJpbmdDb250ZXh0LFxuXHRcdFx0XHRcdHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnLFxuXHRcdFx0XHRcdGFudGlhbGlhczogdHJ1ZSxcblx0XHRcdFx0XHRhbHBoYTogdHJ1ZSxcblx0XHRcdFx0XHQuLi51bnRyYWNrZWQodGhpcy5nbCksXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5jb25maWd1cmF0b3IgPSB0aGlzLmluaXRSb290KGNhbnZhcyBhcyB1bmtub3duIGFzIEhUTUxDYW52YXNFbGVtZW50KTtcblx0XHRcdFx0XHR0aGlzLmNvbmZpZ3VyYXRvci5jb25maWd1cmUoe1xuXHRcdFx0XHRcdFx0Z2wsXG5cdFx0XHRcdFx0XHRzaXplOiB7IHdpZHRoOiBjYW52YXNXaWR0aCwgaGVpZ2h0OiBjYW52YXNIZWlnaHQsIHRvcDogMCwgbGVmdDogMCB9LFxuXHRcdFx0XHRcdFx0c2hhZG93czogdW50cmFja2VkKHRoaXMuc2hhZG93cyksXG5cdFx0XHRcdFx0XHRsZWdhY3k6IHVudHJhY2tlZCh0aGlzLmxlZ2FjeSksXG5cdFx0XHRcdFx0XHRsaW5lYXI6IHVudHJhY2tlZCh0aGlzLmxpbmVhciksXG5cdFx0XHRcdFx0XHRmbGF0OiB1bnRyYWNrZWQodGhpcy5mbGF0KSxcblx0XHRcdFx0XHRcdG9ydGhvZ3JhcGhpYzogdW50cmFja2VkKHRoaXMub3J0aG9ncmFwaGljKSxcblx0XHRcdFx0XHRcdGZyYW1lbG9vcDogdW50cmFja2VkKHRoaXMuZnJhbWVsb29wKSxcblx0XHRcdFx0XHRcdHBlcmZvcm1hbmNlOiB1bnRyYWNrZWQodGhpcy5wZXJmb3JtYW5jZSksXG5cdFx0XHRcdFx0XHRkcHI6IHVudHJhY2tlZCh0aGlzLmRwciksXG5cdFx0XHRcdFx0XHRyYXljYXN0ZXI6IHVudHJhY2tlZCh0aGlzLnJheWNhc3RlciksXG5cdFx0XHRcdFx0XHRzY2VuZTogdW50cmFja2VkKHRoaXMuc2NlbmUpLFxuXHRcdFx0XHRcdFx0Y2FtZXJhOiB1bnRyYWNrZWQodGhpcy5jYW1lcmEpLFxuXHRcdFx0XHRcdFx0bG9va0F0OiB1bnRyYWNrZWQodGhpcy5sb29rQXQpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLm5vWm9uZVJlbmRlci5iaW5kKHRoaXMpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0dGhpcy5nbFJlZj8uZGVzdHJveSgpO1xuXHRcdFx0dGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3I/LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuY29uZmlndXJhdG9yPy5kZXN0cm95KCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG5vWm9uZVJlbmRlcigpIHtcblx0XHQvLyBOT1RFOiBkZXN0cm95IHByZXZpb3VzIGluc3RhbmNlcyBpZiBleGlzdGVkXG5cdFx0dGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3I/LmRlc3Ryb3koKTtcblx0XHR0aGlzLmdsUmVmPy5kZXN0cm95KCk7XG5cblx0XHQvLyBOT1RFOiBGbGFnIHRoZSBjYW52YXMgYWN0aXZlLCByZW5kZXJpbmcgd2lsbCBub3cgYmVnaW5cblx0XHR0aGlzLnN0b3JlLnVwZGF0ZSgoc3RhdGUpID0+ICh7IGludGVybmFsOiB7IC4uLnN0YXRlLmludGVybmFsLCBhY3RpdmU6IHRydWUgfSB9KSk7XG5cblx0XHQvLyBlbWl0IGNyZWF0ZWQgZXZlbnQgaWYgb2JzZXJ2ZWRcblx0XHR0aGlzLmNyZWF0ZWQuZW1pdCh0aGlzLnN0b3JlLnNuYXBzaG90KTtcblxuXHRcdHRoaXMuZ2xFbnZpcm9ubWVudEluamVjdG9yID0gY3JlYXRlRW52aXJvbm1lbnRJbmplY3Rvcihcblx0XHRcdFt7IHByb3ZpZGU6IERPQ1VNRU5ULCB1c2VWYWx1ZTogZG9jdW1lbnQgfSwgcHJvdmlkZU5ndFJlbmRlcmVyKHRoaXMuc3RvcmUpXSxcblx0XHRcdHRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcixcblx0XHQpO1xuXHRcdHRoaXMuZ2xSZWYgPSB1bnRyYWNrZWQodGhpcy5jYW52YXNWaWV3Q29udGFpbmVyUmVmKS5jcmVhdGVDb21wb25lbnQodW50cmFja2VkKHRoaXMuc2NlbmVHcmFwaCksIHtcblx0XHRcdGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuZ2xFbnZpcm9ubWVudEluamVjdG9yLFxuXHRcdFx0aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXG5cdFx0fSk7XG5cblx0XHR0aGlzLmdsUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0fVxufVxuIl19
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL25hdGl2ZXNjcmlwdC9zcmMvbGliL2NhbnZhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBRVQseUJBQXlCLEVBQ3pCLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLGdCQUFnQixFQUNoQixNQUFNLEVBRU4sU0FBUyxFQUNULFNBQVMsRUFDVCxnQkFBZ0IsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QyxPQUFPLEVBQ04sMkJBQTJCLEVBQzNCLFdBQVcsRUFDWCxPQUFPLEVBTVAsY0FBYyxFQUdkLGtCQUFrQixFQUNsQixZQUFZLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE2QixhQUFhLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRWpFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7QUFjeEMsTUFBTSxPQUFPLGVBQWU7SUF5QzNCO1FBeENBLGVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFrQztZQUM1RCxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxLQUFLLEtBQUssUUFBUTtvQkFBRSxPQUFPLGNBQWMsQ0FBQztnQkFDOUMsT0FBTyxLQUFLLENBQUM7WUFDZCxDQUFDO1NBQ0QsQ0FBQyxDQUFDO1FBQ0gsT0FBRSxHQUFH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Q3ZCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0E5R1csZUFBZTtrR0FBZixlQUFlLHU3REFKaEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLHVIQXVDQSxnQkFBZ0IsNkNBNUM1RTs7OztFQUlUOzsyRkFLVyxlQUFlO2tCQVozQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQztvQkFDdEUsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnQG5hdGl2ZXNjcmlwdC9jYW52YXMtdGhyZWUnO1xuXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRib29sZWFuQXR0cmlidXRlLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRDb21wb25lbnRSZWYsXG5cdGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IsXG5cdERlc3Ryb3lSZWYsXG5cdEVudmlyb25tZW50SW5qZWN0b3IsXG5cdGluamVjdCxcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHROZ1pvbmUsXG5cdE5PX0VSUk9SU19TQ0hFTUEsXG5cdG91dHB1dCxcblx0VHlwZSxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG5cdFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVnaXN0ZXJFbGVtZW50IH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC9hbmd1bGFyJztcbmltcG9ydCB7IENhbnZhcyB9IGZyb20gJ0BuYXRpdmVzY3JpcHQvY2FudmFzJztcbmltcG9ydCB7XG5cdGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplcixcblx0aW5qZWN0U3RvcmUsXG5cdG1ha2VEcHIsXG5cdE5ndENhbnZhc0NvbmZpZ3VyYXRvcixcblx0Tmd0Q2FudmFzT3B0aW9ucyxcblx0Tmd0RHByLFxuXHROZ3RHTE9wdGlvbnMsXG5cdE5ndFBlcmZvcm1hbmNlLFxuXHROZ3RSb3V0ZWRTY2VuZSxcblx0Tmd0U2l6ZSxcblx0Tmd0U3RhdGUsXG5cdHByb3ZpZGVOZ3RSZW5kZXJlcixcblx0cHJvdmlkZVN0b3JlLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFJheWNhc3RlciwgU2NlbmUsIFZlY3RvcjMsIFdlYkdMUmVuZGVyZXIgfSBmcm9tICd0aHJlZSc7XG5cbnJlZ2lzdGVyRWxlbWVudCgnQ2FudmFzJywgKCkgPT4gQ2FudmFzKTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnTmd0Q2FudmFzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8R3JpZExheW91dD5cblx0XHRcdDxDYW52YXMgI2NhbnZhcyBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG9cIiAocmVhZHkpPVwib25SZWFkeSgkZXZlbnQpXCI+PC9DYW52YXM+XG5cdFx0PC9HcmlkTGF5b3V0PlxuXHRgLFxuXHRwcm92aWRlcnM6IFt7IHByb3ZpZGU6IERPQ1VNRU5ULCB1c2VWYWx1ZTogZG9jdW1lbnQgfSwgcHJvdmlkZVN0b3JlKCldLFxuXHRzY2hlbWFzOiBbTk9fRVJST1JTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RDYW52YXNOYXRpdmUge1xuXHRzY2VuZUdyYXBoID0gaW5wdXQucmVxdWlyZWQ8VHlwZTxhbnk+LCBUeXBlPGFueT4gfCAncm91dGVkJz4oe1xuXHRcdHRyYW5zZm9ybTogKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICdyb3V0ZWQnKSByZXR1cm4gTmd0Um91dGVkU2NlbmU7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0fSk7XG5cdGdsID0gaW5wdXQ8Tmd0R0xPcHRpb25zPigpO1xuXHRzaXplID0gaW5wdXQ8Tmd0U2l6ZT4oKTtcblx0c2hhZG93cyA9IGlucHV0KGZhbHNlLCB7XG5cdFx0dHJhbnNmb3JtOiAodmFsdWUpID0+IHtcblx0XHRcdGlmICh2YWx1ZSA9PT0gJycpIHJldHVybiBib29sZWFuQXR0cmlidXRlKHZhbHVlKTtcblx0XHRcdHJldHVybiB2YWx1ZSBhcyBOb25OdWxsYWJsZTxOZ3RDYW52YXNPcHRpb25zWydzaGFkb3dzJ10+O1xuXHRcdH0sXG5cdH0pO1xuXHRsZWdhY3kgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cdGxpbmVhciA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblx0ZmxhdCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblx0b3J0aG9ncmFwaGljID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXHRmcmFtZWxvb3AgPSBpbnB1dDxOb25OdWxsYWJsZTxOZ3RDYW52YXNPcHRpb25zWydmcmFtZWxvb3AnXT4+KCdhbHdheXMnKTtcblx0cGVyZm9ybWFuY2UgPSBpbnB1dDxQYXJ0aWFsPE9taXQ8Tmd0UGVyZm9ybWFuY2UsICdyZWdyZXNzJz4+PigpO1xuXHRkcHIgPSBpbnB1dDxOZ3REcHI+KFsxLCAyXSk7XG5cdHJheWNhc3RlciA9IGlucHV0PFBhcnRpYWw8UmF5Y2FzdGVyPj4oKTtcblx0c2NlbmUgPSBpbnB1dDxTY2VuZSB8IFBhcnRpYWw8U2NlbmU+PigpO1xuXHRjYW1lcmEgPSBpbnB1dDxOb25OdWxsYWJsZTxOZ3RDYW52YXNPcHRpb25zWydjYW1lcmEnXT4+KCk7XG5cdGxvb2tBdCA9IGlucHV0PFZlY3RvcjMgfCBQYXJhbWV0ZXJzPFZlY3RvcjNbJ3NldCddPj4oKTtcblx0Y3JlYXRlZCA9IG91dHB1dDxOZ3RTdGF0ZT4oKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbml0Um9vdCA9IGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplcigpO1xuXHRwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0cHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuXHRwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cdHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG5cdHByaXZhdGUgY2FudmFzVmlld0NvbnRhaW5lclJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZCgnY2FudmFzJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pO1xuXG5cdHByaXZhdGUgY29uZmlndXJhdG9yPzogTmd0Q2FudmFzQ29uZmlndXJhdG9yO1xuXHRwcml2YXRlIGdsRW52aXJvbm1lbnRJbmplY3Rvcj86IEVudmlyb25tZW50SW5qZWN0b3I7XG5cdHByaXZhdGUgZ2xSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcblx0XHRcdHRoaXMuZ2xSZWY/LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuZ2xFbnZpcm9ubWVudEluamVjdG9yPy5kZXN0cm95KCk7XG5cdFx0XHR0aGlzLmNvbmZpZ3VyYXRvcj8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0b25SZWFkeShldmVudDogYW55KSB7XG5cdFx0Y29uc3QgY2FudmFzID0gZXZlbnQub2JqZWN0O1xuXHRcdGNvbnN0IGRwciA9IG1ha2VEcHIodW50cmFja2VkKHRoaXMuZHByKSwgd2luZG93KTtcblx0XHRjb25zdCBjYW52YXNXaWR0aCA9IGNhbnZhcy5jbGllbnRXaWR0aCAqIGRwcjtcblx0XHRjb25zdCBjYW52YXNIZWlnaHQgPSBjYW52YXMuY2xpZW50SGVpZ2h0ICogZHByO1xuXHRcdE9iamVjdC5hc3NpZ24oY2FudmFzLCB7IHdpZHRoOiBjYW52YXNXaWR0aCwgaGVpZ2h0OiBjYW52YXNIZWlnaHQgfSk7XG5cblx0XHRjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsMicpO1xuXHRcdGNvbnN0IGdsID0gbmV3IFdlYkdMUmVuZGVyZXIoe1xuXHRcdFx0Y2FudmFzLFxuXHRcdFx0Y29udGV4dDogY29udGV4dCBhcyB1bmtub3duIGFzIFdlYkdMUmVuZGVyaW5nQ29udGV4dCxcblx0XHRcdHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnLFxuXHRcdFx0YW50aWFsaWFzOiB0cnVlLFxuXHRcdFx0YWxwaGE6IHRydWUsXG5cdFx0XHQuLi51bnRyYWNrZWQodGhpcy5nbCksXG5cdFx0fSk7XG5cdFx0Z2wuc2V0U2l6ZShjYW52YXNXaWR0aCwgY2FudmFzSGVpZ2h0KTtcblxuXHRcdHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG5cdFx0XHR0aGlzLmNvbmZpZ3VyYXRvciA9IHRoaXMuaW5pdFJvb3QoY2FudmFzKTtcblx0XHRcdHRoaXMuY29uZmlndXJhdG9yLmNvbmZpZ3VyZSh7XG5cdFx0XHRcdGdsLFxuXHRcdFx0XHRzaXplOiB7IHdpZHRoOiBjYW52YXNXaWR0aCwgaGVpZ2h0OiBjYW52YXNIZWlnaHQsIHRvcDogMCwgbGVmdDogMCB9LFxuXHRcdFx0XHRzaGFkb3dzOiB1bnRyYWNrZWQodGhpcy5zaGFkb3dzKSxcblx0XHRcdFx0bGVnYWN5OiB1bnRyYWNrZWQodGhpcy5sZWdhY3kpLFxuXHRcdFx0XHRsaW5lYXI6IHVudHJhY2tlZCh0aGlzLmxpbmVhciksXG5cdFx0XHRcdGZsYXQ6IHVudHJhY2tlZCh0aGlzLmZsYXQpLFxuXHRcdFx0XHRvcnRob2dyYXBoaWM6IHVudHJhY2tlZCh0aGlzLm9ydGhvZ3JhcGhpYyksXG5cdFx0XHRcdGZyYW1lbG9vcDogdW50cmFja2VkKHRoaXMuZnJhbWVsb29wKSxcblx0XHRcdFx0cGVyZm9ybWFuY2U6IHVudHJhY2tlZCh0aGlzLnBlcmZvcm1hbmNlKSxcblx0XHRcdFx0ZHByOiB1bnRyYWNrZWQodGhpcy5kcHIpLFxuXHRcdFx0XHRyYXljYXN0ZXI6IHVudHJhY2tlZCh0aGlzLnJheWNhc3RlciksXG5cdFx0XHRcdHNjZW5lOiB1bnRyYWNrZWQodGhpcy5zY2VuZSksXG5cdFx0XHRcdGNhbWVyYTogdW50cmFja2VkKHRoaXMuY2FtZXJhKSxcblx0XHRcdFx0bG9va0F0OiB1bnRyYWNrZWQodGhpcy5sb29rQXQpLFxuXHRcdFx0fSk7XG5cdFx0XHR1bnRyYWNrZWQodGhpcy5ub1pvbmVSZW5kZXIuYmluZCh0aGlzKSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG5vWm9uZVJlbmRlcigpIHtcblx0XHQvLyBOT1RFOiBkZXN0cm95IHByZXZpb3VzIGluc3RhbmNlcyBpZiBleGlzdGVkXG5cdFx0dGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3I/LmRlc3Ryb3koKTtcblx0XHR0aGlzLmdsUmVmPy5kZXN0cm95KCk7XG5cblx0XHQvLyBOT1RFOiBGbGFnIHRoZSBjYW52YXMgYWN0aXZlLCByZW5kZXJpbmcgd2lsbCBub3cgYmVnaW5cblx0XHR0aGlzLnN0b3JlLnVwZGF0ZSgoc3RhdGUpID0+ICh7IGludGVybmFsOiB7IC4uLnN0YXRlLmludGVybmFsLCBhY3RpdmU6IHRydWUgfSB9KSk7XG5cblx0XHQvLyBlbWl0IGNyZWF0ZWQgZXZlbnQgaWYgb2JzZXJ2ZWRcblx0XHR0aGlzLmNyZWF0ZWQuZW1pdCh0aGlzLnN0b3JlLnNuYXBzaG90KTtcblxuXHRcdHRoaXMuZ2xFbnZpcm9ubWVudEluamVjdG9yID0gY3JlYXRlRW52aXJvbm1lbnRJbmplY3Rvcihcblx0XHRcdFt7IHByb3ZpZGU6IERPQ1VNRU5ULCB1c2VWYWx1ZTogZG9jdW1lbnQgfSwgcHJvdmlkZU5ndFJlbmRlcmVyKHRoaXMuc3RvcmUpXSxcblx0XHRcdHRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcixcblx0XHQpO1xuXHRcdHRoaXMuZ2xSZWYgPSB1bnRyYWNrZWQodGhpcy5jYW52YXNWaWV3Q29udGFpbmVyUmVmKS5jcmVhdGVDb21wb25lbnQodW50cmFja2VkKHRoaXMuc2NlbmVHcmFwaCksIHtcblx0XHRcdGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuZ2xFbnZpcm9ubWVudEluamVjdG9yLFxuXHRcdFx0aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXG5cdFx0fSk7XG5cblx0XHR0aGlzLmdsUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0fVxufVxuIl19
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import '@nativescript/canvas-three';
|
|
2
2
|
import { DOCUMENT } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { input, booleanAttribute, output, inject, Injector, EnvironmentInjector, DestroyRef, NgZone, viewChild, ViewContainerRef,
|
|
4
|
+
import { input, booleanAttribute, output, inject, Injector, EnvironmentInjector, DestroyRef, NgZone, viewChild, ViewContainerRef, untracked, createEnvironmentInjector, Component, NO_ERRORS_SCHEMA, ChangeDetectionStrategy } from '@angular/core';
|
|
5
5
|
import { registerElement } from '@nativescript/angular';
|
|
6
6
|
import { Canvas } from '@nativescript/canvas';
|
|
7
7
|
import { NgtRoutedScene, injectStore, injectCanvasRootInitializer, makeDpr, provideNgtRenderer, provideStore } from 'angular-three';
|
|
8
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
9
8
|
import { WebGLRenderer } from 'three';
|
|
10
9
|
|
|
11
10
|
registerElement('Canvas', () => Canvas);
|
|
@@ -46,53 +45,49 @@ class NgtCanvasNative {
|
|
|
46
45
|
this.destroyRef = inject(DestroyRef);
|
|
47
46
|
this.zone = inject(NgZone);
|
|
48
47
|
this.canvasViewContainerRef = viewChild.required('canvas', { read: ViewContainerRef });
|
|
49
|
-
this.canvasElement = signal(null);
|
|
50
|
-
const autoEffect = injectAutoEffect();
|
|
51
|
-
afterNextRender(() => {
|
|
52
|
-
autoEffect(() => {
|
|
53
|
-
const canvas = this.canvasElement();
|
|
54
|
-
if (!canvas)
|
|
55
|
-
return;
|
|
56
|
-
const dpr = makeDpr(untracked(this.dpr), window);
|
|
57
|
-
const canvasWidth = canvas.clientWidth * dpr;
|
|
58
|
-
const canvasHeight = canvas.clientHeight * dpr;
|
|
59
|
-
Object.assign(canvas, { width: canvasWidth, height: canvasHeight });
|
|
60
|
-
const context = canvas.getContext('webgl2');
|
|
61
|
-
const gl = new WebGLRenderer({
|
|
62
|
-
context: context,
|
|
63
|
-
powerPreference: 'high-performance',
|
|
64
|
-
antialias: true,
|
|
65
|
-
alpha: true,
|
|
66
|
-
...untracked(this.gl),
|
|
67
|
-
});
|
|
68
|
-
this.zone.runOutsideAngular(() => {
|
|
69
|
-
this.configurator = this.initRoot(canvas);
|
|
70
|
-
this.configurator.configure({
|
|
71
|
-
gl,
|
|
72
|
-
size: { width: canvasWidth, height: canvasHeight, top: 0, left: 0 },
|
|
73
|
-
shadows: untracked(this.shadows),
|
|
74
|
-
legacy: untracked(this.legacy),
|
|
75
|
-
linear: untracked(this.linear),
|
|
76
|
-
flat: untracked(this.flat),
|
|
77
|
-
orthographic: untracked(this.orthographic),
|
|
78
|
-
frameloop: untracked(this.frameloop),
|
|
79
|
-
performance: untracked(this.performance),
|
|
80
|
-
dpr: untracked(this.dpr),
|
|
81
|
-
raycaster: untracked(this.raycaster),
|
|
82
|
-
scene: untracked(this.scene),
|
|
83
|
-
camera: untracked(this.camera),
|
|
84
|
-
lookAt: untracked(this.lookAt),
|
|
85
|
-
});
|
|
86
|
-
untracked(this.noZoneRender.bind(this));
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
48
|
this.destroyRef.onDestroy(() => {
|
|
91
49
|
this.glRef?.destroy();
|
|
92
50
|
this.glEnvironmentInjector?.destroy();
|
|
93
51
|
this.configurator?.destroy();
|
|
94
52
|
});
|
|
95
53
|
}
|
|
54
|
+
onReady(event) {
|
|
55
|
+
const canvas = event.object;
|
|
56
|
+
const dpr = makeDpr(untracked(this.dpr), window);
|
|
57
|
+
const canvasWidth = canvas.clientWidth * dpr;
|
|
58
|
+
const canvasHeight = canvas.clientHeight * dpr;
|
|
59
|
+
Object.assign(canvas, { width: canvasWidth, height: canvasHeight });
|
|
60
|
+
const context = canvas.getContext('webgl2');
|
|
61
|
+
const gl = new WebGLRenderer({
|
|
62
|
+
canvas,
|
|
63
|
+
context: context,
|
|
64
|
+
powerPreference: 'high-performance',
|
|
65
|
+
antialias: true,
|
|
66
|
+
alpha: true,
|
|
67
|
+
...untracked(this.gl),
|
|
68
|
+
});
|
|
69
|
+
gl.setSize(canvasWidth, canvasHeight);
|
|
70
|
+
this.zone.runOutsideAngular(() => {
|
|
71
|
+
this.configurator = this.initRoot(canvas);
|
|
72
|
+
this.configurator.configure({
|
|
73
|
+
gl,
|
|
74
|
+
size: { width: canvasWidth, height: canvasHeight, top: 0, left: 0 },
|
|
75
|
+
shadows: untracked(this.shadows),
|
|
76
|
+
legacy: untracked(this.legacy),
|
|
77
|
+
linear: untracked(this.linear),
|
|
78
|
+
flat: untracked(this.flat),
|
|
79
|
+
orthographic: untracked(this.orthographic),
|
|
80
|
+
frameloop: untracked(this.frameloop),
|
|
81
|
+
performance: untracked(this.performance),
|
|
82
|
+
dpr: untracked(this.dpr),
|
|
83
|
+
raycaster: untracked(this.raycaster),
|
|
84
|
+
scene: untracked(this.scene),
|
|
85
|
+
camera: untracked(this.camera),
|
|
86
|
+
lookAt: untracked(this.lookAt),
|
|
87
|
+
});
|
|
88
|
+
untracked(this.noZoneRender.bind(this));
|
|
89
|
+
});
|
|
90
|
+
}
|
|
96
91
|
noZoneRender() {
|
|
97
92
|
// NOTE: destroy previous instances if existed
|
|
98
93
|
this.glEnvironmentInjector?.destroy();
|
|
@@ -111,7 +106,7 @@ class NgtCanvasNative {
|
|
|
111
106
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtCanvasNative, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
107
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtCanvasNative, isStandalone: true, selector: "NgtCanvas", inputs: { sceneGraph: { classPropertyName: "sceneGraph", publicName: "sceneGraph", isSignal: true, isRequired: true, transformFunction: null }, gl: { classPropertyName: "gl", publicName: "gl", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shadows: { classPropertyName: "shadows", publicName: "shadows", isSignal: true, isRequired: false, transformFunction: null }, legacy: { classPropertyName: "legacy", publicName: "legacy", isSignal: true, isRequired: false, transformFunction: null }, linear: { classPropertyName: "linear", publicName: "linear", isSignal: true, isRequired: false, transformFunction: null }, flat: { classPropertyName: "flat", publicName: "flat", isSignal: true, isRequired: false, transformFunction: null }, orthographic: { classPropertyName: "orthographic", publicName: "orthographic", isSignal: true, isRequired: false, transformFunction: null }, frameloop: { classPropertyName: "frameloop", publicName: "frameloop", isSignal: true, isRequired: false, transformFunction: null }, performance: { classPropertyName: "performance", publicName: "performance", isSignal: true, isRequired: false, transformFunction: null }, dpr: { classPropertyName: "dpr", publicName: "dpr", isSignal: true, isRequired: false, transformFunction: null }, raycaster: { classPropertyName: "raycaster", publicName: "raycaster", isSignal: true, isRequired: false, transformFunction: null }, scene: { classPropertyName: "scene", publicName: "scene", isSignal: true, isRequired: false, transformFunction: null }, camera: { classPropertyName: "camera", publicName: "camera", isSignal: true, isRequired: false, transformFunction: null }, lookAt: { classPropertyName: "lookAt", publicName: "lookAt", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { created: "created" }, providers: [{ provide: DOCUMENT, useValue: document }, provideStore()], viewQueries: [{ propertyName: "canvasViewContainerRef", first: true, predicate: ["canvas"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
|
|
113
108
|
<GridLayout>
|
|
114
|
-
<Canvas #canvas style="width: 100%; height: auto" (ready)="
|
|
109
|
+
<Canvas #canvas style="width: 100%; height: auto" (ready)="onReady($event)"></Canvas>
|
|
115
110
|
</GridLayout>
|
|
116
111
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
117
112
|
}
|
|
@@ -122,7 +117,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
122
117
|
standalone: true,
|
|
123
118
|
template: `
|
|
124
119
|
<GridLayout>
|
|
125
|
-
<Canvas #canvas style="width: 100%; height: auto" (ready)="
|
|
120
|
+
<Canvas #canvas style="width: 100%; height: auto" (ready)="onReady($event)"></Canvas>
|
|
126
121
|
</GridLayout>
|
|
127
122
|
`,
|
|
128
123
|
providers: [{ provide: DOCUMENT, useValue: document }, provideStore()],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-nativescript.mjs","sources":["../../../../libs/core/nativescript/src/lib/canvas.ts","../../../../libs/core/nativescript/src/angular-three-nativescript.ts"],"sourcesContent":["import '@nativescript/canvas-three';\n\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tComponentRef,\n\tcreateEnvironmentInjector,\n\tDestroyRef,\n\tEnvironmentInjector,\n\tinject,\n\tInjector,\n\tinput,\n\tNgZone,\n\tNO_ERRORS_SCHEMA,\n\toutput,\n\tsignal,\n\tType,\n\tuntracked,\n\tviewChild,\n\tViewContainerRef,\n} from '@angular/core';\nimport { registerElement } from '@nativescript/angular';\nimport { Canvas } from '@nativescript/canvas';\nimport {\n\tinjectCanvasRootInitializer,\n\tinjectStore,\n\tmakeDpr,\n\tNgtCanvasConfigurator,\n\tNgtCanvasOptions,\n\tNgtDpr,\n\tNgtGLOptions,\n\tNgtPerformance,\n\tNgtRoutedScene,\n\tNgtSize,\n\tNgtState,\n\tprovideNgtRenderer,\n\tprovideStore,\n} from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { Raycaster, Scene, Vector3, WebGLRenderer } from 'three';\n\nregisterElement('Canvas', () => Canvas);\n\n@Component({\n\tselector: 'NgtCanvas',\n\tstandalone: true,\n\ttemplate: `\n\t\t<GridLayout>\n\t\t\t<Canvas #canvas style=\"width: 100%; height: auto\" (ready)=\"canvasElement.set($any($event).object)\"></Canvas>\n\t\t</GridLayout>\n\t`,\n\tproviders: [{ provide: DOCUMENT, useValue: document }, provideStore()],\n\tschemas: [NO_ERRORS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtCanvasNative {\n\tsceneGraph = input.required<Type<any>, Type<any> | 'routed'>({\n\t\ttransform: (value) => {\n\t\t\tif (value === 'routed') return NgtRoutedScene;\n\t\t\treturn value;\n\t\t},\n\t});\n\tgl = input<NgtGLOptions>();\n\tsize = input<NgtSize>();\n\tshadows = input(false, {\n\t\ttransform: (value) => {\n\t\t\tif (value === '') return booleanAttribute(value);\n\t\t\treturn value as NonNullable<NgtCanvasOptions['shadows']>;\n\t\t},\n\t});\n\tlegacy = input(false, { transform: booleanAttribute });\n\tlinear = input(false, { transform: booleanAttribute });\n\tflat = input(false, { transform: booleanAttribute });\n\torthographic = input(false, { transform: booleanAttribute });\n\tframeloop = input<NonNullable<NgtCanvasOptions['frameloop']>>('always');\n\tperformance = input<Partial<Omit<NgtPerformance, 'regress'>>>();\n\tdpr = input<NgtDpr>([1, 2]);\n\traycaster = input<Partial<Raycaster>>();\n\tscene = input<Scene | Partial<Scene>>();\n\tcamera = input<NonNullable<NgtCanvasOptions['camera']>>();\n\tlookAt = input<Vector3 | Parameters<Vector3['set']>>();\n\tcreated = output<NgtState>();\n\n\tprivate store = injectStore();\n\tprivate initRoot = injectCanvasRootInitializer();\n\tprivate injector = inject(Injector);\n\tprivate environmentInjector = inject(EnvironmentInjector);\n\tprivate destroyRef = inject(DestroyRef);\n\tprivate zone = inject(NgZone);\n\n\tprivate canvasViewContainerRef = viewChild.required('canvas', { read: ViewContainerRef });\n\n\tprivate configurator?: NgtCanvasConfigurator;\n\tprivate glEnvironmentInjector?: EnvironmentInjector;\n\tprivate glRef?: ComponentRef<any>;\n\n\tcanvasElement = signal<Canvas | null>(null);\n\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst canvas = this.canvasElement();\n\t\t\t\tif (!canvas) return;\n\n\t\t\t\tconst dpr = makeDpr(untracked(this.dpr), window);\n\t\t\t\tconst canvasWidth = canvas.clientWidth * dpr;\n\t\t\t\tconst canvasHeight = canvas.clientHeight * dpr;\n\t\t\t\tObject.assign(canvas, { width: canvasWidth, height: canvasHeight });\n\n\t\t\t\tconst context = canvas.getContext('webgl2');\n\t\t\t\tconst gl = new WebGLRenderer({\n\t\t\t\t\tcontext: context as unknown as WebGLRenderingContext,\n\t\t\t\t\tpowerPreference: 'high-performance',\n\t\t\t\t\tantialias: true,\n\t\t\t\t\talpha: true,\n\t\t\t\t\t...untracked(this.gl),\n\t\t\t\t});\n\n\t\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\t\tthis.configurator = this.initRoot(canvas as unknown as HTMLCanvasElement);\n\t\t\t\t\tthis.configurator.configure({\n\t\t\t\t\t\tgl,\n\t\t\t\t\t\tsize: { width: canvasWidth, height: canvasHeight, top: 0, left: 0 },\n\t\t\t\t\t\tshadows: untracked(this.shadows),\n\t\t\t\t\t\tlegacy: untracked(this.legacy),\n\t\t\t\t\t\tlinear: untracked(this.linear),\n\t\t\t\t\t\tflat: untracked(this.flat),\n\t\t\t\t\t\torthographic: untracked(this.orthographic),\n\t\t\t\t\t\tframeloop: untracked(this.frameloop),\n\t\t\t\t\t\tperformance: untracked(this.performance),\n\t\t\t\t\t\tdpr: untracked(this.dpr),\n\t\t\t\t\t\traycaster: untracked(this.raycaster),\n\t\t\t\t\t\tscene: untracked(this.scene),\n\t\t\t\t\t\tcamera: untracked(this.camera),\n\t\t\t\t\t\tlookAt: untracked(this.lookAt),\n\t\t\t\t\t});\n\t\t\t\t\tuntracked(this.noZoneRender.bind(this));\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tthis.destroyRef.onDestroy(() => {\n\t\t\tthis.glRef?.destroy();\n\t\t\tthis.glEnvironmentInjector?.destroy();\n\t\t\tthis.configurator?.destroy();\n\t\t});\n\t}\n\n\tprivate noZoneRender() {\n\t\t// NOTE: destroy previous instances if existed\n\t\tthis.glEnvironmentInjector?.destroy();\n\t\tthis.glRef?.destroy();\n\n\t\t// NOTE: Flag the canvas active, rendering will now begin\n\t\tthis.store.update((state) => ({ internal: { ...state.internal, active: true } }));\n\n\t\t// emit created event if observed\n\t\tthis.created.emit(this.store.snapshot);\n\n\t\tthis.glEnvironmentInjector = createEnvironmentInjector(\n\t\t\t[{ provide: DOCUMENT, useValue: document }, provideNgtRenderer(this.store)],\n\t\t\tthis.environmentInjector,\n\t\t);\n\t\tthis.glRef = untracked(this.canvasViewContainerRef).createComponent(untracked(this.sceneGraph), {\n\t\t\tenvironmentInjector: this.glEnvironmentInjector,\n\t\t\tinjector: this.injector,\n\t\t});\n\n\t\tthis.glRef.changeDetectorRef.detectChanges();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-nativescript.mjs","sources":["../../../../libs/core/nativescript/src/lib/canvas.ts","../../../../libs/core/nativescript/src/angular-three-nativescript.ts"],"sourcesContent":["import '@nativescript/canvas-three';\n\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tComponentRef,\n\tcreateEnvironmentInjector,\n\tDestroyRef,\n\tEnvironmentInjector,\n\tinject,\n\tInjector,\n\tinput,\n\tNgZone,\n\tNO_ERRORS_SCHEMA,\n\toutput,\n\tType,\n\tuntracked,\n\tviewChild,\n\tViewContainerRef,\n} from '@angular/core';\nimport { registerElement } from '@nativescript/angular';\nimport { Canvas } from '@nativescript/canvas';\nimport {\n\tinjectCanvasRootInitializer,\n\tinjectStore,\n\tmakeDpr,\n\tNgtCanvasConfigurator,\n\tNgtCanvasOptions,\n\tNgtDpr,\n\tNgtGLOptions,\n\tNgtPerformance,\n\tNgtRoutedScene,\n\tNgtSize,\n\tNgtState,\n\tprovideNgtRenderer,\n\tprovideStore,\n} from 'angular-three';\nimport { Raycaster, Scene, Vector3, WebGLRenderer } from 'three';\n\nregisterElement('Canvas', () => Canvas);\n\n@Component({\n\tselector: 'NgtCanvas',\n\tstandalone: true,\n\ttemplate: `\n\t\t<GridLayout>\n\t\t\t<Canvas #canvas style=\"width: 100%; height: auto\" (ready)=\"onReady($event)\"></Canvas>\n\t\t</GridLayout>\n\t`,\n\tproviders: [{ provide: DOCUMENT, useValue: document }, provideStore()],\n\tschemas: [NO_ERRORS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtCanvasNative {\n\tsceneGraph = input.required<Type<any>, Type<any> | 'routed'>({\n\t\ttransform: (value) => {\n\t\t\tif (value === 'routed') return NgtRoutedScene;\n\t\t\treturn value;\n\t\t},\n\t});\n\tgl = input<NgtGLOptions>();\n\tsize = input<NgtSize>();\n\tshadows = input(false, {\n\t\ttransform: (value) => {\n\t\t\tif (value === '') return booleanAttribute(value);\n\t\t\treturn value as NonNullable<NgtCanvasOptions['shadows']>;\n\t\t},\n\t});\n\tlegacy = input(false, { transform: booleanAttribute });\n\tlinear = input(false, { transform: booleanAttribute });\n\tflat = input(false, { transform: booleanAttribute });\n\torthographic = input(false, { transform: booleanAttribute });\n\tframeloop = input<NonNullable<NgtCanvasOptions['frameloop']>>('always');\n\tperformance = input<Partial<Omit<NgtPerformance, 'regress'>>>();\n\tdpr = input<NgtDpr>([1, 2]);\n\traycaster = input<Partial<Raycaster>>();\n\tscene = input<Scene | Partial<Scene>>();\n\tcamera = input<NonNullable<NgtCanvasOptions['camera']>>();\n\tlookAt = input<Vector3 | Parameters<Vector3['set']>>();\n\tcreated = output<NgtState>();\n\n\tprivate store = injectStore();\n\tprivate initRoot = injectCanvasRootInitializer();\n\tprivate injector = inject(Injector);\n\tprivate environmentInjector = inject(EnvironmentInjector);\n\tprivate destroyRef = inject(DestroyRef);\n\tprivate zone = inject(NgZone);\n\n\tprivate canvasViewContainerRef = viewChild.required('canvas', { read: ViewContainerRef });\n\n\tprivate configurator?: NgtCanvasConfigurator;\n\tprivate glEnvironmentInjector?: EnvironmentInjector;\n\tprivate glRef?: ComponentRef<any>;\n\n\tconstructor() {\n\t\tthis.destroyRef.onDestroy(() => {\n\t\t\tthis.glRef?.destroy();\n\t\t\tthis.glEnvironmentInjector?.destroy();\n\t\t\tthis.configurator?.destroy();\n\t\t});\n\t}\n\n\tonReady(event: any) {\n\t\tconst canvas = event.object;\n\t\tconst dpr = makeDpr(untracked(this.dpr), window);\n\t\tconst canvasWidth = canvas.clientWidth * dpr;\n\t\tconst canvasHeight = canvas.clientHeight * dpr;\n\t\tObject.assign(canvas, { width: canvasWidth, height: canvasHeight });\n\n\t\tconst context = canvas.getContext('webgl2');\n\t\tconst gl = new WebGLRenderer({\n\t\t\tcanvas,\n\t\t\tcontext: context as unknown as WebGLRenderingContext,\n\t\t\tpowerPreference: 'high-performance',\n\t\t\tantialias: true,\n\t\t\talpha: true,\n\t\t\t...untracked(this.gl),\n\t\t});\n\t\tgl.setSize(canvasWidth, canvasHeight);\n\n\t\tthis.zone.runOutsideAngular(() => {\n\t\t\tthis.configurator = this.initRoot(canvas);\n\t\t\tthis.configurator.configure({\n\t\t\t\tgl,\n\t\t\t\tsize: { width: canvasWidth, height: canvasHeight, top: 0, left: 0 },\n\t\t\t\tshadows: untracked(this.shadows),\n\t\t\t\tlegacy: untracked(this.legacy),\n\t\t\t\tlinear: untracked(this.linear),\n\t\t\t\tflat: untracked(this.flat),\n\t\t\t\torthographic: untracked(this.orthographic),\n\t\t\t\tframeloop: untracked(this.frameloop),\n\t\t\t\tperformance: untracked(this.performance),\n\t\t\t\tdpr: untracked(this.dpr),\n\t\t\t\traycaster: untracked(this.raycaster),\n\t\t\t\tscene: untracked(this.scene),\n\t\t\t\tcamera: untracked(this.camera),\n\t\t\t\tlookAt: untracked(this.lookAt),\n\t\t\t});\n\t\t\tuntracked(this.noZoneRender.bind(this));\n\t\t});\n\t}\n\n\tprivate noZoneRender() {\n\t\t// NOTE: destroy previous instances if existed\n\t\tthis.glEnvironmentInjector?.destroy();\n\t\tthis.glRef?.destroy();\n\n\t\t// NOTE: Flag the canvas active, rendering will now begin\n\t\tthis.store.update((state) => ({ internal: { ...state.internal, active: true } }));\n\n\t\t// emit created event if observed\n\t\tthis.created.emit(this.store.snapshot);\n\n\t\tthis.glEnvironmentInjector = createEnvironmentInjector(\n\t\t\t[{ provide: DOCUMENT, useValue: document }, provideNgtRenderer(this.store)],\n\t\t\tthis.environmentInjector,\n\t\t);\n\t\tthis.glRef = untracked(this.canvasViewContainerRef).createComponent(untracked(this.sceneGraph), {\n\t\t\tenvironmentInjector: this.glEnvironmentInjector,\n\t\t\tinjector: this.injector,\n\t\t});\n\n\t\tthis.glRef.changeDetectorRef.detectChanges();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1757,7 +1757,7 @@ class NgtRenderer {
|
|
|
1757
1757
|
removeChild(parent, oldChild, isHostElement) {
|
|
1758
1758
|
if (parent == null) {
|
|
1759
1759
|
parent = (untracked(() => getLocalState(oldChild)?.parent?.()) ||
|
|
1760
|
-
oldChild.__ngt_renderer__[1 /* NgtRendererClassId.parent */]);
|
|
1760
|
+
oldChild.__ngt_renderer__?.[1 /* NgtRendererClassId.parent */]);
|
|
1761
1761
|
}
|
|
1762
1762
|
const cRS = oldChild.__ngt_renderer__;
|
|
1763
1763
|
// if parent is still falsy, we don't know what to do with the parent.
|
|
@@ -2670,37 +2670,34 @@ function load(loaderConstructorFactory, inputs, { extensions, onLoad, onProgress
|
|
|
2670
2670
|
}
|
|
2671
2671
|
function _injectLoader(loaderConstructorFactory, inputs, { extensions, onProgress, onLoad, injector, } = {}) {
|
|
2672
2672
|
return assertInjector(_injectLoader, injector, () => {
|
|
2673
|
-
const autoEffect = injectAutoEffect();
|
|
2674
2673
|
const response = signal(null);
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
onLoad: onLoad,
|
|
2680
|
-
});
|
|
2681
|
-
autoEffect(() => {
|
|
2682
|
-
const originalUrls = inputs();
|
|
2683
|
-
const cachedEffect = effector();
|
|
2684
|
-
if (cachedEffect === null) {
|
|
2685
|
-
response.set(null);
|
|
2686
|
-
}
|
|
2687
|
-
else {
|
|
2688
|
-
Promise.all(cachedEffect).then((results) => {
|
|
2689
|
-
response.update(() => {
|
|
2690
|
-
if (Array.isArray(originalUrls))
|
|
2691
|
-
return results;
|
|
2692
|
-
if (typeof originalUrls === 'string')
|
|
2693
|
-
return results[0];
|
|
2694
|
-
const keys = Object.keys(originalUrls);
|
|
2695
|
-
return keys.reduce((result, key) => {
|
|
2696
|
-
result[key] = results[keys.indexOf(key)];
|
|
2697
|
-
return result;
|
|
2698
|
-
}, {});
|
|
2699
|
-
});
|
|
2700
|
-
});
|
|
2701
|
-
}
|
|
2702
|
-
}, { allowSignalWrites: true });
|
|
2674
|
+
const effector = load(loaderConstructorFactory, inputs, {
|
|
2675
|
+
extensions,
|
|
2676
|
+
onProgress,
|
|
2677
|
+
onLoad: onLoad,
|
|
2703
2678
|
});
|
|
2679
|
+
effect(() => {
|
|
2680
|
+
const originalUrls = inputs();
|
|
2681
|
+
const cachedEffect = effector();
|
|
2682
|
+
if (cachedEffect === null && untracked(response) !== null) {
|
|
2683
|
+
response.set(null);
|
|
2684
|
+
}
|
|
2685
|
+
else if (cachedEffect !== null) {
|
|
2686
|
+
Promise.all(cachedEffect).then((results) => {
|
|
2687
|
+
response.update(() => {
|
|
2688
|
+
if (Array.isArray(originalUrls))
|
|
2689
|
+
return results;
|
|
2690
|
+
if (typeof originalUrls === 'string')
|
|
2691
|
+
return results[0];
|
|
2692
|
+
const keys = Object.keys(originalUrls);
|
|
2693
|
+
return keys.reduce((result, key) => {
|
|
2694
|
+
result[key] = results[keys.indexOf(key)];
|
|
2695
|
+
return result;
|
|
2696
|
+
}, {});
|
|
2697
|
+
});
|
|
2698
|
+
});
|
|
2699
|
+
}
|
|
2700
|
+
}, { allowSignalWrites: true });
|
|
2704
2701
|
return response.asReadonly();
|
|
2705
2702
|
});
|
|
2706
2703
|
}
|
|
@@ -3036,22 +3033,25 @@ class NgtObjectEvents {
|
|
|
3036
3033
|
const injector = inject(Injector);
|
|
3037
3034
|
afterNextRender(() => {
|
|
3038
3035
|
injectObjectEvents(this.ngtObjectEvents, {
|
|
3039
|
-
click:
|
|
3040
|
-
dblclick:
|
|
3041
|
-
contextmenu:
|
|
3042
|
-
pointerup:
|
|
3043
|
-
pointerdown:
|
|
3044
|
-
pointerover:
|
|
3045
|
-
pointerout:
|
|
3046
|
-
pointerenter:
|
|
3047
|
-
pointerleave:
|
|
3048
|
-
pointermove:
|
|
3049
|
-
pointermissed:
|
|
3050
|
-
pointercancel:
|
|
3051
|
-
wheel:
|
|
3036
|
+
click: this.emitEvent('click'),
|
|
3037
|
+
dblclick: this.emitEvent('dblclick'),
|
|
3038
|
+
contextmenu: this.emitEvent('contextmenu'),
|
|
3039
|
+
pointerup: this.emitEvent('pointerup'),
|
|
3040
|
+
pointerdown: this.emitEvent('pointerdown'),
|
|
3041
|
+
pointerover: this.emitEvent('pointerover'),
|
|
3042
|
+
pointerout: this.emitEvent('pointerout'),
|
|
3043
|
+
pointerenter: this.emitEvent('pointerenter'),
|
|
3044
|
+
pointerleave: this.emitEvent('pointerleave'),
|
|
3045
|
+
pointermove: this.emitEvent('pointermove'),
|
|
3046
|
+
pointermissed: this.emitEvent('pointermissed'),
|
|
3047
|
+
pointercancel: this.emitEvent('pointercancel'),
|
|
3048
|
+
wheel: this.emitEvent('wheel'),
|
|
3052
3049
|
}, { injector });
|
|
3053
3050
|
});
|
|
3054
3051
|
}
|
|
3052
|
+
emitEvent(eventName) {
|
|
3053
|
+
return this[eventName].emit.bind(this[eventName]);
|
|
3054
|
+
}
|
|
3055
3055
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtObjectEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3056
3056
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.0", type: NgtObjectEvents, isStandalone: true, selector: "[ngtObjectEvents]", inputs: { ngtObjectEvents: { classPropertyName: "ngtObjectEvents", publicName: "ngtObjectEvents", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click", dblclick: "dblclick", contextmenu: "contextmenu", pointerup: "pointerup", pointerdown: "pointerdown", pointerover: "pointerover", pointerout: "pointerout", pointerenter: "pointerenter", pointerleave: "pointerleave", pointermove: "pointermove", pointermissed: "pointermissed", pointercancel: "pointercancel", wheel: "wheel", ngtObjectEvents: "ngtObjectEventsChange" }, ngImport: i0 }); }
|
|
3057
3057
|
}
|
|
@@ -3080,20 +3080,17 @@ const NgtObjectEventsHostDirective = {
|
|
|
3080
3080
|
};
|
|
3081
3081
|
function injectObjectEvents(target, events, { injector } = {}) {
|
|
3082
3082
|
return assertInjector(injectObjectEvents, injector, () => {
|
|
3083
|
-
const autoEffect = injectAutoEffect();
|
|
3084
3083
|
const renderer = inject(Renderer2);
|
|
3085
3084
|
const cleanUps = [];
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
cleanUps.forEach((cleanUp) => cleanUp());
|
|
3096
|
-
};
|
|
3085
|
+
effect((onCleanup) => {
|
|
3086
|
+
const targetRef = resolveRef(target());
|
|
3087
|
+
if (!targetRef)
|
|
3088
|
+
return;
|
|
3089
|
+
Object.entries(events).forEach(([eventName, eventHandler]) => {
|
|
3090
|
+
cleanUps.push(renderer.listen(targetRef, eventName, eventHandler));
|
|
3091
|
+
});
|
|
3092
|
+
onCleanup(() => {
|
|
3093
|
+
cleanUps.forEach((cleanUp) => cleanUp());
|
|
3097
3094
|
});
|
|
3098
3095
|
});
|
|
3099
3096
|
inject(DestroyRef).onDestroy(() => {
|