angular-three-soba 2.0.0-beta.230 → 2.0.0-beta.231
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/controls/orbit-controls/orbit-controls.d.ts +10 -19
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +21 -33
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +2 -5
- package/esm2022/loaders/loader/loader.mjs +37 -19
- package/esm2022/loaders/progress/progress.mjs +6 -6
- package/esm2022/loaders/texture-loader/texture-loader.mjs +6 -6
- package/fesm2022/angular-three-soba-controls.mjs +20 -32
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +44 -29
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/loaders/gltf-loader/gltf-loader.d.ts +3 -3
- package/loaders/loader/loader.d.ts +16 -7
- package/loaders/progress/progress.d.ts +1 -1
- package/loaders/texture-loader/texture-loader.d.ts +5 -5
- package/package.json +68 -66
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import type * as THREE from 'three';
|
|
1
|
+
import { NgtInjectedRef, NgtVector3 } from 'angular-three';
|
|
2
|
+
import { Camera, Event } from 'three';
|
|
4
3
|
import { OrbitControls } from 'three-stdlib';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
export interface NgtsOrbitControlsState {
|
|
7
|
-
camera?:
|
|
6
|
+
camera?: Camera;
|
|
8
7
|
domElement?: HTMLElement;
|
|
9
8
|
target?: NgtVector3;
|
|
10
9
|
makeDefault: boolean;
|
|
@@ -21,19 +20,11 @@ declare global {
|
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
22
|
export declare class NgtsOrbitControls {
|
|
24
|
-
options: import("@angular/core").InputSignalWithTransform<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
regress?: boolean | undefined;
|
|
30
|
-
enableDamping?: boolean | undefined;
|
|
31
|
-
keyEvents?: boolean | HTMLElement | undefined;
|
|
32
|
-
}, Partial<NgtsOrbitControlsState>>;
|
|
33
|
-
controlsRef: import("@angular/core").InputSignal<import("angular-three").NgtInjectedRef<OrbitControls>>;
|
|
34
|
-
change: EventEmitter<THREE.Event<string, unknown>>;
|
|
35
|
-
start: EventEmitter<THREE.Event<string, unknown>>;
|
|
36
|
-
end: EventEmitter<THREE.Event<string, unknown>>;
|
|
23
|
+
options: import("@angular/core").InputSignalWithTransform<NgtsOrbitControlsState, Partial<NgtsOrbitControlsState>>;
|
|
24
|
+
controlsRef: import("@angular/core").InputSignal<NgtInjectedRef<OrbitControls>>;
|
|
25
|
+
changed: import("@angular/core").OutputEmitterRef<Event<string, unknown>>;
|
|
26
|
+
started: import("@angular/core").OutputEmitterRef<Event<string, unknown>>;
|
|
27
|
+
ended: import("@angular/core").OutputEmitterRef<Event<string, unknown>>;
|
|
37
28
|
private store;
|
|
38
29
|
private invalidate;
|
|
39
30
|
private performanceRegress;
|
|
@@ -45,12 +36,12 @@ export declare class NgtsOrbitControls {
|
|
|
45
36
|
private domElement;
|
|
46
37
|
private makeDefault;
|
|
47
38
|
protected args: import("@angular/core").Signal<OrbitControls[]>;
|
|
48
|
-
protected enableDamping: import("@angular/core").Signal<boolean
|
|
39
|
+
protected enableDamping: import("@angular/core").Signal<boolean>;
|
|
49
40
|
constructor();
|
|
50
41
|
private setControls;
|
|
51
42
|
private connectElement;
|
|
52
43
|
private makeControlsDefault;
|
|
53
44
|
private setEvents;
|
|
54
45
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsOrbitControls, never>;
|
|
55
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgtsOrbitControls, "ngts-orbit-controls", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "controlsRef": { "alias": "controlsRef"; "required": false; "isSignal": true; }; }, { "
|
|
46
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtsOrbitControls, "ngts-orbit-controls", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "controlsRef": { "alias": "controlsRef"; "required": false; "isSignal": true; }; }, { "changed": "changed"; "started": "started"; "ended": "ended"; }, never, ["*"], true, never>;
|
|
56
47
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect,
|
|
1
|
+
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, output } from '@angular/core';
|
|
2
2
|
import { injectBeforeRender, injectNgtRef, injectNgtStore, NgtArgs, } from 'angular-three';
|
|
3
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
3
4
|
import { OrbitControls } from 'three-stdlib';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
const defaultOptions = {
|
|
@@ -10,13 +11,11 @@ const defaultOptions = {
|
|
|
10
11
|
};
|
|
11
12
|
export class NgtsOrbitControls {
|
|
12
13
|
constructor() {
|
|
13
|
-
this.options = input(defaultOptions, {
|
|
14
|
-
transform: (value) => ({ ...defaultOptions, ...value }),
|
|
15
|
-
});
|
|
14
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
16
15
|
this.controlsRef = input(injectNgtRef());
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
16
|
+
this.changed = output();
|
|
17
|
+
this.started = output();
|
|
18
|
+
this.ended = output();
|
|
20
19
|
this.store = injectNgtStore();
|
|
21
20
|
this.invalidate = this.store.select('invalidate');
|
|
22
21
|
this.performanceRegress = this.store.select('performance', 'regress');
|
|
@@ -42,10 +41,10 @@ export class NgtsOrbitControls {
|
|
|
42
41
|
}
|
|
43
42
|
setControls() {
|
|
44
43
|
effect(() => {
|
|
45
|
-
const [camera, defaultCamera,
|
|
44
|
+
const [camera, defaultCamera, controlsRef] = [this.camera(), this.defaultCamera(), this.controlsRef()];
|
|
46
45
|
const controlsCamera = camera || defaultCamera;
|
|
47
|
-
if (!
|
|
48
|
-
|
|
46
|
+
if (!controlsRef.nativeElement || controlsRef.nativeElement.object !== controlsCamera) {
|
|
47
|
+
controlsRef.nativeElement = new OrbitControls(controlsCamera);
|
|
49
48
|
}
|
|
50
49
|
});
|
|
51
50
|
}
|
|
@@ -95,33 +94,28 @@ export class NgtsOrbitControls {
|
|
|
95
94
|
invalidate();
|
|
96
95
|
if (regress)
|
|
97
96
|
performanceRegress();
|
|
98
|
-
|
|
99
|
-
this.change.emit(e);
|
|
97
|
+
this.changed.emit(e);
|
|
100
98
|
};
|
|
101
|
-
const startCallback = this.
|
|
102
|
-
const endCallback = this.
|
|
99
|
+
const startCallback = this.started.emit.bind(this.started);
|
|
100
|
+
const endCallback = this.ended.emit.bind(this.ended);
|
|
103
101
|
controls.addEventListener('change', changeCallback);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (endCallback)
|
|
107
|
-
controls.addEventListener('end', endCallback);
|
|
102
|
+
controls.addEventListener('start', startCallback);
|
|
103
|
+
controls.addEventListener('end', endCallback);
|
|
108
104
|
onCleanup(() => {
|
|
109
105
|
controls.removeEventListener('change', changeCallback);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (endCallback)
|
|
113
|
-
controls.removeEventListener('end', endCallback);
|
|
106
|
+
controls.removeEventListener('start', startCallback);
|
|
107
|
+
controls.removeEventListener('end', endCallback);
|
|
114
108
|
});
|
|
115
109
|
});
|
|
116
110
|
}
|
|
117
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsOrbitControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtsOrbitControls, isStandalone: true, selector: "ngts-orbit-controls", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, controlsRef: { classPropertyName: "controlsRef", publicName: "controlsRef", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", started: "started", ended: "ended" }, ngImport: i0, template: `
|
|
119
113
|
<ngt-primitive ngtCompound *args="args()" [enableDamping]="enableDamping()">
|
|
120
114
|
<ng-content />
|
|
121
115
|
</ngt-primitive>
|
|
122
116
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
123
117
|
}
|
|
124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsOrbitControls, decorators: [{
|
|
125
119
|
type: Component,
|
|
126
120
|
args: [{
|
|
127
121
|
selector: 'ngts-orbit-controls',
|
|
@@ -134,11 +128,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
134
128
|
imports: [NgtArgs],
|
|
135
129
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
136
130
|
}]
|
|
137
|
-
}], ctorParameters: () => []
|
|
138
|
-
type: Output
|
|
139
|
-
}], start: [{
|
|
140
|
-
type: Output
|
|
141
|
-
}], end: [{
|
|
142
|
-
type: Output
|
|
143
|
-
}] } });
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JiaXQtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY29udHJvbHMvc3JjL29yYml0LWNvbnRyb2xzL29yYml0LWNvbnRyb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsT0FBTyxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBcUI3QyxNQUFNLGNBQWMsR0FBb0M7SUFDdkQsYUFBYSxFQUFFLElBQUk7SUFDbkIsT0FBTyxFQUFFLEtBQUs7SUFDZCxXQUFXLEVBQUUsS0FBSztJQUNsQixTQUFTLEVBQUUsS0FBSztDQUNoQixDQUFDO0FBYUYsTUFBTSxPQUFPLGlCQUFpQjtJQXlCN0I7UUF4QkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUU7WUFDL0IsU0FBUyxFQUFFLENBQUMsS0FBc0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7U0FDeEYsQ0FBQyxDQUFDO1FBQ0gsZ0JBQVcsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFpQixDQUFDLENBQUM7UUFFekMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFDekMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFDeEMsUUFBRyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFFeEMsVUFBSyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FB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V0FBVztnQkFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBRS9ELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxhQUFhO29CQUFFLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQ3hFLElBQUksV0FBVztvQkFBRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ25FLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQS9HVyxpQkFBaUI7a0dBQWpCLGlCQUFpQiw4WkFSbkI7Ozs7RUFJVCw0REFDUyxPQUFPOzsyRkFHTCxpQkFBaUI7a0JBWDdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDO3dEQU9VLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csR0FBRztzQkFBWixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIGlucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0Tmd0UmVmLFxuXHRpbmplY3ROZ3RTdG9yZSxcblx0Tmd0QXJncyxcblx0dHlwZSBOZ3RDYW1lcmEsXG5cdHR5cGUgTmd0VmVjdG9yMyxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgdHlwZSAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE9yYml0Q29udHJvbHMgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNPcmJpdENvbnRyb2xzU3RhdGUge1xuXHRjYW1lcmE/OiBUSFJFRS5DYW1lcmE7XG5cdGRvbUVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblx0dGFyZ2V0PzogTmd0VmVjdG9yMztcblx0bWFrZURlZmF1bHQ6IGJvb2xlYW47XG5cdHJlZ3Jlc3M6IGJvb2xlYW47XG5cdGVuYWJsZURhbXBpbmc6IGJvb2xlYW47XG5cdGtleUV2ZW50czogYm9vbGVhbiB8IEhUTUxFbGVtZW50O1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIHRocmVlLXN0ZGxpYnxPcmJpdENvbnRyb2xzXG5cdFx0ICovXG5cdFx0J25ndHMtb3JiaXQtY29udHJvbHMnOiBPcmJpdENvbnRyb2xzICYgTmd0c09yYml0Q29udHJvbHNTdGF0ZTtcblx0fVxufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogUGFydGlhbDxOZ3RzT3JiaXRDb250cm9sc1N0YXRlPiA9IHtcblx0ZW5hYmxlRGFtcGluZzogdHJ1ZSxcblx0cmVncmVzczogZmFsc2UsXG5cdG1ha2VEZWZhdWx0OiBmYWxzZSxcblx0a2V5RXZlbnRzOiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtb3JiaXQtY29udHJvbHMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlIG5ndENvbXBvdW5kICphcmdzPVwiYXJncygpXCIgW2VuYWJsZURhbXBpbmddPVwiZW5hYmxlRGFtcGluZygpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNPcmJpdENvbnRyb2xzIHtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7XG5cdFx0dHJhbnNmb3JtOiAodmFsdWU6IFBhcnRpYWw8Tmd0c09yYml0Q29udHJvbHNTdGF0ZT4pID0+ICh7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi52YWx1ZSB9KSxcblx0fSk7XG5cdGNvbnRyb2xzUmVmID0gaW5wdXQoaW5qZWN0Tmd0UmVmPE9yYml0Q29udHJvbHM+KCkpO1xuXG5cdEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRIUkVFLkV2ZW50PigpO1xuXHRAT3V0cHV0KCkgc3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRIUkVFLkV2ZW50PigpO1xuXHRAT3V0cHV0KCkgZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxUSFJFRS5FdmVudD4oKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblx0cHJpdmF0ZSBwZXJmb3JtYW5jZVJlZ3Jlc3MgPSB0aGlzLnN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAncmVncmVzcycpO1xuXHRwcml2YXRlIGRlZmF1bHRDYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdHByaXZhdGUgZ2xEb21FbGVtZW50ID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJywgJ2RvbUVsZW1lbnQnKTtcblxuXHRwcml2YXRlIGNhbWVyYSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmNhbWVyYSk7XG5cdHByaXZhdGUgcmVncmVzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnJlZ3Jlc3MpO1xuXHRwcml2YXRlIGtleUV2ZW50cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmtleUV2ZW50cyk7XG5cdHByaXZhdGUgZG9tRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmRvbUVsZW1lbnQpO1xuXHRwcml2YXRlIG1ha2VEZWZhdWx0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkubWFrZURlZmF1bHQpO1xuXG5cdHByb3RlY3RlZCBhcmdzID0gY29tcHV0ZWQoKCkgPT4gW3RoaXMuY29udHJvbHNSZWYoKS5uYXRpdmVFbGVtZW50XSk7XG5cdHByb3RlY3RlZCBlbmFibGVEYW1waW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuZW5hYmxlRGFtcGluZyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjb250cm9scyA9IHRoaXMuY29udHJvbHNSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoY29udHJvbHM/LmVuYWJsZWQpIHtcblx0XHRcdFx0XHRjb250cm9scy51cGRhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgcHJpb3JpdHk6IC0xIH0sXG5cdFx0KTtcblxuXHRcdHRoaXMuc2V0Q29udHJvbHMoKTtcblx0XHR0aGlzLmNvbm5lY3RFbGVtZW50KCk7XG5cdFx0dGhpcy5tYWtlQ29udHJvbHNEZWZhdWx0KCk7XG5cdFx0dGhpcy5zZXRFdmVudHMoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0Q29udHJvbHMoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFtjYW1lcmEsIGRlZmF1bHRDYW1lcmEsIGNvbnRyb2xzXSA9IFt0aGlzLmNhbWVyYSgpLCB0aGlzLmRlZmF1bHRDYW1lcmEoKSwgdGhpcy5jb250cm9sc1JlZigpLm5hdGl2ZUVsZW1lbnRdO1xuXHRcdFx0Y29uc3QgY29udHJvbHNDYW1lcmEgPSBjYW1lcmEgfHwgZGVmYXVsdENhbWVyYTtcblx0XHRcdGlmICghY29udHJvbHMgfHwgY29udHJvbHMub2JqZWN0ICE9PSBjb250cm9sc0NhbWVyYSkge1xuXHRcdFx0XHR0aGlzLmNvbnRyb2xzUmVmKCkubmF0aXZlRWxlbWVudCA9IG5ldyBPcmJpdENvbnRyb2xzKGNvbnRyb2xzQ2FtZXJhIGFzIE5ndENhbWVyYSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGNvbm5lY3RFbGVtZW50KCkge1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBba2V5RXZlbnRzLCBkb21FbGVtZW50LCBjb250cm9sc10gPSBbXG5cdFx0XHRcdHRoaXMua2V5RXZlbnRzKCksXG5cdFx0XHRcdHRoaXMuZG9tRWxlbWVudCgpIHx8IHRoaXMuc3RvcmUuZ2V0KCdldmVudHMnLCAnY29ubmVjdGVkJykgfHwgdGhpcy5nbERvbUVsZW1lbnQoKSxcblx0XHRcdFx0dGhpcy5jb250cm9sc1JlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpLFxuXHRcdFx0XHR0aGlzLnJlZ3Jlc3MoKSxcblx0XHRcdF07XG5cdFx0XHRpZiAoIWNvbnRyb2xzKSByZXR1cm47XG5cdFx0XHRpZiAoa2V5RXZlbnRzKSB7XG5cdFx0XHRcdGNvbnRyb2xzLmNvbm5lY3Qoa2V5RXZlbnRzID09PSB0cnVlID8gZG9tRWxlbWVudCA6IGtleUV2ZW50cyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb250cm9scy5jb25uZWN0KGRvbUVsZW1lbnQpO1xuXHRcdFx0fVxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHZvaWQgY29udHJvbHMuZGlzcG9zZSgpKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgbWFrZUNvbnRyb2xzRGVmYXVsdCgpIHtcblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgW2NvbnRyb2xzLCBtYWtlRGVmYXVsdF0gPSBbdGhpcy5jb250cm9sc1JlZigpLm5hdGl2ZUVsZW1lbnQsIHRoaXMubWFrZURlZmF1bHQoKV07XG5cdFx0XHRpZiAoIWNvbnRyb2xzKSByZXR1cm47XG5cdFx0XHRpZiAobWFrZURlZmF1bHQpIHtcblx0XHRcdFx0Y29uc3Qgb2xkQ29udHJvbHMgPSB0aGlzLnN0b3JlLmdldCgnY29udHJvbHMnKTtcblx0XHRcdFx0dGhpcy5zdG9yZS51cGRhdGUoeyBjb250cm9scyB9KTtcblx0XHRcdFx0b25DbGVhbnVwKCgpID0+IHZvaWQgdGhpcy5zdG9yZS51cGRhdGUoeyBjb250cm9sczogb2xkQ29udHJvbHMgfSkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRFdmVudHMoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtjb250cm9scywgaW52YWxpZGF0ZSwgcGVyZm9ybWFuY2VSZWdyZXNzLCByZWdyZXNzXSA9IFtcblx0XHRcdFx0dGhpcy5jb250cm9sc1JlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpLFxuXHRcdFx0XHR0aGlzLnBlcmZvcm1hbmNlUmVncmVzcygpLFxuXHRcdFx0XHR0aGlzLnJlZ3Jlc3MoKSxcblx0XHRcdF07XG5cdFx0XHRpZiAoIWNvbnRyb2xzKSByZXR1cm47XG5cdFx0XHRjb25zdCBjaGFuZ2VDYWxsYmFjazogKGU6IFRIUkVFLkV2ZW50KSA9PiB2b2lkID0gKGUpID0+IHtcblx0XHRcdFx0aW52YWxpZGF0ZSgpO1xuXHRcdFx0XHRpZiAocmVncmVzcykgcGVyZm9ybWFuY2VSZWdyZXNzKCk7XG5cdFx0XHRcdGlmICh0aGlzLmNoYW5nZS5vYnNlcnZlZCkgdGhpcy5jaGFuZ2UuZW1pdChlKTtcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IHN0YXJ0Q2FsbGJhY2sgPSB0aGlzLnN0YXJ0Lm9ic2VydmVkID8gdGhpcy5zdGFydC5lbWl0LmJpbmQodGhpcy5zdGFydCkgOiBudWxsO1xuXHRcdFx0Y29uc3QgZW5kQ2FsbGJhY2sgPSB0aGlzLmVuZC5vYnNlcnZlZCA/IHRoaXMuZW5kLmVtaXQuYmluZCh0aGlzLmVuZCkgOiBudWxsO1xuXG5cdFx0XHRjb250cm9scy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjaGFuZ2VDYWxsYmFjayk7XG5cdFx0XHRpZiAoc3RhcnRDYWxsYmFjaykgY29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignc3RhcnQnLCBzdGFydENhbGxiYWNrKTtcblx0XHRcdGlmIChlbmRDYWxsYmFjaykgY29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignZW5kJywgZW5kQ2FsbGJhY2spO1xuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjaGFuZ2VDYWxsYmFjayk7XG5cdFx0XHRcdGlmIChzdGFydENhbGxiYWNrKSBjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFydCcsIHN0YXJ0Q2FsbGJhY2spO1xuXHRcdFx0XHRpZiAoZW5kQ2FsbGJhY2spIGNvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZCcsIGVuZENhbGxiYWNrKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
131
|
+
}], ctorParameters: () => [] });
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JiaXQtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY29udHJvbHMvc3JjL29yYml0LWNvbnRyb2xzL29yYml0LWNvbnRyb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGNBQWMsRUFDZCxPQUFPLEdBSVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBcUI3QyxNQUFNLGNBQWMsR0FBMkI7SUFDOUMsYUFBYSxFQUFFLElBQUk7SUFDbkIsT0FBTyxFQUFFLEtBQUs7SUFDZCxXQUFXLEVBQUUsS0FBSztJQUNsQixTQUFTLEVBQUUsS0FBSztDQUNoQixDQUFDO0FBYUYsTUFBTSxPQUFPLGlCQUFpQjtJQXVCN0I7UUF0QkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxnQkFBVyxHQUFHLEtBQUssQ0FBZ0MsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUVuRSxZQUFPLEdBQUcsTUFBTSxFQUFTLENBQUM7UUFDMUIsWUFBTyxHQUFHLE1BQU0sRUFBUyxDQUFDO1FBQzFCLFVBQUssR0FBRyxNQUFNLEVBQVMsQ0FBQztRQUVoQixVQUFLLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLHVCQUFrQixHQUFH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QUUsV0FBVyxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBN0dXLGlCQUFpQjtrR0FBakIsaUJBQWlCLHdhQVJuQjs7OztFQUlULDREQUNTLE9BQU87OzJGQUdMLGlCQUFpQjtrQkFYN0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBlZmZlY3QsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0Tmd0UmVmLFxuXHRpbmplY3ROZ3RTdG9yZSxcblx0Tmd0QXJncyxcblx0Tmd0Q2FtZXJhLFxuXHROZ3RJbmplY3RlZFJlZixcblx0Tmd0VmVjdG9yMyxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBDYW1lcmEsIEV2ZW50IH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgT3JiaXRDb250cm9scyB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c09yYml0Q29udHJvbHNTdGF0ZSB7XG5cdGNhbWVyYT86IENhbWVyYTtcblx0ZG9tRWxlbWVudD86IEhUTUxFbGVtZW50O1xuXHR0YXJnZXQ/OiBOZ3RWZWN0b3IzO1xuXHRtYWtlRGVmYXVsdDogYm9vbGVhbjtcblx0cmVncmVzczogYm9vbGVhbjtcblx0ZW5hYmxlRGFtcGluZzogYm9vbGVhbjtcblx0a2V5RXZlbnRzOiBib29sZWFuIHwgSFRNTEVsZW1lbnQ7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogQGV4dGVuZHMgdGhyZWUtc3RkbGlifE9yYml0Q29udHJvbHNcblx0XHQgKi9cblx0XHQnbmd0cy1vcmJpdC1jb250cm9scyc6IE9yYml0Q29udHJvbHMgJiBOZ3RzT3JiaXRDb250cm9sc1N0YXRlO1xuXHR9XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzT3JiaXRDb250cm9sc1N0YXRlID0ge1xuXHRlbmFibGVEYW1waW5nOiB0cnVlLFxuXHRyZWdyZXNzOiBmYWxzZSxcblx0bWFrZURlZmF1bHQ6IGZhbHNlLFxuXHRrZXlFdmVudHM6IGZhbHNlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1vcmJpdC1jb250cm9scycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgbmd0Q29tcG91bmQgKmFyZ3M9XCJhcmdzKClcIiBbZW5hYmxlRGFtcGluZ109XCJlbmFibGVEYW1waW5nKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c09yYml0Q29udHJvbHMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdGNvbnRyb2xzUmVmID0gaW5wdXQ8Tmd0SW5qZWN0ZWRSZWY8T3JiaXRDb250cm9scz4+KGluamVjdE5ndFJlZigpKTtcblxuXHRjaGFuZ2VkID0gb3V0cHV0PEV2ZW50PigpO1xuXHRzdGFydGVkID0gb3V0cHV0PEV2ZW50PigpO1xuXHRlbmRlZCA9IG91dHB1dDxFdmVudD4oKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblx0cHJpdmF0ZSBwZXJmb3JtYW5jZVJlZ3Jlc3MgPSB0aGlzLnN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAncmVncmVzcycpO1xuXHRwcml2YXRlIGRlZmF1bHRDYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdHByaXZhdGUgZ2xEb21FbGVtZW50ID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJywgJ2RvbUVsZW1lbnQnKTtcblxuXHRwcml2YXRlIGNhbWVyYSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmNhbWVyYSk7XG5cdHByaXZhdGUgcmVncmVzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnJlZ3Jlc3MpO1xuXHRwcml2YXRlIGtleUV2ZW50cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmtleUV2ZW50cyk7XG5cdHByaXZhdGUgZG9tRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmRvbUVsZW1lbnQpO1xuXHRwcml2YXRlIG1ha2VEZWZhdWx0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkubWFrZURlZmF1bHQpO1xuXG5cdHByb3RlY3RlZCBhcmdzID0gY29tcHV0ZWQoKCkgPT4gW3RoaXMuY29udHJvbHNSZWYoKS5uYXRpdmVFbGVtZW50XSk7XG5cdHByb3RlY3RlZCBlbmFibGVEYW1waW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuZW5hYmxlRGFtcGluZyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjb250cm9scyA9IHRoaXMuY29udHJvbHNSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoY29udHJvbHM/LmVuYWJsZWQpIHtcblx0XHRcdFx0XHRjb250cm9scy51cGRhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgcHJpb3JpdHk6IC0xIH0sXG5cdFx0KTtcblxuXHRcdHRoaXMuc2V0Q29udHJvbHMoKTtcblx0XHR0aGlzLmNvbm5lY3RFbGVtZW50KCk7XG5cdFx0dGhpcy5tYWtlQ29udHJvbHNEZWZhdWx0KCk7XG5cdFx0dGhpcy5zZXRFdmVudHMoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0Q29udHJvbHMoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFtjYW1lcmEsIGRlZmF1bHRDYW1lcmEsIGNvbnRyb2xzUmVmXSA9IFt0aGlzLmNhbWVyYSgpLCB0aGlzLmRlZmF1bHRDYW1lcmEoKSwgdGhpcy5jb250cm9sc1JlZigpXTtcblx0XHRcdGNvbnN0IGNvbnRyb2xzQ2FtZXJhID0gY2FtZXJhIHx8IGRlZmF1bHRDYW1lcmE7XG5cdFx0XHRpZiAoIWNvbnRyb2xzUmVmLm5hdGl2ZUVsZW1lbnQgfHwgY29udHJvbHNSZWYubmF0aXZlRWxlbWVudC5vYmplY3QgIT09IGNvbnRyb2xzQ2FtZXJhKSB7XG5cdFx0XHRcdGNvbnRyb2xzUmVmLm5hdGl2ZUVsZW1lbnQgPSBuZXcgT3JiaXRDb250cm9scyhjb250cm9sc0NhbWVyYSBhcyBOZ3RDYW1lcmEpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBjb25uZWN0RWxlbWVudCgpIHtcblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgW2tleUV2ZW50cywgZG9tRWxlbWVudCwgY29udHJvbHNdID0gW1xuXHRcdFx0XHR0aGlzLmtleUV2ZW50cygpLFxuXHRcdFx0XHR0aGlzLmRvbUVsZW1lbnQoKSB8fCB0aGlzLnN0b3JlLmdldCgnZXZlbnRzJywgJ2Nvbm5lY3RlZCcpIHx8IHRoaXMuZ2xEb21FbGVtZW50KCksXG5cdFx0XHRcdHRoaXMuY29udHJvbHNSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdFx0dGhpcy5yZWdyZXNzKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKCFjb250cm9scykgcmV0dXJuO1xuXHRcdFx0aWYgKGtleUV2ZW50cykge1xuXHRcdFx0XHRjb250cm9scy5jb25uZWN0KGtleUV2ZW50cyA9PT0gdHJ1ZSA/IGRvbUVsZW1lbnQgOiBrZXlFdmVudHMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29udHJvbHMuY29ubmVjdChkb21FbGVtZW50KTtcblx0XHRcdH1cblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB2b2lkIGNvbnRyb2xzLmRpc3Bvc2UoKSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG1ha2VDb250cm9sc0RlZmF1bHQoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtjb250cm9scywgbWFrZURlZmF1bHRdID0gW3RoaXMuY29udHJvbHNSZWYoKS5uYXRpdmVFbGVtZW50LCB0aGlzLm1ha2VEZWZhdWx0KCldO1xuXHRcdFx0aWYgKCFjb250cm9scykgcmV0dXJuO1xuXHRcdFx0aWYgKG1ha2VEZWZhdWx0KSB7XG5cdFx0XHRcdGNvbnN0IG9sZENvbnRyb2xzID0gdGhpcy5zdG9yZS5nZXQoJ2NvbnRyb2xzJyk7XG5cdFx0XHRcdHRoaXMuc3RvcmUudXBkYXRlKHsgY29udHJvbHMgfSk7XG5cdFx0XHRcdG9uQ2xlYW51cCgoKSA9PiB2b2lkIHRoaXMuc3RvcmUudXBkYXRlKHsgY29udHJvbHM6IG9sZENvbnRyb2xzIH0pKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgc2V0RXZlbnRzKCkge1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBbY29udHJvbHMsIGludmFsaWRhdGUsIHBlcmZvcm1hbmNlUmVncmVzcywgcmVncmVzc10gPSBbXG5cdFx0XHRcdHRoaXMuY29udHJvbHNSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdFx0dGhpcy5wZXJmb3JtYW5jZVJlZ3Jlc3MoKSxcblx0XHRcdFx0dGhpcy5yZWdyZXNzKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKCFjb250cm9scykgcmV0dXJuO1xuXHRcdFx0Y29uc3QgY2hhbmdlQ2FsbGJhY2s6IChlOiBFdmVudCkgPT4gdm9pZCA9IChlKSA9PiB7XG5cdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdFx0aWYgKHJlZ3Jlc3MpIHBlcmZvcm1hbmNlUmVncmVzcygpO1xuXHRcdFx0XHR0aGlzLmNoYW5nZWQuZW1pdChlKTtcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IHN0YXJ0Q2FsbGJhY2sgPSB0aGlzLnN0YXJ0ZWQuZW1pdC5iaW5kKHRoaXMuc3RhcnRlZCk7XG5cdFx0XHRjb25zdCBlbmRDYWxsYmFjayA9IHRoaXMuZW5kZWQuZW1pdC5iaW5kKHRoaXMuZW5kZWQpO1xuXG5cdFx0XHRjb250cm9scy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjaGFuZ2VDYWxsYmFjayk7XG5cdFx0XHRjb250cm9scy5hZGRFdmVudExpc3RlbmVyKCdzdGFydCcsIHN0YXJ0Q2FsbGJhY2spO1xuXHRcdFx0Y29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignZW5kJywgZW5kQ2FsbGJhY2spO1xuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjaGFuZ2VDYWxsYmFjayk7XG5cdFx0XHRcdGNvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0YXJ0Jywgc3RhcnRDYWxsYmFjayk7XG5cdFx0XHRcdGNvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZCcsIGVuZENhbGxiYWNrKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -21,10 +21,7 @@ function _extensions(useDraco, useMeshOpt, extensions) {
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
function _injectNgtsGLTFLoader(path, { useDraco = true, useMeshOpt = true, injector, extensions, } = {}) {
|
|
24
|
-
return assertInjector(_injectNgtsGLTFLoader, injector, () => injectNgtLoader(() => GLTFLoader, path, {
|
|
25
|
-
// TODO: fix "as any" when three-stdlib is updated with THREE 0.156
|
|
26
|
-
extensions: _extensions(useDraco, useMeshOpt, extensions),
|
|
27
|
-
}));
|
|
24
|
+
return assertInjector(_injectNgtsGLTFLoader, injector, () => injectNgtLoader(() => GLTFLoader, path, { extensions: _extensions(useDraco, useMeshOpt, extensions) }));
|
|
28
25
|
}
|
|
29
26
|
_injectNgtsGLTFLoader.preload = (path, { useDraco = true, useMeshOpt = true, extensions, } = {}) => {
|
|
30
27
|
injectNgtLoader.preload(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));
|
|
@@ -33,4 +30,4 @@ _injectNgtsGLTFLoader.setDecoderPath = (path) => {
|
|
|
33
30
|
decoderPath = path;
|
|
34
31
|
};
|
|
35
32
|
export const injectNgtsGLTFLoader = _injectNgtsGLTFLoader;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbG9hZGVycy9zcmMvZ2x0Zi1sb2FkZXIvZ2x0Zi1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFrQyxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxXQUFXLEVBQVEsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3RSxJQUFJLFdBQVcsR0FBdUIsSUFBSSxDQUFDO0FBQzNDLElBQUksV0FBVyxHQUFHLHlEQUF5RCxDQUFDO0FBRTVFLFNBQVMsV0FBVyxDQUFDLFFBQTBCLEVBQUUsVUFBbUIsRUFBRSxVQUF5QztJQUM5RyxPQUFPLENBQUMsTUFBYyxFQUFFLEVBQUU7UUFDekIsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQixVQUFVLENBQUMsTUFBb0IsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQixXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBRUQsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakYsTUFBcUIsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixNQUFxQixDQUFDLGlCQUFpQixDQUN2QyxPQUFPLGNBQWMsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQ3hFLENBQUM7UUFDSCxDQUFDO0lBQ0YsQ0FBQyxDQUFDO0FBQ0gsQ0FBQztBQUlELFNBQVMscUJBQXFCLENBQzdCLElBQWdCLEVBQ2hCLEVBQ0MsUUFBUSxHQUFHLElBQUksRUFDZixVQUFVLEdBQUcsSUFBSSxFQUNqQixRQUFRLEVBQ1IsVUFBVSxNQU1QLEVBQUU7SUFFTixPQUFPLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQzNELGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FDeEMsQ0FBQztBQUNqRSxDQUFDO0FBRUQscUJBQXFCLENBQUMsT0FBTyxHQUFHLENBQy9CLElBQWdCLEVBQ2hCLEVBQ0MsUUFBUSxHQUFHLElBQUksRUFDZixVQUFVLEdBQUcsSUFBSSxFQUNqQixVQUFVLE1BQzJGLEVBQUUsRUFDdkcsRUFBRTtJQUNILGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQVEsQ0FBQyxDQUFDO0FBQ3ZHLENBQUMsQ0FBQztBQUVGLHFCQUFxQixDQUFDLGNBQWMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3ZELFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQW1CLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0TG9hZGVyUmVzdWx0cywgTmd0T2JqZWN0TWFwLCBpbmplY3ROZ3RMb2FkZXIgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgRFJBQ09Mb2FkZXIsIEdMVEYsIEdMVEZMb2FkZXIsIE1lc2hvcHREZWNvZGVyIH0gZnJvbSAndGhyZWUtc3RkbGliJztcblxubGV0IGRyYWNvTG9hZGVyOiBEUkFDT0xvYWRlciB8IG51bGwgPSBudWxsO1xubGV0IGRlY29kZXJQYXRoID0gJ2h0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2RyYWNvL3ZlcnNpb25lZC9kZWNvZGVycy8xLjUuNS8nO1xuXG5mdW5jdGlvbiBfZXh0ZW5zaW9ucyh1c2VEcmFjbzogYm9vbGVhbiB8IHN0cmluZywgdXNlTWVzaE9wdDogYm9vbGVhbiwgZXh0ZW5zaW9ucz86IChsb2FkZXI6IEdMVEZMb2FkZXIpID0+IHZvaWQpIHtcblx0cmV0dXJuIChsb2FkZXI6IExvYWRlcikgPT4ge1xuXHRcdGlmIChleHRlbnNpb25zKSB7XG5cdFx0XHRleHRlbnNpb25zKGxvYWRlciBhcyBHTFRGTG9hZGVyKTtcblx0XHR9XG5cblx0XHRpZiAodXNlRHJhY28pIHtcblx0XHRcdGlmICghZHJhY29Mb2FkZXIpIHtcblx0XHRcdFx0ZHJhY29Mb2FkZXIgPSBuZXcgRFJBQ09Mb2FkZXIoKTtcblx0XHRcdH1cblxuXHRcdFx0ZHJhY29Mb2FkZXIuc2V0RGVjb2RlclBhdGgodHlwZW9mIHVzZURyYWNvID09PSAnc3RyaW5nJyA/IHVzZURyYWNvIDogZGVjb2RlclBhdGgpO1xuXHRcdFx0KGxvYWRlciBhcyBHTFRGTG9hZGVyKS5zZXREUkFDT0xvYWRlcihkcmFjb0xvYWRlcik7XG5cdFx0fVxuXHRcdGlmICh1c2VNZXNoT3B0KSB7XG5cdFx0XHQobG9hZGVyIGFzIEdMVEZMb2FkZXIpLnNldE1lc2hvcHREZWNvZGVyKFxuXHRcdFx0XHR0eXBlb2YgTWVzaG9wdERlY29kZXIgPT09ICdmdW5jdGlvbicgPyBNZXNob3B0RGVjb2RlcigpIDogTWVzaG9wdERlY29kZXIsXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcbn1cblxuZXhwb3J0IHR5cGUgTmd0c0dMVEY8VCBleHRlbmRzIFBhcnRpYWw8Tmd0T2JqZWN0TWFwPj4gPSBHTFRGICYgTmd0T2JqZWN0TWFwICYgVDtcblxuZnVuY3Rpb24gX2luamVjdE5ndHNHTFRGTG9hZGVyPFRVcmwgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuXHRwYXRoOiAoKSA9PiBUVXJsLFxuXHR7XG5cdFx0dXNlRHJhY28gPSB0cnVlLFxuXHRcdHVzZU1lc2hPcHQgPSB0cnVlLFxuXHRcdGluamVjdG9yLFxuXHRcdGV4dGVuc2lvbnMsXG5cdH06IHtcblx0XHR1c2VEcmFjbz86IGJvb2xlYW4gfCBzdHJpbmc7XG5cdFx0dXNlTWVzaE9wdD86IGJvb2xlYW47XG5cdFx0aW5qZWN0b3I/OiBJbmplY3Rvcjtcblx0XHRleHRlbnNpb25zPzogKGxvYWRlcjogR0xURkxvYWRlcikgPT4gdm9pZDtcblx0fSA9IHt9LFxuKTogU2lnbmFsPE5ndExvYWRlclJlc3VsdHM8VFVybCwgR0xURiAmIE5ndE9iamVjdE1hcD4gfCBudWxsPiB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihfaW5qZWN0Tmd0c0dMVEZMb2FkZXIsIGluamVjdG9yLCAoKSA9PlxuXHRcdGluamVjdE5ndExvYWRlcigoKSA9PiBHTFRGTG9hZGVyLCBwYXRoLCB7IGV4dGVuc2lvbnM6IF9leHRlbnNpb25zKHVzZURyYWNvLCB1c2VNZXNoT3B0LCBleHRlbnNpb25zKSB9KSxcblx0KSBhcyBTaWduYWw8Tmd0TG9hZGVyUmVzdWx0czxUVXJsLCBHTFRGICYgTmd0T2JqZWN0TWFwPiB8IG51bGw+O1xufVxuXG5faW5qZWN0Tmd0c0dMVEZMb2FkZXIucHJlbG9hZCA9IDxUVXJsIGV4dGVuZHMgc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pihcblx0cGF0aDogKCkgPT4gVFVybCxcblx0e1xuXHRcdHVzZURyYWNvID0gdHJ1ZSxcblx0XHR1c2VNZXNoT3B0ID0gdHJ1ZSxcblx0XHRleHRlbnNpb25zLFxuXHR9OiB7IHVzZURyYWNvPzogYm9vbGVhbiB8IHN0cmluZzsgdXNlTWVzaE9wdD86IGJvb2xlYW47IGV4dGVuc2lvbnM/OiAobG9hZGVyOiBHTFRGTG9hZGVyKSA9PiB2b2lkIH0gPSB7fSxcbikgPT4ge1xuXHRpbmplY3ROZ3RMb2FkZXIucHJlbG9hZCgoKSA9PiBHTFRGTG9hZGVyLCBwYXRoLCBfZXh0ZW5zaW9ucyh1c2VEcmFjbywgdXNlTWVzaE9wdCwgZXh0ZW5zaW9ucykgYXMgYW55KTtcbn07XG5cbl9pbmplY3ROZ3RzR0xURkxvYWRlci5zZXREZWNvZGVyUGF0aCA9IChwYXRoOiBzdHJpbmcpID0+IHtcblx0ZGVjb2RlclBhdGggPSBwYXRoO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0c0dMVEZMb2FkZXIgPSB0eXBlb2YgX2luamVjdE5ndHNHTFRGTG9hZGVyO1xuZXhwb3J0IGNvbnN0IGluamVjdE5ndHNHTFRGTG9hZGVyOiBOZ3RzR0xURkxvYWRlciA9IF9pbmplY3ROZ3RzR0xURkxvYWRlcjtcbiJdfQ==
|
|
@@ -1,18 +1,28 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, effect, input, signal, untracked, viewChild, } from '@angular/core';
|
|
2
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
2
3
|
import { injectNgtsProgress } from '../progress/progress';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
const defaultDataInterpolation = (p) => `Loading ${p.toFixed(2)}%`;
|
|
6
|
+
const defaultOptions = {
|
|
7
|
+
containerClass: '',
|
|
8
|
+
innerClass: '',
|
|
9
|
+
barClass: '',
|
|
10
|
+
dataClass: '',
|
|
11
|
+
dataInterpolation: defaultDataInterpolation,
|
|
12
|
+
initialState: (value) => value,
|
|
13
|
+
};
|
|
5
14
|
export class NgtsLoader {
|
|
6
15
|
constructor() {
|
|
7
16
|
this.progressState = injectNgtsProgress();
|
|
8
17
|
this.active = computed(() => this.progressState().active);
|
|
9
18
|
this.progress = computed(() => this.progressState().progress);
|
|
10
|
-
this.
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
15
|
-
this.initialState =
|
|
19
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
20
|
+
this.containerClass = computed(() => this.options().containerClass);
|
|
21
|
+
this.innerClass = computed(() => this.options().innerClass);
|
|
22
|
+
this.barClass = computed(() => this.options().barClass);
|
|
23
|
+
this.dataClass = computed(() => this.options().dataClass);
|
|
24
|
+
this.initialState = computed(() => this.options().initialState);
|
|
25
|
+
this.dataInterpolation = computed(() => this.options().dataInterpolation);
|
|
16
26
|
this.progressSpanRef = viewChild('progressSpanRef');
|
|
17
27
|
this.shown = signal(this.initialState()(this.active()));
|
|
18
28
|
this.setShown();
|
|
@@ -50,41 +60,49 @@ export class NgtsLoader {
|
|
|
50
60
|
onCleanup(() => cancelAnimationFrame(rafId));
|
|
51
61
|
});
|
|
52
62
|
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
54
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
64
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
55
65
|
@if (shown()) {
|
|
56
66
|
<div
|
|
57
67
|
class="ngts-loader-container"
|
|
58
|
-
[class]="containerClass()"
|
|
68
|
+
[class]="containerClass() || ''"
|
|
59
69
|
[style.--ngts-loader-container-opacity]="active() ? 1 : 0"
|
|
60
70
|
>
|
|
61
71
|
<div>
|
|
62
|
-
<div class="ngts-loader-inner" [class]="innerClass()">
|
|
63
|
-
<div
|
|
64
|
-
|
|
72
|
+
<div class="ngts-loader-inner" [class]="innerClass() || ''">
|
|
73
|
+
<div
|
|
74
|
+
class="ngts-loader-bar"
|
|
75
|
+
[class]="barClass() || ''"
|
|
76
|
+
[style.--ngts-loader-bar-scale]="progress() / 100"
|
|
77
|
+
></div>
|
|
78
|
+
<span #progressSpanRef class="ngts-loader-data" [class]="dataClass() || ''"></span>
|
|
65
79
|
</div>
|
|
66
80
|
</div>
|
|
67
81
|
</div>
|
|
68
82
|
}
|
|
69
83
|
`, isInline: true, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:#fff;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
70
84
|
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsLoader, decorators: [{
|
|
72
86
|
type: Component,
|
|
73
87
|
args: [{ selector: 'ngts-loader', standalone: true, template: `
|
|
74
88
|
@if (shown()) {
|
|
75
89
|
<div
|
|
76
90
|
class="ngts-loader-container"
|
|
77
|
-
[class]="containerClass()"
|
|
91
|
+
[class]="containerClass() || ''"
|
|
78
92
|
[style.--ngts-loader-container-opacity]="active() ? 1 : 0"
|
|
79
93
|
>
|
|
80
94
|
<div>
|
|
81
|
-
<div class="ngts-loader-inner" [class]="innerClass()">
|
|
82
|
-
<div
|
|
83
|
-
|
|
95
|
+
<div class="ngts-loader-inner" [class]="innerClass() || ''">
|
|
96
|
+
<div
|
|
97
|
+
class="ngts-loader-bar"
|
|
98
|
+
[class]="barClass() || ''"
|
|
99
|
+
[style.--ngts-loader-bar-scale]="progress() / 100"
|
|
100
|
+
></div>
|
|
101
|
+
<span #progressSpanRef class="ngts-loader-data" [class]="dataClass() || ''"></span>
|
|
84
102
|
</div>
|
|
85
103
|
</div>
|
|
86
104
|
</div>
|
|
87
105
|
}
|
|
88
106
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:#fff;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"] }]
|
|
89
107
|
}], ctorParameters: () => [] });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2xvYWRlcnMvc3JjL2xvYWRlci9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUUxRCxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQVczRSxNQUFNLGNBQWMsR0FBb0I7SUFDdkMsY0FBYyxFQUFFLEVBQUU7SUFDbEIsVUFBVSxFQUFFLEVBQUU7SUFDZCxRQUFRLEVBQUUsRUFBRTtJQUNaLFNBQVMsRUFBRSxFQUFFO0lBQ2IsaUJBQWlCLEVBQUUsd0JBQXdCO0lBQzNDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztDQUM5QixDQUFDO0FBNEJGLE1BQU0sT0FBTyxVQUFVO0lBbUJ0QjtRQWxCUSxrQkFBYSxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFFN0MsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekQsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FB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LFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F2RFcsVUFBVTtrR0FBVixVQUFVLHFWQXZCWjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVDs7MkZBSVcsVUFBVTtrQkExQnRCLFNBQVM7K0JBQ0MsYUFBYSxjQUNYLElBQUksWUFDTjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdEVsZW1lbnRSZWYsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGlucHV0LFxuXHRzaWduYWwsXG5cdHVudHJhY2tlZCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IGluamVjdE5ndHNQcm9ncmVzcyB9IGZyb20gJy4uL3Byb2dyZXNzL3Byb2dyZXNzJztcblxuY29uc3QgZGVmYXVsdERhdGFJbnRlcnBvbGF0aW9uID0gKHA6IG51bWJlcikgPT4gYExvYWRpbmcgJHtwLnRvRml4ZWQoMil9JWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0xvYWRlclN0YXRlIHtcblx0Y29udGFpbmVyQ2xhc3M/OiBzdHJpbmc7XG5cdGlubmVyQ2xhc3M/OiBzdHJpbmc7XG5cdGJhckNsYXNzPzogc3RyaW5nO1xuXHRkYXRhQ2xhc3M/OiBzdHJpbmc7XG5cdGRhdGFJbnRlcnBvbGF0aW9uOiAodmFsdWU6IG51bWJlcikgPT4gc3RyaW5nO1xuXHRpbml0aWFsU3RhdGU6ICh2YWx1ZTogYm9vbGVhbikgPT4gYm9vbGVhbjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNMb2FkZXJTdGF0ZSA9IHtcblx0Y29udGFpbmVyQ2xhc3M6ICcnLFxuXHRpbm5lckNsYXNzOiAnJyxcblx0YmFyQ2xhc3M6ICcnLFxuXHRkYXRhQ2xhc3M6ICcnLFxuXHRkYXRhSW50ZXJwb2xhdGlvbjogZGVmYXVsdERhdGFJbnRlcnBvbGF0aW9uLFxuXHRpbml0aWFsU3RhdGU6ICh2YWx1ZSkgPT4gdmFsdWUsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWxvYWRlcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0QGlmIChzaG93bigpKSB7XG5cdFx0XHQ8ZGl2XG5cdFx0XHRcdGNsYXNzPVwibmd0cy1sb2FkZXItY29udGFpbmVyXCJcblx0XHRcdFx0W2NsYXNzXT1cImNvbnRhaW5lckNsYXNzKCkgfHwgJydcIlxuXHRcdFx0XHRbc3R5bGUuLS1uZ3RzLWxvYWRlci1jb250YWluZXItb3BhY2l0eV09XCJhY3RpdmUoKSA/IDEgOiAwXCJcblx0XHRcdD5cblx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibmd0cy1sb2FkZXItaW5uZXJcIiBbY2xhc3NdPVwiaW5uZXJDbGFzcygpIHx8ICcnXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwibmd0cy1sb2FkZXItYmFyXCJcblx0XHRcdFx0XHRcdFx0W2NsYXNzXT1cImJhckNsYXNzKCkgfHwgJydcIlxuXHRcdFx0XHRcdFx0XHRbc3R5bGUuLS1uZ3RzLWxvYWRlci1iYXItc2NhbGVdPVwicHJvZ3Jlc3MoKSAvIDEwMFwiXG5cdFx0XHRcdFx0XHQ+PC9kaXY+XG5cdFx0XHRcdFx0XHQ8c3BhbiAjcHJvZ3Jlc3NTcGFuUmVmIGNsYXNzPVwibmd0cy1sb2FkZXItZGF0YVwiIFtjbGFzc109XCJkYXRhQ2xhc3MoKSB8fCAnJ1wiPjwvc3Bhbj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHR9XG5cdGAsXG5cdHN0eWxlVXJsczogWycuL2xvYWRlci5jc3MnXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNMb2FkZXIge1xuXHRwcml2YXRlIHByb2dyZXNzU3RhdGUgPSBpbmplY3ROZ3RzUHJvZ3Jlc3MoKTtcblxuXHRhY3RpdmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb2dyZXNzU3RhdGUoKS5hY3RpdmUpO1xuXHRwcm9ncmVzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvZ3Jlc3NTdGF0ZSgpLnByb2dyZXNzKTtcblxuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0Y29udGFpbmVyQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKS5jb250YWluZXJDbGFzcyk7XG5cdGlubmVyQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKS5pbm5lckNsYXNzKTtcblx0YmFyQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKS5iYXJDbGFzcyk7XG5cdGRhdGFDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmRhdGFDbGFzcyk7XG5cdGluaXRpYWxTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmluaXRpYWxTdGF0ZSk7XG5cdGRhdGFJbnRlcnBvbGF0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuZGF0YUludGVycG9sYXRpb24pO1xuXG5cdHByb2dyZXNzU3BhblJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxTcGFuRWxlbWVudD4+KCdwcm9ncmVzc1NwYW5SZWYnKTtcblxuXHRzaG93biA9IHNpZ25hbCh0aGlzLmluaXRpYWxTdGF0ZSgpKHRoaXMuYWN0aXZlKCkpKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnNldFNob3duKCk7XG5cdFx0dGhpcy51cGRhdGVQcm9ncmVzcygpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRTaG93bigpIHtcblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgW2FjdGl2ZSwgbGFzdFNob3duXSA9IFt0aGlzLmFjdGl2ZSgpLCB1bnRyYWNrZWQodGhpcy5zaG93bildO1xuXHRcdFx0aWYgKGxhc3RTaG93biAhPT0gYWN0aXZlKSB7XG5cdFx0XHRcdGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2hvd24uc2V0KGFjdGl2ZSk7XG5cdFx0XHRcdH0sIDMwMCk7XG5cdFx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dElkKSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVByb2dyZXNzKCkge1xuXHRcdGxldCBwcm9ncmVzc1JlZiA9IDA7XG5cdFx0bGV0IHJhZklkOiBSZXR1cm5UeXBlPHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU+O1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtkYXRhSW50ZXJwb2xhdGlvbiwgcHJvZ3Jlc3NdID0gW3RoaXMuZGF0YUludGVycG9sYXRpb24oKSwgdGhpcy5wcm9ncmVzcygpXTtcblx0XHRcdGNvbnN0IHVwZGF0ZVByb2dyZXNzID0gKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwcm9ncmVzc1NwYW4gPSB0aGlzLnByb2dyZXNzU3BhblJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoIXByb2dyZXNzU3BhbikgcmV0dXJuO1xuXHRcdFx0XHRwcm9ncmVzc1JlZiArPSAocHJvZ3Jlc3MgLSBwcm9ncmVzc1JlZikgLyAyO1xuXHRcdFx0XHRpZiAocHJvZ3Jlc3NSZWYgPiAwLjk1ICogcHJvZ3Jlc3MgfHwgcHJvZ3Jlc3MgPT09IDEwMCkgcHJvZ3Jlc3NSZWYgPSBwcm9ncmVzcztcblx0XHRcdFx0cHJvZ3Jlc3NTcGFuLmlubmVyVGV4dCA9IGRhdGFJbnRlcnBvbGF0aW9uKHByb2dyZXNzUmVmKTtcblx0XHRcdFx0aWYgKHByb2dyZXNzUmVmIDwgcHJvZ3Jlc3MpIHtcblx0XHRcdFx0XHRyYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVQcm9ncmVzcyk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR1cGRhdGVQcm9ncmVzcygpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ChangeDetectorRef, inject, signal, untracked } from '@angular/core';
|
|
2
2
|
import { assertInjector } from 'ngxtension/assert-injector';
|
|
3
|
-
import
|
|
3
|
+
import { DefaultLoadingManager } from 'three';
|
|
4
4
|
export function injectNgtsProgress(injector) {
|
|
5
5
|
return assertInjector(injectNgtsProgress, injector, () => {
|
|
6
6
|
const cdr = inject(ChangeDetectorRef);
|
|
7
7
|
const progress = signal({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });
|
|
8
8
|
let saveLastTotalLoaded = 0;
|
|
9
|
-
|
|
9
|
+
DefaultLoadingManager.onStart = (item, loaded, total) => {
|
|
10
10
|
untracked(() => {
|
|
11
11
|
progress.update((prev) => ({
|
|
12
12
|
...prev,
|
|
@@ -19,19 +19,19 @@ export function injectNgtsProgress(injector) {
|
|
|
19
19
|
});
|
|
20
20
|
cdr.detectChanges();
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
DefaultLoadingManager.onLoad = () => {
|
|
23
23
|
untracked(() => {
|
|
24
24
|
progress.update((prev) => ({ ...prev, active: false }));
|
|
25
25
|
});
|
|
26
26
|
cdr.detectChanges();
|
|
27
27
|
};
|
|
28
|
-
|
|
28
|
+
DefaultLoadingManager.onError = (url) => {
|
|
29
29
|
untracked(() => {
|
|
30
30
|
progress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));
|
|
31
31
|
});
|
|
32
32
|
cdr.detectChanges();
|
|
33
33
|
};
|
|
34
|
-
|
|
34
|
+
DefaultLoadingManager.onProgress = (item, loaded, total) => {
|
|
35
35
|
if (loaded === total)
|
|
36
36
|
saveLastTotalLoaded = total;
|
|
37
37
|
untracked(() => {
|
|
@@ -48,4 +48,4 @@ export function injectNgtsProgress(injector) {
|
|
|
48
48
|
return progress.asReadonly();
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbG9hZGVycy9zcmMvcHJvZ3Jlc3MvcHJvZ3Jlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFZLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFOUMsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFFBQW1CO0lBQ3JELE9BQU8sY0FBYyxDQUFDLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDeEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQU9wQixFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5RSxJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQztRQUU1QixxQkFBcUIsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDMUIsR0FBRyxJQUFJO29CQUNQLE1BQU0sRUFBRSxJQUFJO29CQUNaLElBQUk7b0JBQ0osTUFBTTtvQkFDTixLQUFLO29CQUNMLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLEdBQUc7aUJBQ2hGLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBRUYscUJBQXFCLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNuQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQyxDQUFDO1lBQ0gsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUVGLHFCQUFxQixDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3ZDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQUMsQ0FBQztZQUNILEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFFRixxQkFBcUIsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzFELElBQUksTUFBTSxLQUFLLEtBQUs7Z0JBQUUsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2xELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDMUIsR0FBRyxJQUFJO29CQUNQLElBQUk7b0JBQ0osTUFBTTtvQkFDTixLQUFLO29CQUNMLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHO2lCQUN2RixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBJbmplY3RvciwgaW5qZWN0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBEZWZhdWx0TG9hZGluZ01hbmFnZXIgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzUHJvZ3Jlc3MoaW5qZWN0b3I/OiBJbmplY3Rvcikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0Tmd0c1Byb2dyZXNzLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0XHRjb25zdCBwcm9ncmVzcyA9IHNpZ25hbDx7XG5cdFx0XHRlcnJvcnM6IHN0cmluZ1tdO1xuXHRcdFx0YWN0aXZlOiBib29sZWFuO1xuXHRcdFx0cHJvZ3Jlc3M6IG51bWJlcjtcblx0XHRcdGl0ZW06IHN0cmluZztcblx0XHRcdGxvYWRlZDogbnVtYmVyO1xuXHRcdFx0dG90YWw6IG51bWJlcjtcblx0XHR9Pih7IGVycm9yczogW10sIGFjdGl2ZTogZmFsc2UsIHByb2dyZXNzOiAwLCBpdGVtOiAnJywgbG9hZGVkOiAwLCB0b3RhbDogMCB9KTtcblxuXHRcdGxldCBzYXZlTGFzdFRvdGFsTG9hZGVkID0gMDtcblxuXHRcdERlZmF1bHRMb2FkaW5nTWFuYWdlci5vblN0YXJ0ID0gKGl0ZW0sIGxvYWRlZCwgdG90YWwpID0+IHtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHByb2dyZXNzLnVwZGF0ZSgocHJldikgPT4gKHtcblx0XHRcdFx0XHQuLi5wcmV2LFxuXHRcdFx0XHRcdGFjdGl2ZTogdHJ1ZSxcblx0XHRcdFx0XHRpdGVtLFxuXHRcdFx0XHRcdGxvYWRlZCxcblx0XHRcdFx0XHR0b3RhbCxcblx0XHRcdFx0XHRwcm9ncmVzczogKChsb2FkZWQgLSBzYXZlTGFzdFRvdGFsTG9hZGVkKSAvICh0b3RhbCAtIHNhdmVMYXN0VG90YWxMb2FkZWQpKSAqIDEwMCxcblx0XHRcdFx0fSkpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0fTtcblxuXHRcdERlZmF1bHRMb2FkaW5nTWFuYWdlci5vbkxvYWQgPSAoKSA9PiB7XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRwcm9ncmVzcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIGFjdGl2ZTogZmFsc2UgfSkpO1xuXHRcdFx0fSk7XG5cdFx0XHRjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH07XG5cblx0XHREZWZhdWx0TG9hZGluZ01hbmFnZXIub25FcnJvciA9ICh1cmwpID0+IHtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHByb2dyZXNzLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgZXJyb3JzOiBbLi4ucHJldi5lcnJvcnMsIHVybF0gfSkpO1xuXHRcdFx0fSk7XG5cdFx0XHRjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH07XG5cblx0XHREZWZhdWx0TG9hZGluZ01hbmFnZXIub25Qcm9ncmVzcyA9IChpdGVtLCBsb2FkZWQsIHRvdGFsKSA9PiB7XG5cdFx0XHRpZiAobG9hZGVkID09PSB0b3RhbCkgc2F2ZUxhc3RUb3RhbExvYWRlZCA9IHRvdGFsO1xuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0cHJvZ3Jlc3MudXBkYXRlKChwcmV2KSA9PiAoe1xuXHRcdFx0XHRcdC4uLnByZXYsXG5cdFx0XHRcdFx0aXRlbSxcblx0XHRcdFx0XHRsb2FkZWQsXG5cdFx0XHRcdFx0dG90YWwsXG5cdFx0XHRcdFx0cHJvZ3Jlc3M6ICgobG9hZGVkIC0gc2F2ZUxhc3RUb3RhbExvYWRlZCkgLyAodG90YWwgLSBzYXZlTGFzdFRvdGFsTG9hZGVkKSkgKiAxMDAgfHwgMTAwLFxuXHRcdFx0XHR9KSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0Y2RyLmRldGVjdENoYW5nZXMoKTtcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHByb2dyZXNzLmFzUmVhZG9ubHkoKTtcblx0fSk7XG59XG4iXX0=
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { effect
|
|
1
|
+
import { effect } from '@angular/core';
|
|
2
2
|
import { injectNgtLoader, injectNgtStore } from 'angular-three';
|
|
3
3
|
import { assertInjector } from 'ngxtension/assert-injector';
|
|
4
|
-
import
|
|
4
|
+
import { Texture, TextureLoader } from 'three';
|
|
5
5
|
function _injectNgtsTextureLoader(input, { onLoad, injector } = {}) {
|
|
6
6
|
return assertInjector(_injectNgtsTextureLoader, injector, () => {
|
|
7
7
|
const store = injectNgtStore();
|
|
8
|
-
const result = injectNgtLoader(() =>
|
|
8
|
+
const result = injectNgtLoader(() => TextureLoader, input);
|
|
9
9
|
effect(() => {
|
|
10
10
|
const textures = result();
|
|
11
11
|
if (!textures)
|
|
@@ -14,7 +14,7 @@ function _injectNgtsTextureLoader(input, { onLoad, injector } = {}) {
|
|
|
14
14
|
if ('initTexture' in gl) {
|
|
15
15
|
const array = Array.isArray(textures)
|
|
16
16
|
? textures
|
|
17
|
-
: textures instanceof
|
|
17
|
+
: textures instanceof Texture
|
|
18
18
|
? [textures]
|
|
19
19
|
: Object.values(textures);
|
|
20
20
|
if (onLoad)
|
|
@@ -26,7 +26,7 @@ function _injectNgtsTextureLoader(input, { onLoad, injector } = {}) {
|
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
_injectNgtsTextureLoader.preload = (input) => {
|
|
29
|
-
injectNgtLoader.preload(() =>
|
|
29
|
+
injectNgtLoader.preload(() => TextureLoader, input);
|
|
30
30
|
};
|
|
31
31
|
export const injectNgtsTextureLoader = _injectNgtsTextureLoader;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbG9hZGVycy9zcmMvdGV4dHVyZS1sb2FkZXIvdGV4dHVyZS1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUvQyxTQUFTLHdCQUF3QixDQUNoQyxLQUFtQixFQUNuQixFQUFFLE1BQU0sRUFBRSxRQUFRLEtBQXFFLEVBQUU7SUFFekYsT0FBTyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUM5RCxNQUFNLEtBQUssR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTNELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPO1lBQ3RCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsSUFBSSxhQUFhLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO29CQUNwQyxDQUFDLENBQUMsUUFBUTtvQkFDVixDQUFDLENBQUMsUUFBUSxZQUFZLE9BQU87d0JBQzVCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQzt3QkFDWixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxNQUFNO29CQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsd0JBQXdCLENBQUMsT0FBTyxHQUFHLENBQTRELEtBQW1CLEVBQUUsRUFBRTtJQUNySCxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFHRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBc0Isd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlZmZlY3QsIEluamVjdG9yLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdE5ndExvYWRlciwgaW5qZWN0Tmd0U3RvcmUsIE5ndExvYWRlclJlc3VsdHMgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgVGV4dHVyZSwgVGV4dHVyZUxvYWRlciB9IGZyb20gJ3RocmVlJztcblxuZnVuY3Rpb24gX2luamVjdE5ndHNUZXh0dXJlTG9hZGVyPFRJbnB1dCBleHRlbmRzIHN0cmluZ1tdIHwgc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG5cdGlucHV0OiAoKSA9PiBUSW5wdXQsXG5cdHsgb25Mb2FkLCBpbmplY3RvciB9OiB7IG9uTG9hZD86ICh0ZXh0dXJlOiBUZXh0dXJlW10pID0+IHZvaWQ7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9LFxuKTogU2lnbmFsPE5ndExvYWRlclJlc3VsdHM8VElucHV0LCBUZXh0dXJlPiB8IG51bGw+IHtcblx0cmV0dXJuIGFzc2VydEluamVjdG9yKF9pbmplY3ROZ3RzVGV4dHVyZUxvYWRlciwgaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gaW5qZWN0Tmd0TG9hZGVyKCgpID0+IFRleHR1cmVMb2FkZXIsIGlucHV0KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCB0ZXh0dXJlcyA9IHJlc3VsdCgpO1xuXHRcdFx0aWYgKCF0ZXh0dXJlcykgcmV0dXJuO1xuXHRcdFx0Y29uc3QgZ2wgPSBzdG9yZS5nZXQoJ2dsJyk7XG5cdFx0XHRpZiAoJ2luaXRUZXh0dXJlJyBpbiBnbCkge1xuXHRcdFx0XHRjb25zdCBhcnJheSA9IEFycmF5LmlzQXJyYXkodGV4dHVyZXMpXG5cdFx0XHRcdFx0PyB0ZXh0dXJlc1xuXHRcdFx0XHRcdDogdGV4dHVyZXMgaW5zdGFuY2VvZiBUZXh0dXJlXG5cdFx0XHRcdFx0XHQ/IFt0ZXh0dXJlc11cblx0XHRcdFx0XHRcdDogT2JqZWN0LnZhbHVlcyh0ZXh0dXJlcyk7XG5cdFx0XHRcdGlmIChvbkxvYWQpIG9uTG9hZChhcnJheSk7XG5cdFx0XHRcdGFycmF5LmZvckVhY2goZ2wuaW5pdFRleHR1cmUuYmluZChnbCkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSk7XG59XG5cbl9pbmplY3ROZ3RzVGV4dHVyZUxvYWRlci5wcmVsb2FkID0gPFRJbnB1dCBleHRlbmRzIHN0cmluZ1tdIHwgc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oaW5wdXQ6ICgpID0+IFRJbnB1dCkgPT4ge1xuXHRpbmplY3ROZ3RMb2FkZXIucHJlbG9hZCgoKSA9PiBUZXh0dXJlTG9hZGVyLCBpbnB1dCk7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzVGV4dHVyZUxvYWRlciA9IHR5cGVvZiBfaW5qZWN0Tmd0c1RleHR1cmVMb2FkZXI7XG5leHBvcnQgY29uc3QgaW5qZWN0Tmd0c1RleHR1cmVMb2FkZXI6IE5ndHNUZXh0dXJlTG9hZGVyID0gX2luamVjdE5ndHNUZXh0dXJlTG9hZGVyO1xuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input,
|
|
2
|
+
import { input, output, computed, effect, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
3
3
|
import { injectNgtRef, injectNgtStore, injectBeforeRender, NgtArgs } from 'angular-three';
|
|
4
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
4
5
|
import { OrbitControls } from 'three-stdlib';
|
|
5
6
|
|
|
6
7
|
const defaultOptions = {
|
|
@@ -11,13 +12,11 @@ const defaultOptions = {
|
|
|
11
12
|
};
|
|
12
13
|
class NgtsOrbitControls {
|
|
13
14
|
constructor() {
|
|
14
|
-
this.options = input(defaultOptions, {
|
|
15
|
-
transform: (value) => ({ ...defaultOptions, ...value }),
|
|
16
|
-
});
|
|
15
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
17
16
|
this.controlsRef = input(injectNgtRef());
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
17
|
+
this.changed = output();
|
|
18
|
+
this.started = output();
|
|
19
|
+
this.ended = output();
|
|
21
20
|
this.store = injectNgtStore();
|
|
22
21
|
this.invalidate = this.store.select('invalidate');
|
|
23
22
|
this.performanceRegress = this.store.select('performance', 'regress');
|
|
@@ -43,10 +42,10 @@ class NgtsOrbitControls {
|
|
|
43
42
|
}
|
|
44
43
|
setControls() {
|
|
45
44
|
effect(() => {
|
|
46
|
-
const [camera, defaultCamera,
|
|
45
|
+
const [camera, defaultCamera, controlsRef] = [this.camera(), this.defaultCamera(), this.controlsRef()];
|
|
47
46
|
const controlsCamera = camera || defaultCamera;
|
|
48
|
-
if (!
|
|
49
|
-
|
|
47
|
+
if (!controlsRef.nativeElement || controlsRef.nativeElement.object !== controlsCamera) {
|
|
48
|
+
controlsRef.nativeElement = new OrbitControls(controlsCamera);
|
|
50
49
|
}
|
|
51
50
|
});
|
|
52
51
|
}
|
|
@@ -96,33 +95,28 @@ class NgtsOrbitControls {
|
|
|
96
95
|
invalidate();
|
|
97
96
|
if (regress)
|
|
98
97
|
performanceRegress();
|
|
99
|
-
|
|
100
|
-
this.change.emit(e);
|
|
98
|
+
this.changed.emit(e);
|
|
101
99
|
};
|
|
102
|
-
const startCallback = this.
|
|
103
|
-
const endCallback = this.
|
|
100
|
+
const startCallback = this.started.emit.bind(this.started);
|
|
101
|
+
const endCallback = this.ended.emit.bind(this.ended);
|
|
104
102
|
controls.addEventListener('change', changeCallback);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (endCallback)
|
|
108
|
-
controls.addEventListener('end', endCallback);
|
|
103
|
+
controls.addEventListener('start', startCallback);
|
|
104
|
+
controls.addEventListener('end', endCallback);
|
|
109
105
|
onCleanup(() => {
|
|
110
106
|
controls.removeEventListener('change', changeCallback);
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
if (endCallback)
|
|
114
|
-
controls.removeEventListener('end', endCallback);
|
|
107
|
+
controls.removeEventListener('start', startCallback);
|
|
108
|
+
controls.removeEventListener('end', endCallback);
|
|
115
109
|
});
|
|
116
110
|
});
|
|
117
111
|
}
|
|
118
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsOrbitControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtsOrbitControls, isStandalone: true, selector: "ngts-orbit-controls", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, controlsRef: { classPropertyName: "controlsRef", publicName: "controlsRef", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", started: "started", ended: "ended" }, ngImport: i0, template: `
|
|
120
114
|
<ngt-primitive ngtCompound *args="args()" [enableDamping]="enableDamping()">
|
|
121
115
|
<ng-content />
|
|
122
116
|
</ngt-primitive>
|
|
123
117
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
124
118
|
}
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsOrbitControls, decorators: [{
|
|
126
120
|
type: Component,
|
|
127
121
|
args: [{
|
|
128
122
|
selector: 'ngts-orbit-controls',
|
|
@@ -135,13 +129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
135
129
|
imports: [NgtArgs],
|
|
136
130
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
137
131
|
}]
|
|
138
|
-
}], ctorParameters: () => []
|
|
139
|
-
type: Output
|
|
140
|
-
}], start: [{
|
|
141
|
-
type: Output
|
|
142
|
-
}], end: [{
|
|
143
|
-
type: Output
|
|
144
|
-
}] } });
|
|
132
|
+
}], ctorParameters: () => [] });
|
|
145
133
|
|
|
146
134
|
/**
|
|
147
135
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-controls.mjs","sources":["../../../../libs/soba/controls/src/orbit-controls/orbit-controls.ts","../../../../libs/soba/controls/src/angular-three-soba-controls.ts"],"sourcesContent":["import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EventEmitter, input, Output } from '@angular/core';\nimport {\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tNgtArgs,\n\ttype NgtCamera,\n\ttype NgtVector3,\n} from 'angular-three';\nimport type * as THREE from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nexport interface NgtsOrbitControlsState {\n\tcamera?: THREE.Camera;\n\tdomElement?: HTMLElement;\n\ttarget?: NgtVector3;\n\tmakeDefault: boolean;\n\tregress: boolean;\n\tenableDamping: boolean;\n\tkeyEvents: boolean | HTMLElement;\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends three-stdlib|OrbitControls\n\t\t */\n\t\t'ngts-orbit-controls': OrbitControls & NgtsOrbitControlsState;\n\t}\n}\n\nconst defaultOptions: Partial<NgtsOrbitControlsState> = {\n\tenableDamping: true,\n\tregress: false,\n\tmakeDefault: false,\n\tkeyEvents: false,\n};\n\n@Component({\n\tselector: 'ngts-orbit-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive ngtCompound *args=\"args()\" [enableDamping]=\"enableDamping()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrbitControls {\n\toptions = input(defaultOptions, {\n\t\ttransform: (value: Partial<NgtsOrbitControlsState>) => ({ ...defaultOptions, ...value }),\n\t});\n\tcontrolsRef = input(injectNgtRef<OrbitControls>());\n\n\t@Output() change = new EventEmitter<THREE.Event>();\n\t@Output() start = new EventEmitter<THREE.Event>();\n\t@Output() end = new EventEmitter<THREE.Event>();\n\n\tprivate store = injectNgtStore();\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\n\tprivate camera = computed(() => this.options().camera);\n\tprivate regress = computed(() => this.options().regress);\n\tprivate keyEvents = computed(() => this.options().keyEvents);\n\tprivate domElement = computed(() => this.options().domElement);\n\tprivate makeDefault = computed(() => this.options().makeDefault);\n\n\tprotected args = computed(() => [this.controlsRef().nativeElement]);\n\tprotected enableDamping = computed(() => this.options().enableDamping);\n\n\tconstructor() {\n\t\tinjectBeforeRender(\n\t\t\t() => {\n\t\t\t\tconst controls = this.controlsRef().nativeElement;\n\t\t\t\tif (controls?.enabled) {\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\tthis.setControls();\n\t\tthis.connectElement();\n\t\tthis.makeControlsDefault();\n\t\tthis.setEvents();\n\t}\n\n\tprivate setControls() {\n\t\teffect(() => {\n\t\t\tconst [camera, defaultCamera, controls] = [this.camera(), this.defaultCamera(), this.controlsRef().nativeElement];\n\t\t\tconst controlsCamera = camera || defaultCamera;\n\t\t\tif (!controls || controls.object !== controlsCamera) {\n\t\t\t\tthis.controlsRef().nativeElement = new OrbitControls(controlsCamera as NgtCamera);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate connectElement() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [keyEvents, domElement, controls] = [\n\t\t\t\tthis.keyEvents(),\n\t\t\t\tthis.domElement() || this.store.get('events', 'connected') || this.glDomElement(),\n\t\t\t\tthis.controlsRef().nativeElement,\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tif (keyEvents) {\n\t\t\t\tcontrols.connect(keyEvents === true ? domElement : keyEvents);\n\t\t\t} else {\n\t\t\t\tcontrols.connect(domElement);\n\t\t\t}\n\t\t\tonCleanup(() => void controls.dispose());\n\t\t});\n\t}\n\n\tprivate makeControlsDefault() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controlsRef().nativeElement, this.makeDefault()];\n\t\t\tif (!controls) return;\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.get('controls');\n\t\t\t\tthis.store.update({ controls });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setEvents() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controlsRef().nativeElement,\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tconst changeCallback: (e: THREE.Event) => void = (e) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tif (this.change.observed) this.change.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.start.observed ? this.start.emit.bind(this.start) : null;\n\t\t\tconst endCallback = this.end.observed ? this.end.emit.bind(this.end) : null;\n\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\tif (startCallback) controls.addEventListener('start', startCallback);\n\t\t\tif (endCallback) controls.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\tif (startCallback) controls.removeEventListener('start', startCallback);\n\t\t\t\tif (endCallback) controls.removeEventListener('end', endCallback);\n\t\t\t});\n\t\t});\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-soba-controls.mjs","sources":["../../../../libs/soba/controls/src/orbit-controls/orbit-controls.ts","../../../../libs/soba/controls/src/angular-three-soba-controls.ts"],"sourcesContent":["import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, output } from '@angular/core';\nimport {\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tNgtArgs,\n\tNgtCamera,\n\tNgtInjectedRef,\n\tNgtVector3,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Camera, Event } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nexport interface NgtsOrbitControlsState {\n\tcamera?: Camera;\n\tdomElement?: HTMLElement;\n\ttarget?: NgtVector3;\n\tmakeDefault: boolean;\n\tregress: boolean;\n\tenableDamping: boolean;\n\tkeyEvents: boolean | HTMLElement;\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends three-stdlib|OrbitControls\n\t\t */\n\t\t'ngts-orbit-controls': OrbitControls & NgtsOrbitControlsState;\n\t}\n}\n\nconst defaultOptions: NgtsOrbitControlsState = {\n\tenableDamping: true,\n\tregress: false,\n\tmakeDefault: false,\n\tkeyEvents: false,\n};\n\n@Component({\n\tselector: 'ngts-orbit-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive ngtCompound *args=\"args()\" [enableDamping]=\"enableDamping()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrbitControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tcontrolsRef = input<NgtInjectedRef<OrbitControls>>(injectNgtRef());\n\n\tchanged = output<Event>();\n\tstarted = output<Event>();\n\tended = output<Event>();\n\n\tprivate store = injectNgtStore();\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\n\tprivate camera = computed(() => this.options().camera);\n\tprivate regress = computed(() => this.options().regress);\n\tprivate keyEvents = computed(() => this.options().keyEvents);\n\tprivate domElement = computed(() => this.options().domElement);\n\tprivate makeDefault = computed(() => this.options().makeDefault);\n\n\tprotected args = computed(() => [this.controlsRef().nativeElement]);\n\tprotected enableDamping = computed(() => this.options().enableDamping);\n\n\tconstructor() {\n\t\tinjectBeforeRender(\n\t\t\t() => {\n\t\t\t\tconst controls = this.controlsRef().nativeElement;\n\t\t\t\tif (controls?.enabled) {\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\tthis.setControls();\n\t\tthis.connectElement();\n\t\tthis.makeControlsDefault();\n\t\tthis.setEvents();\n\t}\n\n\tprivate setControls() {\n\t\teffect(() => {\n\t\t\tconst [camera, defaultCamera, controlsRef] = [this.camera(), this.defaultCamera(), this.controlsRef()];\n\t\t\tconst controlsCamera = camera || defaultCamera;\n\t\t\tif (!controlsRef.nativeElement || controlsRef.nativeElement.object !== controlsCamera) {\n\t\t\t\tcontrolsRef.nativeElement = new OrbitControls(controlsCamera as NgtCamera);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate connectElement() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [keyEvents, domElement, controls] = [\n\t\t\t\tthis.keyEvents(),\n\t\t\t\tthis.domElement() || this.store.get('events', 'connected') || this.glDomElement(),\n\t\t\t\tthis.controlsRef().nativeElement,\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tif (keyEvents) {\n\t\t\t\tcontrols.connect(keyEvents === true ? domElement : keyEvents);\n\t\t\t} else {\n\t\t\t\tcontrols.connect(domElement);\n\t\t\t}\n\t\t\tonCleanup(() => void controls.dispose());\n\t\t});\n\t}\n\n\tprivate makeControlsDefault() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controlsRef().nativeElement, this.makeDefault()];\n\t\t\tif (!controls) return;\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.get('controls');\n\t\t\t\tthis.store.update({ controls });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setEvents() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controlsRef().nativeElement,\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tconst changeCallback: (e: Event) => void = (e) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\tcontrols.addEventListener('start', startCallback);\n\t\t\tcontrols.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\tcontrols.removeEventListener('start', startCallback);\n\t\t\t\tcontrols.removeEventListener('end', endCallback);\n\t\t\t});\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@ import { assertInjector } from 'ngxtension/assert-injector';
|
|
|
3
3
|
import { DRACOLoader, MeshoptDecoder, GLTFLoader } from 'three-stdlib';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { inject, ChangeDetectorRef, signal, untracked, computed, input, viewChild, effect, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
6
|
-
import
|
|
6
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
7
|
+
import { DefaultLoadingManager, TextureLoader, Texture } from 'three';
|
|
7
8
|
|
|
8
9
|
let dracoLoader = null;
|
|
9
10
|
let decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';
|
|
@@ -25,10 +26,7 @@ function _extensions(useDraco, useMeshOpt, extensions) {
|
|
|
25
26
|
};
|
|
26
27
|
}
|
|
27
28
|
function _injectNgtsGLTFLoader(path, { useDraco = true, useMeshOpt = true, injector, extensions, } = {}) {
|
|
28
|
-
return assertInjector(_injectNgtsGLTFLoader, injector, () => injectNgtLoader(() => GLTFLoader, path, {
|
|
29
|
-
// TODO: fix "as any" when three-stdlib is updated with THREE 0.156
|
|
30
|
-
extensions: _extensions(useDraco, useMeshOpt, extensions),
|
|
31
|
-
}));
|
|
29
|
+
return assertInjector(_injectNgtsGLTFLoader, injector, () => injectNgtLoader(() => GLTFLoader, path, { extensions: _extensions(useDraco, useMeshOpt, extensions) }));
|
|
32
30
|
}
|
|
33
31
|
_injectNgtsGLTFLoader.preload = (path, { useDraco = true, useMeshOpt = true, extensions, } = {}) => {
|
|
34
32
|
injectNgtLoader.preload(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));
|
|
@@ -43,7 +41,7 @@ function injectNgtsProgress(injector) {
|
|
|
43
41
|
const cdr = inject(ChangeDetectorRef);
|
|
44
42
|
const progress = signal({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });
|
|
45
43
|
let saveLastTotalLoaded = 0;
|
|
46
|
-
|
|
44
|
+
DefaultLoadingManager.onStart = (item, loaded, total) => {
|
|
47
45
|
untracked(() => {
|
|
48
46
|
progress.update((prev) => ({
|
|
49
47
|
...prev,
|
|
@@ -56,19 +54,19 @@ function injectNgtsProgress(injector) {
|
|
|
56
54
|
});
|
|
57
55
|
cdr.detectChanges();
|
|
58
56
|
};
|
|
59
|
-
|
|
57
|
+
DefaultLoadingManager.onLoad = () => {
|
|
60
58
|
untracked(() => {
|
|
61
59
|
progress.update((prev) => ({ ...prev, active: false }));
|
|
62
60
|
});
|
|
63
61
|
cdr.detectChanges();
|
|
64
62
|
};
|
|
65
|
-
|
|
63
|
+
DefaultLoadingManager.onError = (url) => {
|
|
66
64
|
untracked(() => {
|
|
67
65
|
progress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));
|
|
68
66
|
});
|
|
69
67
|
cdr.detectChanges();
|
|
70
68
|
};
|
|
71
|
-
|
|
69
|
+
DefaultLoadingManager.onProgress = (item, loaded, total) => {
|
|
72
70
|
if (loaded === total)
|
|
73
71
|
saveLastTotalLoaded = total;
|
|
74
72
|
untracked(() => {
|
|
@@ -87,17 +85,26 @@ function injectNgtsProgress(injector) {
|
|
|
87
85
|
}
|
|
88
86
|
|
|
89
87
|
const defaultDataInterpolation = (p) => `Loading ${p.toFixed(2)}%`;
|
|
88
|
+
const defaultOptions = {
|
|
89
|
+
containerClass: '',
|
|
90
|
+
innerClass: '',
|
|
91
|
+
barClass: '',
|
|
92
|
+
dataClass: '',
|
|
93
|
+
dataInterpolation: defaultDataInterpolation,
|
|
94
|
+
initialState: (value) => value,
|
|
95
|
+
};
|
|
90
96
|
class NgtsLoader {
|
|
91
97
|
constructor() {
|
|
92
98
|
this.progressState = injectNgtsProgress();
|
|
93
99
|
this.active = computed(() => this.progressState().active);
|
|
94
100
|
this.progress = computed(() => this.progressState().progress);
|
|
95
|
-
this.
|
|
96
|
-
this.
|
|
97
|
-
this.
|
|
98
|
-
this.
|
|
99
|
-
this.
|
|
100
|
-
this.initialState =
|
|
101
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
102
|
+
this.containerClass = computed(() => this.options().containerClass);
|
|
103
|
+
this.innerClass = computed(() => this.options().innerClass);
|
|
104
|
+
this.barClass = computed(() => this.options().barClass);
|
|
105
|
+
this.dataClass = computed(() => this.options().dataClass);
|
|
106
|
+
this.initialState = computed(() => this.options().initialState);
|
|
107
|
+
this.dataInterpolation = computed(() => this.options().dataInterpolation);
|
|
101
108
|
this.progressSpanRef = viewChild('progressSpanRef');
|
|
102
109
|
this.shown = signal(this.initialState()(this.active()));
|
|
103
110
|
this.setShown();
|
|
@@ -135,37 +142,45 @@ class NgtsLoader {
|
|
|
135
142
|
onCleanup(() => cancelAnimationFrame(rafId));
|
|
136
143
|
});
|
|
137
144
|
}
|
|
138
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
146
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
140
147
|
@if (shown()) {
|
|
141
148
|
<div
|
|
142
149
|
class="ngts-loader-container"
|
|
143
|
-
[class]="containerClass()"
|
|
150
|
+
[class]="containerClass() || ''"
|
|
144
151
|
[style.--ngts-loader-container-opacity]="active() ? 1 : 0"
|
|
145
152
|
>
|
|
146
153
|
<div>
|
|
147
|
-
<div class="ngts-loader-inner" [class]="innerClass()">
|
|
148
|
-
<div
|
|
149
|
-
|
|
154
|
+
<div class="ngts-loader-inner" [class]="innerClass() || ''">
|
|
155
|
+
<div
|
|
156
|
+
class="ngts-loader-bar"
|
|
157
|
+
[class]="barClass() || ''"
|
|
158
|
+
[style.--ngts-loader-bar-scale]="progress() / 100"
|
|
159
|
+
></div>
|
|
160
|
+
<span #progressSpanRef class="ngts-loader-data" [class]="dataClass() || ''"></span>
|
|
150
161
|
</div>
|
|
151
162
|
</div>
|
|
152
163
|
</div>
|
|
153
164
|
}
|
|
154
165
|
`, isInline: true, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:#fff;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
155
166
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsLoader, decorators: [{
|
|
157
168
|
type: Component,
|
|
158
169
|
args: [{ selector: 'ngts-loader', standalone: true, template: `
|
|
159
170
|
@if (shown()) {
|
|
160
171
|
<div
|
|
161
172
|
class="ngts-loader-container"
|
|
162
|
-
[class]="containerClass()"
|
|
173
|
+
[class]="containerClass() || ''"
|
|
163
174
|
[style.--ngts-loader-container-opacity]="active() ? 1 : 0"
|
|
164
175
|
>
|
|
165
176
|
<div>
|
|
166
|
-
<div class="ngts-loader-inner" [class]="innerClass()">
|
|
167
|
-
<div
|
|
168
|
-
|
|
177
|
+
<div class="ngts-loader-inner" [class]="innerClass() || ''">
|
|
178
|
+
<div
|
|
179
|
+
class="ngts-loader-bar"
|
|
180
|
+
[class]="barClass() || ''"
|
|
181
|
+
[style.--ngts-loader-bar-scale]="progress() / 100"
|
|
182
|
+
></div>
|
|
183
|
+
<span #progressSpanRef class="ngts-loader-data" [class]="dataClass() || ''"></span>
|
|
169
184
|
</div>
|
|
170
185
|
</div>
|
|
171
186
|
</div>
|
|
@@ -176,7 +191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
176
191
|
function _injectNgtsTextureLoader(input, { onLoad, injector } = {}) {
|
|
177
192
|
return assertInjector(_injectNgtsTextureLoader, injector, () => {
|
|
178
193
|
const store = injectNgtStore();
|
|
179
|
-
const result = injectNgtLoader(() =>
|
|
194
|
+
const result = injectNgtLoader(() => TextureLoader, input);
|
|
180
195
|
effect(() => {
|
|
181
196
|
const textures = result();
|
|
182
197
|
if (!textures)
|
|
@@ -185,7 +200,7 @@ function _injectNgtsTextureLoader(input, { onLoad, injector } = {}) {
|
|
|
185
200
|
if ('initTexture' in gl) {
|
|
186
201
|
const array = Array.isArray(textures)
|
|
187
202
|
? textures
|
|
188
|
-
: textures instanceof
|
|
203
|
+
: textures instanceof Texture
|
|
189
204
|
? [textures]
|
|
190
205
|
: Object.values(textures);
|
|
191
206
|
if (onLoad)
|
|
@@ -197,7 +212,7 @@ function _injectNgtsTextureLoader(input, { onLoad, injector } = {}) {
|
|
|
197
212
|
});
|
|
198
213
|
}
|
|
199
214
|
_injectNgtsTextureLoader.preload = (input) => {
|
|
200
|
-
injectNgtLoader.preload(() =>
|
|
215
|
+
injectNgtLoader.preload(() => TextureLoader, input);
|
|
201
216
|
};
|
|
202
217
|
const injectNgtsTextureLoader = _injectNgtsTextureLoader;
|
|
203
218
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-loaders.mjs","sources":["../../../../libs/soba/loaders/src/gltf-loader/gltf-loader.ts","../../../../libs/soba/loaders/src/progress/progress.ts","../../../../libs/soba/loaders/src/loader/loader.ts","../../../../libs/soba/loaders/src/texture-loader/texture-loader.ts","../../../../libs/soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import type { Injector, Signal } from '@angular/core';\nimport { injectNgtLoader, type NgtLoaderResults, type NgtObjectMap } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport type * as THREE from 'three';\nimport { DRACOLoader, GLTFLoader, MeshoptDecoder, type GLTF } from 'three-stdlib';\n\nlet dracoLoader: DRACOLoader | null = null;\nlet decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n\treturn (loader: THREE.Loader) => {\n\t\tif (extensions) {\n\t\t\textensions(loader as GLTFLoader);\n\t\t}\n\n\t\tif (useDraco) {\n\t\t\tif (!dracoLoader) {\n\t\t\t\tdracoLoader = new DRACOLoader();\n\t\t\t}\n\n\t\t\tdracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : decoderPath);\n\t\t\t(loader as GLTFLoader).setDRACOLoader(dracoLoader);\n\t\t}\n\t\tif (useMeshOpt) {\n\t\t\t(loader as GLTFLoader).setMeshoptDecoder(\n\t\t\t\ttypeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder,\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport type NgtsGLTF<T extends Partial<NgtObjectMap>> = GLTF & NgtObjectMap & T;\n\nfunction _injectNgtsGLTFLoader<TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\tinjector,\n\t\textensions,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\tinjector?: Injector;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t} = {},\n): Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null> {\n\treturn assertInjector(_injectNgtsGLTFLoader, injector, () =>\n\t\tinjectNgtLoader(() => GLTFLoader, path, {\n\t\t\t// TODO: fix \"as any\" when three-stdlib is updated with THREE 0.156\n\t\t\textensions: _extensions(useDraco, useMeshOpt, extensions),\n\t\t}),\n\t) as Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null>;\n}\n\n_injectNgtsGLTFLoader.preload = <TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\textensions,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t} = {},\n) => {\n\tinjectNgtLoader.preload(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions) as any);\n};\n\n_injectNgtsGLTFLoader.setDecoderPath = (path: string) => {\n\tdecoderPath = path;\n};\n\nexport type NgtsGLTFLoader = typeof _injectNgtsGLTFLoader;\nexport const injectNgtsGLTFLoader: NgtsGLTFLoader = _injectNgtsGLTFLoader;\n","import { ChangeDetectorRef, inject, signal, untracked, type Injector } from '@angular/core';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\n\nexport function injectNgtsProgress(injector?: Injector) {\n\treturn assertInjector(injectNgtsProgress, injector, () => {\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst progress = signal<{\n\t\t\terrors: string[];\n\t\t\tactive: boolean;\n\t\t\tprogress: number;\n\t\t\titem: string;\n\t\t\tloaded: number;\n\t\t\ttotal: number;\n\t\t}>({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });\n\n\t\tlet saveLastTotalLoaded = 0;\n\n\t\tTHREE.DefaultLoadingManager.onStart = (item, loaded, total) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tactive: true,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onLoad = () => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, active: false }));\n\t\t\t});\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onError = (url) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));\n\t\t\t});\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {\n\t\t\tif (loaded === total) saveLastTotalLoaded = total;\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\treturn progress.asReadonly();\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinput,\n\tsignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { injectNgtsProgress } from '../progress/progress';\n\nconst defaultDataInterpolation = (p: number) => `Loading ${p.toFixed(2)}%`;\n\n@Component({\n\tselector: 'ngts-loader',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (shown()) {\n\t\t\t<div\n\t\t\t\tclass=\"ngts-loader-container\"\n\t\t\t\t[class]=\"containerClass()\"\n\t\t\t\t[style.--ngts-loader-container-opacity]=\"active() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<div class=\"ngts-loader-inner\" [class]=\"innerClass()\">\n\t\t\t\t\t\t<div class=\"ngts-loader-bar\" [class]=\"barClass()\" [style.--ngts-loader-bar-scale]=\"progress() / 100\"></div>\n\t\t\t\t\t\t<span #progressSpanRef class=\"ngts-loader-data\" [class]=\"dataClass()\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\t`,\n\tstyleUrls: ['./loader.css'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsLoader {\n\tprivate progressState = injectNgtsProgress();\n\n\tactive = computed(() => this.progressState().active);\n\tprogress = computed(() => this.progressState().progress);\n\n\tcontainerClass = input<string>('');\n\tinnerClass = input<string>('');\n\tbarClass = input<string>('');\n\tdataClass = input<string>('');\n\tdataInterpolation = input<(value: number) => string>(defaultDataInterpolation);\n\tinitialState = input<(value: boolean) => boolean>((active) => active);\n\n\tprogressSpanRef = viewChild<ElementRef<HTMLSpanElement>>('progressSpanRef');\n\n\tshown = signal(this.initialState()(this.active()));\n\n\tconstructor() {\n\t\tthis.setShown();\n\t\tthis.updateProgress();\n\t}\n\n\tprivate setShown() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [active, lastShown] = [this.active(), untracked(this.shown)];\n\t\t\tif (lastShown !== active) {\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tthis.shown.set(active);\n\t\t\t\t}, 300);\n\t\t\t\tonCleanup(() => clearTimeout(timeoutId));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updateProgress() {\n\t\tlet progressRef = 0;\n\t\tlet rafId: ReturnType<typeof requestAnimationFrame>;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [dataInterpolation, progress] = [this.dataInterpolation(), this.progress()];\n\t\t\tconst updateProgress = () => {\n\t\t\t\tconst progressSpan = this.progressSpanRef()?.nativeElement;\n\t\t\t\tif (!progressSpan) return;\n\t\t\t\tprogressRef += (progress - progressRef) / 2;\n\t\t\t\tif (progressRef > 0.95 * progress || progress === 100) progressRef = progress;\n\t\t\t\tprogressSpan.innerText = dataInterpolation(progressRef);\n\t\t\t\tif (progressRef < progress) {\n\t\t\t\t\trafId = requestAnimationFrame(updateProgress);\n\t\t\t\t}\n\t\t\t};\n\t\t\tupdateProgress();\n\t\t\tonCleanup(() => cancelAnimationFrame(rafId));\n\t\t});\n\t}\n}\n","import { effect, Injector, type Signal } from '@angular/core';\nimport { injectNgtLoader, injectNgtStore, type NgtLoaderResults } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\n\nfunction _injectNgtsTextureLoader<TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n\t{ onLoad, injector }: { onLoad?: (texture: THREE.Texture[]) => void; injector?: Injector } = {},\n): Signal<NgtLoaderResults<TInput, THREE.Texture> | null> {\n\treturn assertInjector(_injectNgtsTextureLoader, injector, () => {\n\t\tconst store = injectNgtStore();\n\t\tconst result = injectNgtLoader(() => THREE.TextureLoader, input);\n\n\t\teffect(() => {\n\t\t\tconst textures = result();\n\t\t\tif (!textures) return;\n\t\t\tconst gl = store.get('gl');\n\t\t\tif ('initTexture' in gl) {\n\t\t\t\tconst array = Array.isArray(textures)\n\t\t\t\t\t? textures\n\t\t\t\t\t: textures instanceof THREE.Texture\n\t\t\t\t\t\t? [textures]\n\t\t\t\t\t\t: Object.values(textures);\n\t\t\t\tif (onLoad) onLoad(array);\n\t\t\t\tarray.forEach(gl.initTexture.bind(gl));\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t});\n}\n\n_injectNgtsTextureLoader.preload = <TInput extends string[] | string | Record<string, string>>(input: () => TInput) => {\n\tinjectNgtLoader.preload(() => THREE.TextureLoader, input);\n};\n\nexport type NgtsTextureLoader = typeof _injectNgtsTextureLoader;\nexport const injectNgtsTextureLoader: NgtsTextureLoader = _injectNgtsTextureLoader;\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-soba-loaders.mjs","sources":["../../../../libs/soba/loaders/src/gltf-loader/gltf-loader.ts","../../../../libs/soba/loaders/src/progress/progress.ts","../../../../libs/soba/loaders/src/loader/loader.ts","../../../../libs/soba/loaders/src/texture-loader/texture-loader.ts","../../../../libs/soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import { Injector, Signal } from '@angular/core';\nimport { NgtLoaderResults, NgtObjectMap, injectNgtLoader } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Loader } from 'three';\nimport { DRACOLoader, GLTF, GLTFLoader, MeshoptDecoder } from 'three-stdlib';\n\nlet dracoLoader: DRACOLoader | null = null;\nlet decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n\treturn (loader: Loader) => {\n\t\tif (extensions) {\n\t\t\textensions(loader as GLTFLoader);\n\t\t}\n\n\t\tif (useDraco) {\n\t\t\tif (!dracoLoader) {\n\t\t\t\tdracoLoader = new DRACOLoader();\n\t\t\t}\n\n\t\t\tdracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : decoderPath);\n\t\t\t(loader as GLTFLoader).setDRACOLoader(dracoLoader);\n\t\t}\n\t\tif (useMeshOpt) {\n\t\t\t(loader as GLTFLoader).setMeshoptDecoder(\n\t\t\t\ttypeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder,\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport type NgtsGLTF<T extends Partial<NgtObjectMap>> = GLTF & NgtObjectMap & T;\n\nfunction _injectNgtsGLTFLoader<TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\tinjector,\n\t\textensions,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\tinjector?: Injector;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t} = {},\n): Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null> {\n\treturn assertInjector(_injectNgtsGLTFLoader, injector, () =>\n\t\tinjectNgtLoader(() => GLTFLoader, path, { extensions: _extensions(useDraco, useMeshOpt, extensions) }),\n\t) as Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null>;\n}\n\n_injectNgtsGLTFLoader.preload = <TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\textensions,\n\t}: { useDraco?: boolean | string; useMeshOpt?: boolean; extensions?: (loader: GLTFLoader) => void } = {},\n) => {\n\tinjectNgtLoader.preload(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions) as any);\n};\n\n_injectNgtsGLTFLoader.setDecoderPath = (path: string) => {\n\tdecoderPath = path;\n};\n\nexport type NgtsGLTFLoader = typeof _injectNgtsGLTFLoader;\nexport const injectNgtsGLTFLoader: NgtsGLTFLoader = _injectNgtsGLTFLoader;\n","import { ChangeDetectorRef, Injector, inject, signal, untracked } from '@angular/core';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { DefaultLoadingManager } from 'three';\n\nexport function injectNgtsProgress(injector?: Injector) {\n\treturn assertInjector(injectNgtsProgress, injector, () => {\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst progress = signal<{\n\t\t\terrors: string[];\n\t\t\tactive: boolean;\n\t\t\tprogress: number;\n\t\t\titem: string;\n\t\t\tloaded: number;\n\t\t\ttotal: number;\n\t\t}>({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });\n\n\t\tlet saveLastTotalLoaded = 0;\n\n\t\tDefaultLoadingManager.onStart = (item, loaded, total) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tactive: true,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tDefaultLoadingManager.onLoad = () => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, active: false }));\n\t\t\t});\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tDefaultLoadingManager.onError = (url) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));\n\t\t\t});\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tDefaultLoadingManager.onProgress = (item, loaded, total) => {\n\t\t\tif (loaded === total) saveLastTotalLoaded = total;\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\treturn progress.asReadonly();\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinput,\n\tsignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { injectNgtsProgress } from '../progress/progress';\n\nconst defaultDataInterpolation = (p: number) => `Loading ${p.toFixed(2)}%`;\n\nexport interface NgtsLoaderState {\n\tcontainerClass?: string;\n\tinnerClass?: string;\n\tbarClass?: string;\n\tdataClass?: string;\n\tdataInterpolation: (value: number) => string;\n\tinitialState: (value: boolean) => boolean;\n}\n\nconst defaultOptions: NgtsLoaderState = {\n\tcontainerClass: '',\n\tinnerClass: '',\n\tbarClass: '',\n\tdataClass: '',\n\tdataInterpolation: defaultDataInterpolation,\n\tinitialState: (value) => value,\n};\n\n@Component({\n\tselector: 'ngts-loader',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (shown()) {\n\t\t\t<div\n\t\t\t\tclass=\"ngts-loader-container\"\n\t\t\t\t[class]=\"containerClass() || ''\"\n\t\t\t\t[style.--ngts-loader-container-opacity]=\"active() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<div class=\"ngts-loader-inner\" [class]=\"innerClass() || ''\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"ngts-loader-bar\"\n\t\t\t\t\t\t\t[class]=\"barClass() || ''\"\n\t\t\t\t\t\t\t[style.--ngts-loader-bar-scale]=\"progress() / 100\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t\t<span #progressSpanRef class=\"ngts-loader-data\" [class]=\"dataClass() || ''\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\t`,\n\tstyleUrls: ['./loader.css'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsLoader {\n\tprivate progressState = injectNgtsProgress();\n\n\tactive = computed(() => this.progressState().active);\n\tprogress = computed(() => this.progressState().progress);\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tcontainerClass = computed(() => this.options().containerClass);\n\tinnerClass = computed(() => this.options().innerClass);\n\tbarClass = computed(() => this.options().barClass);\n\tdataClass = computed(() => this.options().dataClass);\n\tinitialState = computed(() => this.options().initialState);\n\tdataInterpolation = computed(() => this.options().dataInterpolation);\n\n\tprogressSpanRef = viewChild<ElementRef<HTMLSpanElement>>('progressSpanRef');\n\n\tshown = signal(this.initialState()(this.active()));\n\n\tconstructor() {\n\t\tthis.setShown();\n\t\tthis.updateProgress();\n\t}\n\n\tprivate setShown() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [active, lastShown] = [this.active(), untracked(this.shown)];\n\t\t\tif (lastShown !== active) {\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tthis.shown.set(active);\n\t\t\t\t}, 300);\n\t\t\t\tonCleanup(() => clearTimeout(timeoutId));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updateProgress() {\n\t\tlet progressRef = 0;\n\t\tlet rafId: ReturnType<typeof requestAnimationFrame>;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [dataInterpolation, progress] = [this.dataInterpolation(), this.progress()];\n\t\t\tconst updateProgress = () => {\n\t\t\t\tconst progressSpan = this.progressSpanRef()?.nativeElement;\n\t\t\t\tif (!progressSpan) return;\n\t\t\t\tprogressRef += (progress - progressRef) / 2;\n\t\t\t\tif (progressRef > 0.95 * progress || progress === 100) progressRef = progress;\n\t\t\t\tprogressSpan.innerText = dataInterpolation(progressRef);\n\t\t\t\tif (progressRef < progress) {\n\t\t\t\t\trafId = requestAnimationFrame(updateProgress);\n\t\t\t\t}\n\t\t\t};\n\t\t\tupdateProgress();\n\t\t\tonCleanup(() => cancelAnimationFrame(rafId));\n\t\t});\n\t}\n}\n","import { effect, Injector, Signal } from '@angular/core';\nimport { injectNgtLoader, injectNgtStore, NgtLoaderResults } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Texture, TextureLoader } from 'three';\n\nfunction _injectNgtsTextureLoader<TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n\t{ onLoad, injector }: { onLoad?: (texture: Texture[]) => void; injector?: Injector } = {},\n): Signal<NgtLoaderResults<TInput, Texture> | null> {\n\treturn assertInjector(_injectNgtsTextureLoader, injector, () => {\n\t\tconst store = injectNgtStore();\n\t\tconst result = injectNgtLoader(() => TextureLoader, input);\n\n\t\teffect(() => {\n\t\t\tconst textures = result();\n\t\t\tif (!textures) return;\n\t\t\tconst gl = store.get('gl');\n\t\t\tif ('initTexture' in gl) {\n\t\t\t\tconst array = Array.isArray(textures)\n\t\t\t\t\t? textures\n\t\t\t\t\t: textures instanceof Texture\n\t\t\t\t\t\t? [textures]\n\t\t\t\t\t\t: Object.values(textures);\n\t\t\t\tif (onLoad) onLoad(array);\n\t\t\t\tarray.forEach(gl.initTexture.bind(gl));\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t});\n}\n\n_injectNgtsTextureLoader.preload = <TInput extends string[] | string | Record<string, string>>(input: () => TInput) => {\n\tinjectNgtLoader.preload(() => TextureLoader, input);\n};\n\nexport type NgtsTextureLoader = typeof _injectNgtsTextureLoader;\nexport const injectNgtsTextureLoader: NgtsTextureLoader = _injectNgtsTextureLoader;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA,IAAI,WAAW,GAAuB,IAAI,CAAC;AAC3C,IAAI,WAAW,GAAG,yDAAyD,CAAC;AAE5E,SAAS,WAAW,CAAC,QAA0B,EAAE,UAAmB,EAAE,UAAyC,EAAA;IAC9G,OAAO,CAAC,MAAc,KAAI;QACzB,IAAI,UAAU,EAAE;YACf,UAAU,CAAC,MAAoB,CAAC,CAAC;SACjC;QAED,IAAI,QAAQ,EAAE;YACb,IAAI,CAAC,WAAW,EAAE;AACjB,gBAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;aAChC;AAED,YAAA,WAAW,CAAC,cAAc,CAAC,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC;AACjF,YAAA,MAAqB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;SACnD;QACD,IAAI,UAAU,EAAE;AACd,YAAA,MAAqB,CAAC,iBAAiB,CACvC,OAAO,cAAc,KAAK,UAAU,GAAG,cAAc,EAAE,GAAG,cAAc,CACxE,CAAC;SACF;AACF,KAAC,CAAC;AACH,CAAC;AAID,SAAS,qBAAqB,CAC7B,IAAgB,EAChB,EACC,QAAQ,GAAG,IAAI,EACf,UAAU,GAAG,IAAI,EACjB,QAAQ,EACR,UAAU,MAMP,EAAE,EAAA;AAEN,IAAA,OAAO,cAAc,CAAC,qBAAqB,EAAE,QAAQ,EAAE,MACtD,eAAe,CAAC,MAAM,UAAU,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,CACxC,CAAC;AACjE,CAAC;AAED,qBAAqB,CAAC,OAAO,GAAG,CAC/B,IAAgB,EAChB,EACC,QAAQ,GAAG,IAAI,EACf,UAAU,GAAG,IAAI,EACjB,UAAU,GAC2F,GAAA,EAAE,KACrG;AACH,IAAA,eAAe,CAAC,OAAO,CAAC,MAAM,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAQ,CAAC,CAAC;AACvG,CAAC,CAAC;AAEF,qBAAqB,CAAC,cAAc,GAAG,CAAC,IAAY,KAAI;IACvD,WAAW,GAAG,IAAI,CAAC;AACpB,CAAC,CAAC;AAGK,MAAM,oBAAoB,GAAmB;;AChE9C,SAAU,kBAAkB,CAAC,QAAmB,EAAA;AACrD,IAAA,OAAO,cAAc,CAAC,kBAAkB,EAAE,QAAQ,EAAE,MAAK;AACxD,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEtC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAOpB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAE9E,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAE5B,qBAAqB,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,KAAI;YACvD,SAAS,CAAC,MAAK;gBACd,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM;AAC1B,oBAAA,GAAG,IAAI;AACP,oBAAA,MAAM,EAAE,IAAI;oBACZ,IAAI;oBACJ,MAAM;oBACN,KAAK;AACL,oBAAA,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,mBAAmB,KAAK,KAAK,GAAG,mBAAmB,CAAC,IAAI,GAAG;AAChF,iBAAA,CAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;YAEH,GAAG,CAAC,aAAa,EAAE,CAAC;AACrB,SAAC,CAAC;AAEF,QAAA,qBAAqB,CAAC,MAAM,GAAG,MAAK;YACnC,SAAS,CAAC,MAAK;AACd,gBAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzD,aAAC,CAAC,CAAC;YACH,GAAG,CAAC,aAAa,EAAE,CAAC;AACrB,SAAC,CAAC;AAEF,QAAA,qBAAqB,CAAC,OAAO,GAAG,CAAC,GAAG,KAAI;YACvC,SAAS,CAAC,MAAK;gBACd,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;YACH,GAAG,CAAC,aAAa,EAAE,CAAC;AACrB,SAAC,CAAC;QAEF,qBAAqB,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,KAAI;YAC1D,IAAI,MAAM,KAAK,KAAK;gBAAE,mBAAmB,GAAG,KAAK,CAAC;YAClD,SAAS,CAAC,MAAK;gBACd,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM;AAC1B,oBAAA,GAAG,IAAI;oBACP,IAAI;oBACJ,MAAM;oBACN,KAAK;AACL,oBAAA,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,mBAAmB,KAAK,KAAK,GAAG,mBAAmB,CAAC,IAAI,GAAG,IAAI,GAAG;AACvF,iBAAA,CAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;YAEH,GAAG,CAAC,aAAa,EAAE,CAAC;AACrB,SAAC,CAAC;AAEF,QAAA,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC9B,KAAC,CAAC,CAAC;AACJ;;ACnDA,MAAM,wBAAwB,GAAG,CAAC,CAAS,KAAK,CAAW,QAAA,EAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAW3E,MAAM,cAAc,GAAoB;AACvC,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,iBAAiB,EAAE,wBAAwB;AAC3C,IAAA,YAAY,EAAE,CAAC,KAAK,KAAK,KAAK;CAC9B,CAAC;MA4BW,UAAU,CAAA;AAmBtB,IAAA,WAAA,GAAA;QAlBQ,IAAa,CAAA,aAAA,GAAG,kBAAkB,EAAE,CAAC;AAE7C,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC;AAEzD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAE5E,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,CAAC;AAC/D,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;AAErE,QAAA,IAAA,CAAA,eAAe,GAAG,SAAS,CAA8B,iBAAiB,CAAC,CAAC;AAE5E,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAGlD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;KACtB;IAEO,QAAQ,GAAA;AACf,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,YAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACzB,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,MAAK;AACjC,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACvB,EAAE,GAAG,CAAC,CAAC;gBACR,SAAS,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;aACzC;AACF,SAAC,CAAC,CAAC;KACH;IAEO,cAAc,GAAA;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,QAAA,IAAI,KAA+C,CAAC;AAEpD,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClF,MAAM,cAAc,GAAG,MAAK;gBAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa,CAAC;AAC3D,gBAAA,IAAI,CAAC,YAAY;oBAAE,OAAO;gBAC1B,WAAW,IAAI,CAAC,QAAQ,GAAG,WAAW,IAAI,CAAC,CAAC;gBAC5C,IAAI,WAAW,GAAG,IAAI,GAAG,QAAQ,IAAI,QAAQ,KAAK,GAAG;oBAAE,WAAW,GAAG,QAAQ,CAAC;AAC9E,gBAAA,YAAY,CAAC,SAAS,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACxD,gBAAA,IAAI,WAAW,GAAG,QAAQ,EAAE;AAC3B,oBAAA,KAAK,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;iBAC9C;AACF,aAAC,CAAC;AACF,YAAA,cAAc,EAAE,CAAC;YACjB,SAAS,CAAC,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;KACH;8GAvDW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAvBZ,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIW,UAAU,EAAA,UAAA,EAAA,CAAA;kBA1BtB,SAAS;+BACC,aAAa,EAAA,UAAA,EACX,IAAI,EACN,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;EAmBT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA,CAAA;;;ACrDhD,SAAS,wBAAwB,CAChC,KAAmB,EACnB,EAAE,MAAM,EAAE,QAAQ,EAAA,GAAqE,EAAE,EAAA;AAEzF,IAAA,OAAO,cAAc,CAAC,wBAAwB,EAAE,QAAQ,EAAE,MAAK;AAC9D,QAAA,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,aAAa,EAAE,KAAK,CAAC,CAAC;QAE3D,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAA,IAAI,aAAa,IAAI,EAAE,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpC,sBAAE,QAAQ;sBACR,QAAQ,YAAY,OAAO;0BAC1B,CAAC,QAAQ,CAAC;AACZ,0BAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,gBAAA,IAAI,MAAM;oBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,gBAAA,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACvC;AACF,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;AACf,KAAC,CAAC,CAAC;AACJ,CAAC;AAED,wBAAwB,CAAC,OAAO,GAAG,CAA4D,KAAmB,KAAI;IACrH,eAAe,CAAC,OAAO,CAAC,MAAM,aAAa,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC,CAAC;AAGK,MAAM,uBAAuB,GAAsB;;ACrC1D;;AAEG;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { Injector, Signal } from '@angular/core';
|
|
2
|
+
import { NgtLoaderResults, NgtObjectMap } from 'angular-three';
|
|
3
|
+
import { GLTF, GLTFLoader } from 'three-stdlib';
|
|
4
4
|
export type NgtsGLTF<T extends Partial<NgtObjectMap>> = GLTF & NgtObjectMap & T;
|
|
5
5
|
declare function _injectNgtsGLTFLoader<TUrl extends string | string[] | Record<string, string>>(path: () => TUrl, { useDraco, useMeshOpt, injector, extensions, }?: {
|
|
6
6
|
useDraco?: boolean | string;
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
import { ElementRef } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
export interface NgtsLoaderState {
|
|
4
|
+
containerClass?: string;
|
|
5
|
+
innerClass?: string;
|
|
6
|
+
barClass?: string;
|
|
7
|
+
dataClass?: string;
|
|
8
|
+
dataInterpolation: (value: number) => string;
|
|
9
|
+
initialState: (value: boolean) => boolean;
|
|
10
|
+
}
|
|
3
11
|
export declare class NgtsLoader {
|
|
4
12
|
private progressState;
|
|
5
13
|
active: import("@angular/core").Signal<boolean>;
|
|
6
14
|
progress: import("@angular/core").Signal<number>;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
initialState: import("@angular/core").
|
|
15
|
+
options: import("@angular/core").InputSignalWithTransform<NgtsLoaderState, Partial<NgtsLoaderState>>;
|
|
16
|
+
containerClass: import("@angular/core").Signal<string | undefined>;
|
|
17
|
+
innerClass: import("@angular/core").Signal<string | undefined>;
|
|
18
|
+
barClass: import("@angular/core").Signal<string | undefined>;
|
|
19
|
+
dataClass: import("@angular/core").Signal<string | undefined>;
|
|
20
|
+
initialState: import("@angular/core").Signal<(value: boolean) => boolean>;
|
|
21
|
+
dataInterpolation: import("@angular/core").Signal<(value: number) => string>;
|
|
13
22
|
progressSpanRef: import("@angular/core").Signal<ElementRef<HTMLSpanElement> | undefined>;
|
|
14
23
|
shown: import("@angular/core").WritableSignal<boolean>;
|
|
15
24
|
constructor();
|
|
16
25
|
private setShown;
|
|
17
26
|
private updateProgress;
|
|
18
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsLoader, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgtsLoader, "ngts-loader", never, { "
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtsLoader, "ngts-loader", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
20
29
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Injector,
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { Injector, Signal } from '@angular/core';
|
|
2
|
+
import { NgtLoaderResults } from 'angular-three';
|
|
3
|
+
import { Texture } from 'three';
|
|
4
4
|
declare function _injectNgtsTextureLoader<TInput extends string[] | string | Record<string, string>>(input: () => TInput, { onLoad, injector }?: {
|
|
5
|
-
onLoad?: (texture:
|
|
5
|
+
onLoad?: (texture: Texture[]) => void;
|
|
6
6
|
injector?: Injector;
|
|
7
|
-
}): Signal<NgtLoaderResults<TInput,
|
|
7
|
+
}): Signal<NgtLoaderResults<TInput, Texture> | null>;
|
|
8
8
|
declare namespace _injectNgtsTextureLoader {
|
|
9
9
|
var preload: <TInput extends string | Record<string, string> | string[]>(input: () => TInput) => void;
|
|
10
10
|
}
|
package/package.json
CHANGED
|
@@ -1,68 +1,70 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
2
|
+
"name": "angular-three-soba",
|
|
3
|
+
"version": "2.0.0-beta.231",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/angular-threejs/angular-three/tree/main/libs/soba"
|
|
10
|
+
},
|
|
11
|
+
"author": {
|
|
12
|
+
"name": "Chau Tran",
|
|
13
|
+
"email": "nartc7789@gmail.com",
|
|
14
|
+
"url": "https://nartc.me"
|
|
15
|
+
},
|
|
16
|
+
"description": "Utilities for Angular Three",
|
|
17
|
+
"keywords": [
|
|
18
|
+
"angular",
|
|
19
|
+
"threejs",
|
|
20
|
+
"renderer",
|
|
21
|
+
"utilities",
|
|
22
|
+
"shaders"
|
|
23
|
+
],
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"exports": {
|
|
26
|
+
"./assets/*": "./assets/*",
|
|
27
|
+
"./package.json": {
|
|
28
|
+
"default": "./package.json"
|
|
29
|
+
},
|
|
30
|
+
".": {
|
|
31
|
+
"types": "./index.d.ts",
|
|
32
|
+
"esm2022": "./esm2022/angular-three-soba.mjs",
|
|
33
|
+
"esm": "./esm2022/angular-three-soba.mjs",
|
|
34
|
+
"default": "./fesm2022/angular-three-soba.mjs"
|
|
35
|
+
},
|
|
36
|
+
"./controls": {
|
|
37
|
+
"types": "./controls/index.d.ts",
|
|
38
|
+
"esm2022": "./esm2022/controls/angular-three-soba-controls.mjs",
|
|
39
|
+
"esm": "./esm2022/controls/angular-three-soba-controls.mjs",
|
|
40
|
+
"default": "./fesm2022/angular-three-soba-controls.mjs"
|
|
41
|
+
},
|
|
42
|
+
"./loaders": {
|
|
43
|
+
"types": "./loaders/index.d.ts",
|
|
44
|
+
"esm2022": "./esm2022/loaders/angular-three-soba-loaders.mjs",
|
|
45
|
+
"esm": "./esm2022/loaders/angular-three-soba-loaders.mjs",
|
|
46
|
+
"default": "./fesm2022/angular-three-soba-loaders.mjs"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"@angular/common": "^18.0.0",
|
|
51
|
+
"@angular/core": "^18.0.0",
|
|
52
|
+
"angular-three": "^2.0.0",
|
|
53
|
+
"meshline": "^3.1.0",
|
|
54
|
+
"ngxtension": "^3.0.0",
|
|
55
|
+
"stats-gl": "^1.0.0",
|
|
56
|
+
"stats.js": "^0.17.0",
|
|
57
|
+
"three": ">=0.148.0",
|
|
58
|
+
"three-mesh-bvh": "^0.5.0 || ^0.6.0",
|
|
59
|
+
"three-stdlib": "^2.0.0",
|
|
60
|
+
"troika-three-text": "^0.47.0"
|
|
61
|
+
},
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"tslib": "^2.3.0"
|
|
64
|
+
},
|
|
65
|
+
"sideEffects": false,
|
|
66
|
+
"web-types": "./web-types.json",
|
|
67
|
+
"module": "fesm2022/angular-three-soba.mjs",
|
|
68
|
+
"typings": "index.d.ts"
|
|
68
69
|
}
|
|
70
|
+
|