angular-three-soba 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +7 -0
  2. package/controls/README.md +3 -0
  3. package/controls/index.d.ts +1 -0
  4. package/controls/lib/orbit-controls/orbit-controls.d.ts +27 -0
  5. package/esm2020/angular-three-soba.mjs +5 -0
  6. package/esm2020/controls/angular-three-soba-controls.mjs +5 -0
  7. package/esm2020/controls/index.mjs +2 -0
  8. package/esm2020/controls/lib/orbit-controls/orbit-controls.mjs +146 -0
  9. package/esm2020/index.mjs +2 -0
  10. package/esm2020/loaders/angular-three-soba-loaders.mjs +5 -0
  11. package/esm2020/loaders/index.mjs +2 -0
  12. package/esm2020/loaders/lib/gltf-loader/gltf-loader.mjs +32 -0
  13. package/fesm2015/angular-three-soba-controls.mjs +153 -0
  14. package/fesm2015/angular-three-soba-controls.mjs.map +1 -0
  15. package/fesm2015/angular-three-soba-loaders.mjs +38 -0
  16. package/fesm2015/angular-three-soba-loaders.mjs.map +1 -0
  17. package/fesm2015/angular-three-soba.mjs +6 -0
  18. package/fesm2015/angular-three-soba.mjs.map +1 -0
  19. package/fesm2020/angular-three-soba-controls.mjs +153 -0
  20. package/fesm2020/angular-three-soba-controls.mjs.map +1 -0
  21. package/fesm2020/angular-three-soba-loaders.mjs +38 -0
  22. package/fesm2020/angular-three-soba-loaders.mjs.map +1 -0
  23. package/fesm2020/angular-three-soba.mjs +6 -0
  24. package/fesm2020/angular-three-soba.mjs.map +1 -0
  25. package/index.d.ts +2 -0
  26. package/loaders/README.md +3 -0
  27. package/loaders/index.d.ts +1 -0
  28. package/loaders/lib/gltf-loader/gltf-loader.d.ts +8 -0
  29. package/package.json +73 -0
  30. package/plugin/README.md +11 -0
  31. package/plugin/generators.json +6 -0
  32. package/plugin/package.json +10 -0
  33. package/plugin/src/generators/init/compat.d.ts +2 -0
  34. package/plugin/src/generators/init/compat.js +6 -0
  35. package/plugin/src/generators/init/compat.js.map +1 -0
  36. package/plugin/src/generators/init/init.d.ts +4 -0
  37. package/plugin/src/generators/init/init.js +26 -0
  38. package/plugin/src/generators/init/init.js.map +1 -0
  39. package/plugin/src/generators/init/schema.json +6 -0
  40. package/plugin/src/index.d.ts +1 -0
  41. package/plugin/src/index.js +6 -0
  42. package/plugin/src/index.js.map +1 -0
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # angular-three-soba
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test angular-three-soba` to execute the unit tests.
@@ -0,0 +1,3 @@
1
+ # angular-three-soba/controls
2
+
3
+ Secondary entry point of `angular-three-soba`. It can be used by importing from `angular-three-soba/controls`.
@@ -0,0 +1 @@
1
+ export * from './lib/orbit-controls/orbit-controls';
@@ -0,0 +1,27 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { NgtRxStore } from 'angular-three';
3
+ import { OrbitControls } from 'three-stdlib';
4
+ import * as i0 from "@angular/core";
5
+ export declare class NgtsOrbitControls extends NgtRxStore implements OnInit {
6
+ controlsRef: import("angular-three").NgtInjectedRef<OrbitControls>;
7
+ set camera(camera: THREE.Camera);
8
+ set domElement(domElement: HTMLElement);
9
+ set makeDefault(makeDefault: boolean);
10
+ set regress(regress: boolean);
11
+ set target(target: THREE.Vector3 | Parameters<THREE.Vector3['set']>);
12
+ set enableDamping(enableDamping: boolean);
13
+ change: EventEmitter<import("three").Event>;
14
+ start: EventEmitter<import("three").Event>;
15
+ end: EventEmitter<import("three").Event>;
16
+ private readonly store;
17
+ readonly enableDamping$: import("rxjs").Observable<any>;
18
+ constructor();
19
+ initialize(): void;
20
+ ngOnInit(): void;
21
+ private setControls;
22
+ private connectElement;
23
+ private makeControlsDefault;
24
+ private setEvents;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtsOrbitControls, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtsOrbitControls, "ngts-orbit-controls", never, { "controlsRef": "controlsRef"; "camera": "camera"; "domElement": "domElement"; "makeDefault": "makeDefault"; "regress": "regress"; "target": "target"; "enableDamping": "enableDamping"; }, { "change": "change"; "start": "start"; "end": "end"; }, never, never, true, never>;
27
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3JjL2FuZ3VsYXItdGhyZWUtc29iYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLWNvbnRyb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvY29udHJvbHMvc3JjL2FuZ3VsYXItdGhyZWUtc29iYS1jb250cm9scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './lib/orbit-controls/orbit-controls';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9jb250cm9scy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL29yYml0LWNvbnRyb2xzL29yYml0LWNvbnRyb2xzJztcbiJdfQ==
@@ -0,0 +1,146 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, inject, Input, Output } from '@angular/core';
2
+ import { injectBeforeRender, injectNgtRef, NgtArgs, NgtPush, NgtRxStore, NgtStore } from 'angular-three';
3
+ import { combineLatest, map } from 'rxjs';
4
+ import { OrbitControls } from 'three-stdlib';
5
+ import * as i0 from "@angular/core";
6
+ export class NgtsOrbitControls extends NgtRxStore {
7
+ set camera(camera) {
8
+ this.set({ camera });
9
+ }
10
+ set domElement(domElement) {
11
+ this.set({ domElement });
12
+ }
13
+ set makeDefault(makeDefault) {
14
+ this.set({ makeDefault });
15
+ }
16
+ set regress(regress) {
17
+ this.set({ regress });
18
+ }
19
+ set target(target) {
20
+ this.set({ target });
21
+ }
22
+ set enableDamping(enableDamping) {
23
+ this.set({ enableDamping });
24
+ }
25
+ constructor() {
26
+ super();
27
+ this.controlsRef = injectNgtRef();
28
+ this.change = new EventEmitter();
29
+ this.start = new EventEmitter();
30
+ this.end = new EventEmitter();
31
+ this.store = inject(NgtStore);
32
+ this.enableDamping$ = this.select('enableDamping');
33
+ injectBeforeRender(() => {
34
+ const controls = this.controlsRef.nativeElement;
35
+ if (controls && controls.enabled) {
36
+ controls.update();
37
+ }
38
+ });
39
+ }
40
+ initialize() {
41
+ super.initialize();
42
+ this.set({ enableDamping: true, regress: false });
43
+ }
44
+ ngOnInit() {
45
+ this.setControls();
46
+ this.connectElement();
47
+ this.makeControlsDefault();
48
+ this.setEvents();
49
+ this.connect('args', this.controlsRef.$.pipe(map((controls) => [controls])));
50
+ }
51
+ setControls() {
52
+ this.hold(combineLatest([this.store.select('camera'), this.select('camera')]), ([defaultCamera, camera]) => {
53
+ const controlsCamera = camera || defaultCamera;
54
+ if (!this.controlsRef.nativeElement || this.controlsRef.nativeElement.object !== controlsCamera) {
55
+ this.controlsRef.nativeElement = new OrbitControls(controlsCamera);
56
+ }
57
+ });
58
+ }
59
+ connectElement() {
60
+ this.hold(combineLatest([
61
+ this.store.select('gl', 'domElement'),
62
+ this.store.select('invalidate'),
63
+ this.select('regress'),
64
+ this.controlsRef.$,
65
+ ]), ([glDom, , , controls]) => {
66
+ const { events } = this.store.get();
67
+ const domElement = this.get('domElement') || events.connected || glDom;
68
+ controls.connect(domElement);
69
+ });
70
+ }
71
+ makeControlsDefault() {
72
+ this.effect(combineLatest([this.controlsRef.$, this.select('makeDefault')]), ([controls, makeDefault]) => {
73
+ if (makeDefault) {
74
+ const oldControls = this.store.get('controls');
75
+ this.store.set({ controls });
76
+ return () => {
77
+ this.store.set({ controls: oldControls });
78
+ };
79
+ }
80
+ });
81
+ }
82
+ setEvents() {
83
+ this.effect(this.controlsRef.$, (controls) => {
84
+ const { invalidate, performance } = this.store.get();
85
+ const regress = this.get('regress');
86
+ const changeCallback = (e) => {
87
+ invalidate();
88
+ if (regress)
89
+ performance.regress();
90
+ if (this.change.observed)
91
+ this.change.emit(e);
92
+ };
93
+ const startCallback = this.start.observed ? this.start.emit.bind(this.start) : null;
94
+ const endCallback = this.end.observed ? this.end.emit.bind(this.end) : null;
95
+ controls.addEventListener('change', changeCallback);
96
+ if (startCallback)
97
+ controls.addEventListener('start', startCallback);
98
+ if (endCallback)
99
+ controls.addEventListener('end', endCallback);
100
+ return () => {
101
+ controls.removeEventListener('change', changeCallback);
102
+ if (startCallback)
103
+ controls.removeEventListener('start', startCallback);
104
+ if (endCallback)
105
+ controls.removeEventListener('end', endCallback);
106
+ };
107
+ });
108
+ }
109
+ }
110
+ NgtsOrbitControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsOrbitControls, deps: [], target: i0.ɵɵFactoryTarget.Component });
111
+ NgtsOrbitControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgtsOrbitControls, isStandalone: true, selector: "ngts-orbit-controls", inputs: { controlsRef: "controlsRef", camera: "camera", domElement: "domElement", makeDefault: "makeDefault", regress: "regress", target: "target", enableDamping: "enableDamping" }, outputs: { change: "change", start: "start", end: "end" }, usesInheritance: true, ngImport: i0, template: `
112
+ <ngt-primitive *args="get('args')" ngtCompound [enableDamping]="enableDamping$ | ngtPush" />
113
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }] });
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsOrbitControls, decorators: [{
115
+ type: Component,
116
+ args: [{
117
+ selector: 'ngts-orbit-controls',
118
+ standalone: true,
119
+ template: `
120
+ <ngt-primitive *args="get('args')" ngtCompound [enableDamping]="enableDamping$ | ngtPush" />
121
+ `,
122
+ imports: [NgtArgs, NgtPush],
123
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
124
+ }]
125
+ }], ctorParameters: function () { return []; }, propDecorators: { controlsRef: [{
126
+ type: Input
127
+ }], camera: [{
128
+ type: Input
129
+ }], domElement: [{
130
+ type: Input
131
+ }], makeDefault: [{
132
+ type: Input
133
+ }], regress: [{
134
+ type: Input
135
+ }], target: [{
136
+ type: Input
137
+ }], enableDamping: [{
138
+ type: Input
139
+ }], change: [{
140
+ type: Output
141
+ }], start: [{
142
+ type: Output
143
+ }], end: [{
144
+ type: Output
145
+ }] } });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JiaXQtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9jb250cm9scy9zcmMvbGliL29yYml0LWNvbnRyb2xzL29yYml0LWNvbnRyb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBVzdDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxVQUFVO0lBRzdDLElBQWEsTUFBTSxDQUFDLE1BQW9CO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxVQUF1QjtRQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxXQUFXLENBQUMsV0FBb0I7UUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLE9BQWdCO1FBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxNQUF3RDtRQUN4RSxJQUFJLENBQUMsR0FBRyxD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VkFOaEI7O0tBRVQsNERBQ1MsT0FBTyxnRUFBRSxPQUFPOzJGQUdqQixpQkFBaUI7a0JBVDdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7S0FFVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO29CQUMzQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7MEVBRVksV0FBVztzQkFBbkIsS0FBSztnQkFFTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sYUFBYTtzQkFBekIsS0FBSztnQkFJSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUNHLEdBQUc7c0JBQVosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3ROZ3RSZWYsIE5ndEFyZ3MsIE5ndFB1c2gsIE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9yYml0Q29udHJvbHMgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtb3JiaXQtY29udHJvbHMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJnZXQoJ2FyZ3MnKVwiIG5ndENvbXBvdW5kIFtlbmFibGVEYW1waW5nXT1cImVuYWJsZURhbXBpbmckIHwgbmd0UHVzaFwiIC8+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0QXJncywgTmd0UHVzaF0sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzT3JiaXRDb250cm9scyBleHRlbmRzIE5ndFJ4U3RvcmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNvbnRyb2xzUmVmID0gaW5qZWN0Tmd0UmVmPE9yYml0Q29udHJvbHM+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgY2FtZXJhKGNhbWVyYTogVEhSRUUuQ2FtZXJhKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2FtZXJhIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkb21FbGVtZW50KGRvbUVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZG9tRWxlbWVudCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWFrZURlZmF1bHQobWFrZURlZmF1bHQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtYWtlRGVmYXVsdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmVncmVzcyhyZWdyZXNzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcmVncmVzcyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdGFyZ2V0KHRhcmdldDogVEhSRUUuVmVjdG9yMyB8IFBhcmFtZXRlcnM8VEhSRUUuVmVjdG9yM1snc2V0J10+KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgdGFyZ2V0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBlbmFibGVEYW1waW5nKGVuYWJsZURhbXBpbmc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBlbmFibGVEYW1waW5nIH0pO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRIUkVFLkV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBzdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8VEhSRUUuRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIGVuZCA9IG5ldyBFdmVudEVtaXR0ZXI8VEhSRUUuRXZlbnQ+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIHJlYWRvbmx5IGVuYWJsZURhbXBpbmckID0gdGhpcy5zZWxlY3QoJ2VuYWJsZURhbXBpbmcnKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoY29udHJvbHMgJiYgY29udHJvbHMuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgZW5hYmxlRGFtcGluZzogdHJ1ZSwgcmVncmVzczogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0Q29udHJvbHMoKTtcbiAgICAgICAgdGhpcy5jb25uZWN0RWxlbWVudCgpO1xuICAgICAgICB0aGlzLm1ha2VDb250cm9sc0RlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZXRFdmVudHMoKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KCdhcmdzJywgdGhpcy5jb250cm9sc1JlZi4kLnBpcGUobWFwKChjb250cm9scykgPT4gW2NvbnRyb2xzXSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENvbnRyb2xzKCkge1xuICAgICAgICB0aGlzLmhvbGQoY29tYmluZUxhdGVzdChbdGhpcy5zdG9yZS5zZWxlY3QoJ2NhbWVyYScpLCB0aGlzLnNlbGVjdCgnY2FtZXJhJyldKSwgKFtkZWZhdWx0Q2FtZXJhLCBjYW1lcmFdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sc0NhbWVyYSA9IGNhbWVyYSB8fCBkZWZhdWx0Q2FtZXJhO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2xzUmVmLm5hdGl2ZUVsZW1lbnQgfHwgdGhpcy5jb250cm9sc1JlZi5uYXRpdmVFbGVtZW50Lm9iamVjdCAhPT0gY29udHJvbHNDYW1lcmEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzUmVmLm5hdGl2ZUVsZW1lbnQgPSBuZXcgT3JiaXRDb250cm9scyhjb250cm9sc0NhbWVyYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29ubmVjdEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMuaG9sZChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcsICdkb21FbGVtZW50JyksXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgncmVncmVzcycpLFxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNSZWYuJCxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKFtnbERvbSwgLCAsIGNvbnRyb2xzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZXZlbnRzIH0gPSB0aGlzLnN0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldCgnZG9tRWxlbWVudCcpIHx8IGV2ZW50cy5jb25uZWN0ZWQgfHwgZ2xEb207XG4gICAgICAgICAgICAgICAgY29udHJvbHMuY29ubmVjdChkb21FbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VDb250cm9sc0RlZmF1bHQoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0KGNvbWJpbmVMYXRlc3QoW3RoaXMuY29udHJvbHNSZWYuJCwgdGhpcy5zZWxlY3QoJ21ha2VEZWZhdWx0JyldKSwgKFtjb250cm9scywgbWFrZURlZmF1bHRdKSA9PiB7XG4gICAgICAgICAgICBpZiAobWFrZURlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRDb250cm9scyA9IHRoaXMuc3RvcmUuZ2V0KCdjb250cm9scycpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0KHsgY29udHJvbHMgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXQoeyBjb250cm9sczogb2xkQ29udHJvbHMgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0KHRoaXMuY29udHJvbHNSZWYuJCwgKGNvbnRyb2xzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGludmFsaWRhdGUsIHBlcmZvcm1hbmNlIH0gPSB0aGlzLnN0b3JlLmdldCgpO1xuICAgICAgICAgICAgY29uc3QgcmVncmVzcyA9IHRoaXMuZ2V0KCdyZWdyZXNzJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZUNhbGxiYWNrOiAoZTogVEhSRUUuRXZlbnQpID0+IHZvaWQgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGludmFsaWRhdGUoKTtcbiAgICAgICAgICAgICAgICBpZiAocmVncmVzcykgcGVyZm9ybWFuY2UucmVncmVzcygpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoYW5nZS5vYnNlcnZlZCkgdGhpcy5jaGFuZ2UuZW1pdChlKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0Q2FsbGJhY2sgPSB0aGlzLnN0YXJ0Lm9ic2VydmVkID8gdGhpcy5zdGFydC5lbWl0LmJpbmQodGhpcy5zdGFydCkgOiBudWxsO1xuICAgICAgICAgICAgY29uc3QgZW5kQ2FsbGJhY2sgPSB0aGlzLmVuZC5vYnNlcnZlZCA/IHRoaXMuZW5kLmVtaXQuYmluZCh0aGlzLmVuZCkgOiBudWxsO1xuXG4gICAgICAgICAgICBjb250cm9scy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjaGFuZ2VDYWxsYmFjayk7XG4gICAgICAgICAgICBpZiAoc3RhcnRDYWxsYmFjaykgY29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignc3RhcnQnLCBzdGFydENhbGxiYWNrKTtcbiAgICAgICAgICAgIGlmIChlbmRDYWxsYmFjaykgY29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignZW5kJywgZW5kQ2FsbGJhY2spO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGNoYW5nZUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRDYWxsYmFjaykgY29udHJvbHMucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhcnQnLCBzdGFydENhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICBpZiAoZW5kQ2FsbGJhY2spIGNvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZCcsIGVuZENhbGxiYWNrKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export default void 0;
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHZvaWQgMDtcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLWxvYWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9hbmd1bGFyLXRocmVlLXNvYmEtbG9hZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './lib/gltf-loader/gltf-loader';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x0Zi1sb2FkZXIvZ2x0Zi1sb2FkZXInO1xuIl19
@@ -0,0 +1,32 @@
1
+ import { injectNgtLoader } from 'angular-three';
2
+ import { take } from 'rxjs';
3
+ // @ts-ignore
4
+ import { MeshoptDecoder } from 'three-stdlib';
5
+ import { DRACOLoader } from 'three-stdlib/loaders/DRACOLoader';
6
+ import { GLTFLoader } from 'three-stdlib/loaders/GLTFLoader';
7
+ let dracoLoader = null;
8
+ function _extensions(useDraco, useMeshOpt, extensions) {
9
+ return (loader) => {
10
+ if (extensions) {
11
+ extensions(loader);
12
+ }
13
+ if (useDraco) {
14
+ if (!dracoLoader) {
15
+ dracoLoader = new DRACOLoader();
16
+ }
17
+ dracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/');
18
+ loader.setDRACOLoader(dracoLoader);
19
+ }
20
+ if (useMeshOpt) {
21
+ loader.setMeshoptDecoder(typeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder);
22
+ }
23
+ };
24
+ }
25
+ function injectGLTFLoader(path, useDraco = true, useMeshOpt = true, extensions) {
26
+ return injectNgtLoader(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));
27
+ }
28
+ injectGLTFLoader.preload = (path, useDraco = true, useMeshOpt = true, extensions) => {
29
+ injectGLTFLoader(path, useDraco, useMeshOpt, extensions).pipe(take(1)).subscribe();
30
+ };
31
+ export const injectNgtsGLTFLoader = injectGLTFLoader;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9saWIvZ2x0Zi1sb2FkZXIvZ2x0Zi1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBa0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxhQUFhO0FBQ2IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0QsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLElBQUksV0FBVyxHQUF1QixJQUFJLENBQUM7QUFFM0MsU0FBUyxXQUFXLENBQUMsUUFBMEIsRUFBRSxVQUFtQixFQUFFLFVBQXlDO0lBQzNHLE9BQU8sQ0FBQyxNQUFvQixFQUFFLEVBQUU7UUFDNUIsSUFBSSxVQUFVLEVBQUU7WUFDWixVQUFVLENBQUMsTUFBb0IsQ0FBQyxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNkLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO2FBQ25DO1lBRUQsV0FBVyxDQUFDLGNBQWMsQ0FDdEIsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHlEQUF5RCxDQUN0RyxDQUFDO1lBQ0QsTUFBcUIsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEQ7UUFFRCxJQUFJLFVBQVUsRUFBRTtZQUNYLE1BQXFCLENBQUMsaUJBQWlCLENBQ3BDLE9BQU8sY0FBYyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FDM0UsQ0FBQztTQUNMO0lBQ0wsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQWlCRCxTQUFTLGdCQUFnQixDQUNyQixJQUFpQyxFQUNqQyxXQUE2QixJQUFJLEVBQ2pDLFVBQVUsR0FBRyxJQUFJLEVBQ2pCLFVBQXlDO0lBRXpDLE9BQU8sZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBRTNGLENBQUM7QUFDTixDQUFDO0FBRUEsZ0JBQW1DLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxJQUFJLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRTtJQUNwRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDdkYsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3ROZ3RMb2FkZXIsIE5ndExvYWRlclJlc3VsdHMsIE5ndE9iamVjdE1hcCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgTWVzaG9wdERlY29kZXIgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuaW1wb3J0IHsgRFJBQ09Mb2FkZXIgfSBmcm9tICd0aHJlZS1zdGRsaWIvbG9hZGVycy9EUkFDT0xvYWRlcic7XG5pbXBvcnQgeyBHTFRGLCBHTFRGTG9hZGVyIH0gZnJvbSAndGhyZWUtc3RkbGliL2xvYWRlcnMvR0xURkxvYWRlcic7XG5cbmxldCBkcmFjb0xvYWRlcjogRFJBQ09Mb2FkZXIgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gX2V4dGVuc2lvbnModXNlRHJhY286IGJvb2xlYW4gfCBzdHJpbmcsIHVzZU1lc2hPcHQ6IGJvb2xlYW4sIGV4dGVuc2lvbnM/OiAobG9hZGVyOiBHTFRGTG9hZGVyKSA9PiB2b2lkKSB7XG4gICAgcmV0dXJuIChsb2FkZXI6IFRIUkVFLkxvYWRlcikgPT4ge1xuICAgICAgICBpZiAoZXh0ZW5zaW9ucykge1xuICAgICAgICAgICAgZXh0ZW5zaW9ucyhsb2FkZXIgYXMgR0xURkxvYWRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXNlRHJhY28pIHtcbiAgICAgICAgICAgIGlmICghZHJhY29Mb2FkZXIpIHtcbiAgICAgICAgICAgICAgICBkcmFjb0xvYWRlciA9IG5ldyBEUkFDT0xvYWRlcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkcmFjb0xvYWRlci5zZXREZWNvZGVyUGF0aChcbiAgICAgICAgICAgICAgICB0eXBlb2YgdXNlRHJhY28gPT09ICdzdHJpbmcnID8gdXNlRHJhY28gOiAnaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vZHJhY28vdmVyc2lvbmVkL2RlY29kZXJzLzEuNC4zLydcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAobG9hZGVyIGFzIEdMVEZMb2FkZXIpLnNldERSQUNPTG9hZGVyKGRyYWNvTG9hZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1c2VNZXNoT3B0KSB7XG4gICAgICAgICAgICAobG9hZGVyIGFzIEdMVEZMb2FkZXIpLnNldE1lc2hvcHREZWNvZGVyKFxuICAgICAgICAgICAgICAgIHR5cGVvZiBNZXNob3B0RGVjb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IE1lc2hvcHREZWNvZGVyKCkgOiBNZXNob3B0RGVjb2RlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0dMVEZMb2FkZXIge1xuICAgIDxUSW5wdXQgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICBwYXRoOiBUSW5wdXQgfCBPYnNlcnZhYmxlPFRJbnB1dD4sXG4gICAgICAgIHVzZURyYWNvPzogYm9vbGVhbiB8IHN0cmluZyxcbiAgICAgICAgdXNlTWVzaE9wdD86IGJvb2xlYW4sXG4gICAgICAgIGV4dGVuc2lvbnM/OiAobG9hZGVyOiBHTFRGTG9hZGVyKSA9PiB2b2lkXG4gICAgKTogT2JzZXJ2YWJsZTxOZ3RMb2FkZXJSZXN1bHRzPFRJbnB1dCwgR0xURiAmIE5ndE9iamVjdE1hcD4+O1xuICAgIHByZWxvYWQ6IDxUSW5wdXQgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICBwYXRoOiBUSW5wdXQgfCBPYnNlcnZhYmxlPFRJbnB1dD4sXG4gICAgICAgIHVzZURyYWNvPzogYm9vbGVhbiB8IHN0cmluZyxcbiAgICAgICAgdXNlTWVzaE9wdD86IGJvb2xlYW4sXG4gICAgICAgIGV4dGVuc2lvbnM/OiAobG9hZGVyOiBHTFRGTG9hZGVyKSA9PiB2b2lkXG4gICAgKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBpbmplY3RHTFRGTG9hZGVyPFRJbnB1dCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgcGF0aDogVElucHV0IHwgT2JzZXJ2YWJsZTxUSW5wdXQ+LFxuICAgIHVzZURyYWNvOiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZSxcbiAgICB1c2VNZXNoT3B0ID0gdHJ1ZSxcbiAgICBleHRlbnNpb25zPzogKGxvYWRlcjogR0xURkxvYWRlcikgPT4gdm9pZFxuKTogT2JzZXJ2YWJsZTxOZ3RMb2FkZXJSZXN1bHRzPFRJbnB1dCwgR0xURiAmIE5ndE9iamVjdE1hcD4+IHtcbiAgICByZXR1cm4gaW5qZWN0Tmd0TG9hZGVyKCgpID0+IEdMVEZMb2FkZXIsIHBhdGgsIF9leHRlbnNpb25zKHVzZURyYWNvLCB1c2VNZXNoT3B0LCBleHRlbnNpb25zKSkgYXMgT2JzZXJ2YWJsZTxcbiAgICAgICAgTmd0TG9hZGVyUmVzdWx0czxUSW5wdXQsIEdMVEYgJiBOZ3RPYmplY3RNYXA+XG4gICAgPjtcbn1cblxuKGluamVjdEdMVEZMb2FkZXIgYXMgTmd0c0dMVEZMb2FkZXIpLnByZWxvYWQgPSAocGF0aCwgdXNlRHJhY28gPSB0cnVlLCB1c2VNZXNoT3B0ID0gdHJ1ZSwgZXh0ZW5zaW9ucykgPT4ge1xuICAgIGluamVjdEdMVEZMb2FkZXIocGF0aCwgdXNlRHJhY28sIHVzZU1lc2hPcHQsIGV4dGVuc2lvbnMpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5qZWN0Tmd0c0dMVEZMb2FkZXIgPSBpbmplY3RHTFRGTG9hZGVyIGFzIE5ndHNHTFRGTG9hZGVyO1xuIl19
@@ -0,0 +1,153 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, inject, Component, CUSTOM_ELEMENTS_SCHEMA, Input, Output } from '@angular/core';
3
+ import { NgtRxStore, injectNgtRef, NgtStore, injectBeforeRender, NgtArgs, NgtPush } from 'angular-three';
4
+ import { map, combineLatest } from 'rxjs';
5
+ import { OrbitControls } from 'three-stdlib';
6
+
7
+ class NgtsOrbitControls extends NgtRxStore {
8
+ set camera(camera) {
9
+ this.set({ camera });
10
+ }
11
+ set domElement(domElement) {
12
+ this.set({ domElement });
13
+ }
14
+ set makeDefault(makeDefault) {
15
+ this.set({ makeDefault });
16
+ }
17
+ set regress(regress) {
18
+ this.set({ regress });
19
+ }
20
+ set target(target) {
21
+ this.set({ target });
22
+ }
23
+ set enableDamping(enableDamping) {
24
+ this.set({ enableDamping });
25
+ }
26
+ constructor() {
27
+ super();
28
+ this.controlsRef = injectNgtRef();
29
+ this.change = new EventEmitter();
30
+ this.start = new EventEmitter();
31
+ this.end = new EventEmitter();
32
+ this.store = inject(NgtStore);
33
+ this.enableDamping$ = this.select('enableDamping');
34
+ injectBeforeRender(() => {
35
+ const controls = this.controlsRef.nativeElement;
36
+ if (controls && controls.enabled) {
37
+ controls.update();
38
+ }
39
+ });
40
+ }
41
+ initialize() {
42
+ super.initialize();
43
+ this.set({ enableDamping: true, regress: false });
44
+ }
45
+ ngOnInit() {
46
+ this.setControls();
47
+ this.connectElement();
48
+ this.makeControlsDefault();
49
+ this.setEvents();
50
+ this.connect('args', this.controlsRef.$.pipe(map((controls) => [controls])));
51
+ }
52
+ setControls() {
53
+ this.hold(combineLatest([this.store.select('camera'), this.select('camera')]), ([defaultCamera, camera]) => {
54
+ const controlsCamera = camera || defaultCamera;
55
+ if (!this.controlsRef.nativeElement || this.controlsRef.nativeElement.object !== controlsCamera) {
56
+ this.controlsRef.nativeElement = new OrbitControls(controlsCamera);
57
+ }
58
+ });
59
+ }
60
+ connectElement() {
61
+ this.hold(combineLatest([
62
+ this.store.select('gl', 'domElement'),
63
+ this.store.select('invalidate'),
64
+ this.select('regress'),
65
+ this.controlsRef.$,
66
+ ]), ([glDom, , , controls]) => {
67
+ const { events } = this.store.get();
68
+ const domElement = this.get('domElement') || events.connected || glDom;
69
+ controls.connect(domElement);
70
+ });
71
+ }
72
+ makeControlsDefault() {
73
+ this.effect(combineLatest([this.controlsRef.$, this.select('makeDefault')]), ([controls, makeDefault]) => {
74
+ if (makeDefault) {
75
+ const oldControls = this.store.get('controls');
76
+ this.store.set({ controls });
77
+ return () => {
78
+ this.store.set({ controls: oldControls });
79
+ };
80
+ }
81
+ });
82
+ }
83
+ setEvents() {
84
+ this.effect(this.controlsRef.$, (controls) => {
85
+ const { invalidate, performance } = this.store.get();
86
+ const regress = this.get('regress');
87
+ const changeCallback = (e) => {
88
+ invalidate();
89
+ if (regress)
90
+ performance.regress();
91
+ if (this.change.observed)
92
+ this.change.emit(e);
93
+ };
94
+ const startCallback = this.start.observed ? this.start.emit.bind(this.start) : null;
95
+ const endCallback = this.end.observed ? this.end.emit.bind(this.end) : null;
96
+ controls.addEventListener('change', changeCallback);
97
+ if (startCallback)
98
+ controls.addEventListener('start', startCallback);
99
+ if (endCallback)
100
+ controls.addEventListener('end', endCallback);
101
+ return () => {
102
+ controls.removeEventListener('change', changeCallback);
103
+ if (startCallback)
104
+ controls.removeEventListener('start', startCallback);
105
+ if (endCallback)
106
+ controls.removeEventListener('end', endCallback);
107
+ };
108
+ });
109
+ }
110
+ }
111
+ NgtsOrbitControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsOrbitControls, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ NgtsOrbitControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgtsOrbitControls, isStandalone: true, selector: "ngts-orbit-controls", inputs: { controlsRef: "controlsRef", camera: "camera", domElement: "domElement", makeDefault: "makeDefault", regress: "regress", target: "target", enableDamping: "enableDamping" }, outputs: { change: "change", start: "start", end: "end" }, usesInheritance: true, ngImport: i0, template: `
113
+ <ngt-primitive *args="get('args')" ngtCompound [enableDamping]="enableDamping$ | ngtPush" />
114
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }] });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsOrbitControls, decorators: [{
116
+ type: Component,
117
+ args: [{
118
+ selector: 'ngts-orbit-controls',
119
+ standalone: true,
120
+ template: `
121
+ <ngt-primitive *args="get('args')" ngtCompound [enableDamping]="enableDamping$ | ngtPush" />
122
+ `,
123
+ imports: [NgtArgs, NgtPush],
124
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
125
+ }]
126
+ }], ctorParameters: function () { return []; }, propDecorators: { controlsRef: [{
127
+ type: Input
128
+ }], camera: [{
129
+ type: Input
130
+ }], domElement: [{
131
+ type: Input
132
+ }], makeDefault: [{
133
+ type: Input
134
+ }], regress: [{
135
+ type: Input
136
+ }], target: [{
137
+ type: Input
138
+ }], enableDamping: [{
139
+ type: Input
140
+ }], change: [{
141
+ type: Output
142
+ }], start: [{
143
+ type: Output
144
+ }], end: [{
145
+ type: Output
146
+ }] } });
147
+
148
+ /**
149
+ * Generated bundle index. Do not edit.
150
+ */
151
+
152
+ export { NgtsOrbitControls };
153
+ //# sourceMappingURL=angular-three-soba-controls.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-soba-controls.mjs","sources":["../../../../libs/angular-three-soba/controls/src/lib/orbit-controls/orbit-controls.ts","../../../../libs/angular-three-soba/controls/src/angular-three-soba-controls.ts"],"sourcesContent":["import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { injectBeforeRender, injectNgtRef, NgtArgs, NgtPush, NgtRxStore, NgtStore } from 'angular-three';\nimport { combineLatest, map } from 'rxjs';\nimport { OrbitControls } from 'three-stdlib';\n\n@Component({\n selector: 'ngts-orbit-controls',\n standalone: true,\n template: `\n <ngt-primitive *args=\"get('args')\" ngtCompound [enableDamping]=\"enableDamping$ | ngtPush\" />\n `,\n imports: [NgtArgs, NgtPush],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrbitControls extends NgtRxStore implements OnInit {\n @Input() controlsRef = injectNgtRef<OrbitControls>();\n\n @Input() set camera(camera: THREE.Camera) {\n this.set({ camera });\n }\n\n @Input() set domElement(domElement: HTMLElement) {\n this.set({ domElement });\n }\n\n @Input() set makeDefault(makeDefault: boolean) {\n this.set({ makeDefault });\n }\n\n @Input() set regress(regress: boolean) {\n this.set({ regress });\n }\n\n @Input() set target(target: THREE.Vector3 | Parameters<THREE.Vector3['set']>) {\n this.set({ target });\n }\n\n @Input() set enableDamping(enableDamping: boolean) {\n this.set({ enableDamping });\n }\n\n @Output() change = new EventEmitter<THREE.Event>();\n @Output() start = new EventEmitter<THREE.Event>();\n @Output() end = new EventEmitter<THREE.Event>();\n\n private readonly store = inject(NgtStore);\n\n readonly enableDamping$ = this.select('enableDamping');\n\n constructor() {\n super();\n injectBeforeRender(() => {\n const controls = this.controlsRef.nativeElement;\n if (controls && controls.enabled) {\n controls.update();\n }\n });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ enableDamping: true, regress: false });\n }\n\n ngOnInit() {\n this.setControls();\n this.connectElement();\n this.makeControlsDefault();\n this.setEvents();\n this.connect('args', this.controlsRef.$.pipe(map((controls) => [controls])));\n }\n\n private setControls() {\n this.hold(combineLatest([this.store.select('camera'), this.select('camera')]), ([defaultCamera, camera]) => {\n const controlsCamera = camera || defaultCamera;\n if (!this.controlsRef.nativeElement || this.controlsRef.nativeElement.object !== controlsCamera) {\n this.controlsRef.nativeElement = new OrbitControls(controlsCamera);\n }\n });\n }\n\n private connectElement() {\n this.hold(\n combineLatest([\n this.store.select('gl', 'domElement'),\n this.store.select('invalidate'),\n this.select('regress'),\n this.controlsRef.$,\n ]),\n ([glDom, , , controls]) => {\n const { events } = this.store.get();\n const domElement = this.get('domElement') || events.connected || glDom;\n controls.connect(domElement);\n }\n );\n }\n\n private makeControlsDefault() {\n this.effect(combineLatest([this.controlsRef.$, this.select('makeDefault')]), ([controls, makeDefault]) => {\n if (makeDefault) {\n const oldControls = this.store.get('controls');\n this.store.set({ controls });\n return () => {\n this.store.set({ controls: oldControls });\n };\n }\n });\n }\n\n private setEvents() {\n this.effect(this.controlsRef.$, (controls) => {\n const { invalidate, performance } = this.store.get();\n const regress = this.get('regress');\n\n const changeCallback: (e: THREE.Event) => void = (e) => {\n invalidate();\n if (regress) performance.regress();\n if (this.change.observed) this.change.emit(e);\n };\n\n const startCallback = this.start.observed ? this.start.emit.bind(this.start) : null;\n const endCallback = this.end.observed ? this.end.emit.bind(this.end) : null;\n\n controls.addEventListener('change', changeCallback);\n if (startCallback) controls.addEventListener('start', startCallback);\n if (endCallback) controls.addEventListener('end', endCallback);\n\n return () => {\n controls.removeEventListener('change', changeCallback);\n if (startCallback) controls.removeEventListener('start', startCallback);\n if (endCallback) controls.removeEventListener('end', endCallback);\n };\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { injectNgtLoader } from 'angular-three';
2
+ import { take } from 'rxjs';
3
+ import { MeshoptDecoder } from 'three-stdlib';
4
+ import { DRACOLoader } from 'three-stdlib/loaders/DRACOLoader';
5
+ import { GLTFLoader } from 'three-stdlib/loaders/GLTFLoader';
6
+
7
+ let dracoLoader = null;
8
+ function _extensions(useDraco, useMeshOpt, extensions) {
9
+ return (loader) => {
10
+ if (extensions) {
11
+ extensions(loader);
12
+ }
13
+ if (useDraco) {
14
+ if (!dracoLoader) {
15
+ dracoLoader = new DRACOLoader();
16
+ }
17
+ dracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/');
18
+ loader.setDRACOLoader(dracoLoader);
19
+ }
20
+ if (useMeshOpt) {
21
+ loader.setMeshoptDecoder(typeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder);
22
+ }
23
+ };
24
+ }
25
+ function injectGLTFLoader(path, useDraco = true, useMeshOpt = true, extensions) {
26
+ return injectNgtLoader(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));
27
+ }
28
+ injectGLTFLoader.preload = (path, useDraco = true, useMeshOpt = true, extensions) => {
29
+ injectGLTFLoader(path, useDraco, useMeshOpt, extensions).pipe(take(1)).subscribe();
30
+ };
31
+ const injectNgtsGLTFLoader = injectGLTFLoader;
32
+
33
+ /**
34
+ * Generated bundle index. Do not edit.
35
+ */
36
+
37
+ export { injectNgtsGLTFLoader };
38
+ //# sourceMappingURL=angular-three-soba-loaders.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-soba-loaders.mjs","sources":["../../../../libs/angular-three-soba/loaders/src/lib/gltf-loader/gltf-loader.ts","../../../../libs/angular-three-soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import { injectNgtLoader, NgtLoaderResults, NgtObjectMap } from 'angular-three';\nimport { Observable, take } from 'rxjs';\n// @ts-ignore\nimport { MeshoptDecoder } from 'three-stdlib';\nimport { DRACOLoader } from 'three-stdlib/loaders/DRACOLoader';\nimport { GLTF, GLTFLoader } from 'three-stdlib/loaders/GLTFLoader';\n\nlet dracoLoader: DRACOLoader | null = null;\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n return (loader: THREE.Loader) => {\n if (extensions) {\n extensions(loader as GLTFLoader);\n }\n\n if (useDraco) {\n if (!dracoLoader) {\n dracoLoader = new DRACOLoader();\n }\n\n dracoLoader.setDecoderPath(\n typeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/'\n );\n (loader as GLTFLoader).setDRACOLoader(dracoLoader);\n }\n\n if (useMeshOpt) {\n (loader as GLTFLoader).setMeshoptDecoder(\n typeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder\n );\n }\n };\n}\n\nexport interface NgtsGLTFLoader {\n <TInput extends string | string[] | Record<string, string>>(\n path: TInput | Observable<TInput>,\n useDraco?: boolean | string,\n useMeshOpt?: boolean,\n extensions?: (loader: GLTFLoader) => void\n ): Observable<NgtLoaderResults<TInput, GLTF & NgtObjectMap>>;\n preload: <TInput extends string | string[] | Record<string, string>>(\n path: TInput | Observable<TInput>,\n useDraco?: boolean | string,\n useMeshOpt?: boolean,\n extensions?: (loader: GLTFLoader) => void\n ) => void;\n}\n\nfunction injectGLTFLoader<TInput extends string | string[] | Record<string, string>>(\n path: TInput | Observable<TInput>,\n useDraco: boolean | string = true,\n useMeshOpt = true,\n extensions?: (loader: GLTFLoader) => void\n): Observable<NgtLoaderResults<TInput, GLTF & NgtObjectMap>> {\n return injectNgtLoader(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions)) as Observable<\n NgtLoaderResults<TInput, GLTF & NgtObjectMap>\n >;\n}\n\n(injectGLTFLoader as NgtsGLTFLoader).preload = (path, useDraco = true, useMeshOpt = true, extensions) => {\n injectGLTFLoader(path, useDraco, useMeshOpt, extensions).pipe(take(1)).subscribe();\n};\n\nexport const injectNgtsGLTFLoader = injectGLTFLoader as NgtsGLTFLoader;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAOA,IAAI,WAAW,GAAuB,IAAI,CAAC;AAE3C,SAAS,WAAW,CAAC,QAA0B,EAAE,UAAmB,EAAE,UAAyC,EAAA;IAC3G,OAAO,CAAC,MAAoB,KAAI;AAC5B,QAAA,IAAI,UAAU,EAAE;YACZ,UAAU,CAAC,MAAoB,CAAC,CAAC;AACpC,SAAA;AAED,QAAA,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,WAAW,EAAE;AACd,gBAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACnC,aAAA;AAED,YAAA,WAAW,CAAC,cAAc,CACtB,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,yDAAyD,CACtG,CAAC;AACD,YAAA,MAAqB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,IAAI,UAAU,EAAE;AACX,YAAA,MAAqB,CAAC,iBAAiB,CACpC,OAAO,cAAc,KAAK,UAAU,GAAG,cAAc,EAAE,GAAG,cAAc,CAC3E,CAAC;AACL,SAAA;AACL,KAAC,CAAC;AACN,CAAC;AAiBD,SAAS,gBAAgB,CACrB,IAAiC,EACjC,QAAA,GAA6B,IAAI,EACjC,UAAU,GAAG,IAAI,EACjB,UAAyC,EAAA;AAEzC,IAAA,OAAO,eAAe,CAAC,MAAM,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAE3F,CAAC;AACN,CAAC;AAEA,gBAAmC,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,UAAU,KAAI;IACpG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACvF,CAAC,CAAC;AAEK,MAAM,oBAAoB,GAAG;;AChEpC;;AAEG;;;;"}
@@ -0,0 +1,6 @@
1
+ var index = void 0;
2
+
3
+ /**
4
+ * Generated bundle index. Do not edit.
5
+ */
6
+ //# sourceMappingURL=angular-three-soba.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-soba.mjs","sources":["../../../../libs/angular-three-soba/src/index.ts","../../../../libs/angular-three-soba/src/angular-three-soba.ts"],"sourcesContent":["export default void 0;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA,YAAe,KAAK,CAAC;;ACArB;;AAEG"}
@@ -0,0 +1,153 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, inject, Component, CUSTOM_ELEMENTS_SCHEMA, Input, Output } from '@angular/core';
3
+ import { NgtRxStore, injectNgtRef, NgtStore, injectBeforeRender, NgtArgs, NgtPush } from 'angular-three';
4
+ import { map, combineLatest } from 'rxjs';
5
+ import { OrbitControls } from 'three-stdlib';
6
+
7
+ class NgtsOrbitControls extends NgtRxStore {
8
+ set camera(camera) {
9
+ this.set({ camera });
10
+ }
11
+ set domElement(domElement) {
12
+ this.set({ domElement });
13
+ }
14
+ set makeDefault(makeDefault) {
15
+ this.set({ makeDefault });
16
+ }
17
+ set regress(regress) {
18
+ this.set({ regress });
19
+ }
20
+ set target(target) {
21
+ this.set({ target });
22
+ }
23
+ set enableDamping(enableDamping) {
24
+ this.set({ enableDamping });
25
+ }
26
+ constructor() {
27
+ super();
28
+ this.controlsRef = injectNgtRef();
29
+ this.change = new EventEmitter();
30
+ this.start = new EventEmitter();
31
+ this.end = new EventEmitter();
32
+ this.store = inject(NgtStore);
33
+ this.enableDamping$ = this.select('enableDamping');
34
+ injectBeforeRender(() => {
35
+ const controls = this.controlsRef.nativeElement;
36
+ if (controls && controls.enabled) {
37
+ controls.update();
38
+ }
39
+ });
40
+ }
41
+ initialize() {
42
+ super.initialize();
43
+ this.set({ enableDamping: true, regress: false });
44
+ }
45
+ ngOnInit() {
46
+ this.setControls();
47
+ this.connectElement();
48
+ this.makeControlsDefault();
49
+ this.setEvents();
50
+ this.connect('args', this.controlsRef.$.pipe(map((controls) => [controls])));
51
+ }
52
+ setControls() {
53
+ this.hold(combineLatest([this.store.select('camera'), this.select('camera')]), ([defaultCamera, camera]) => {
54
+ const controlsCamera = camera || defaultCamera;
55
+ if (!this.controlsRef.nativeElement || this.controlsRef.nativeElement.object !== controlsCamera) {
56
+ this.controlsRef.nativeElement = new OrbitControls(controlsCamera);
57
+ }
58
+ });
59
+ }
60
+ connectElement() {
61
+ this.hold(combineLatest([
62
+ this.store.select('gl', 'domElement'),
63
+ this.store.select('invalidate'),
64
+ this.select('regress'),
65
+ this.controlsRef.$,
66
+ ]), ([glDom, , , controls]) => {
67
+ const { events } = this.store.get();
68
+ const domElement = this.get('domElement') || events.connected || glDom;
69
+ controls.connect(domElement);
70
+ });
71
+ }
72
+ makeControlsDefault() {
73
+ this.effect(combineLatest([this.controlsRef.$, this.select('makeDefault')]), ([controls, makeDefault]) => {
74
+ if (makeDefault) {
75
+ const oldControls = this.store.get('controls');
76
+ this.store.set({ controls });
77
+ return () => {
78
+ this.store.set({ controls: oldControls });
79
+ };
80
+ }
81
+ });
82
+ }
83
+ setEvents() {
84
+ this.effect(this.controlsRef.$, (controls) => {
85
+ const { invalidate, performance } = this.store.get();
86
+ const regress = this.get('regress');
87
+ const changeCallback = (e) => {
88
+ invalidate();
89
+ if (regress)
90
+ performance.regress();
91
+ if (this.change.observed)
92
+ this.change.emit(e);
93
+ };
94
+ const startCallback = this.start.observed ? this.start.emit.bind(this.start) : null;
95
+ const endCallback = this.end.observed ? this.end.emit.bind(this.end) : null;
96
+ controls.addEventListener('change', changeCallback);
97
+ if (startCallback)
98
+ controls.addEventListener('start', startCallback);
99
+ if (endCallback)
100
+ controls.addEventListener('end', endCallback);
101
+ return () => {
102
+ controls.removeEventListener('change', changeCallback);
103
+ if (startCallback)
104
+ controls.removeEventListener('start', startCallback);
105
+ if (endCallback)
106
+ controls.removeEventListener('end', endCallback);
107
+ };
108
+ });
109
+ }
110
+ }
111
+ NgtsOrbitControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsOrbitControls, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ NgtsOrbitControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgtsOrbitControls, isStandalone: true, selector: "ngts-orbit-controls", inputs: { controlsRef: "controlsRef", camera: "camera", domElement: "domElement", makeDefault: "makeDefault", regress: "regress", target: "target", enableDamping: "enableDamping" }, outputs: { change: "change", start: "start", end: "end" }, usesInheritance: true, ngImport: i0, template: `
113
+ <ngt-primitive *args="get('args')" ngtCompound [enableDamping]="enableDamping$ | ngtPush" />
114
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }] });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsOrbitControls, decorators: [{
116
+ type: Component,
117
+ args: [{
118
+ selector: 'ngts-orbit-controls',
119
+ standalone: true,
120
+ template: `
121
+ <ngt-primitive *args="get('args')" ngtCompound [enableDamping]="enableDamping$ | ngtPush" />
122
+ `,
123
+ imports: [NgtArgs, NgtPush],
124
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
125
+ }]
126
+ }], ctorParameters: function () { return []; }, propDecorators: { controlsRef: [{
127
+ type: Input
128
+ }], camera: [{
129
+ type: Input
130
+ }], domElement: [{
131
+ type: Input
132
+ }], makeDefault: [{
133
+ type: Input
134
+ }], regress: [{
135
+ type: Input
136
+ }], target: [{
137
+ type: Input
138
+ }], enableDamping: [{
139
+ type: Input
140
+ }], change: [{
141
+ type: Output
142
+ }], start: [{
143
+ type: Output
144
+ }], end: [{
145
+ type: Output
146
+ }] } });
147
+
148
+ /**
149
+ * Generated bundle index. Do not edit.
150
+ */
151
+
152
+ export { NgtsOrbitControls };
153
+ //# sourceMappingURL=angular-three-soba-controls.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-soba-controls.mjs","sources":["../../../../libs/angular-three-soba/controls/src/lib/orbit-controls/orbit-controls.ts","../../../../libs/angular-three-soba/controls/src/angular-three-soba-controls.ts"],"sourcesContent":["import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { injectBeforeRender, injectNgtRef, NgtArgs, NgtPush, NgtRxStore, NgtStore } from 'angular-three';\nimport { combineLatest, map } from 'rxjs';\nimport { OrbitControls } from 'three-stdlib';\n\n@Component({\n selector: 'ngts-orbit-controls',\n standalone: true,\n template: `\n <ngt-primitive *args=\"get('args')\" ngtCompound [enableDamping]=\"enableDamping$ | ngtPush\" />\n `,\n imports: [NgtArgs, NgtPush],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrbitControls extends NgtRxStore implements OnInit {\n @Input() controlsRef = injectNgtRef<OrbitControls>();\n\n @Input() set camera(camera: THREE.Camera) {\n this.set({ camera });\n }\n\n @Input() set domElement(domElement: HTMLElement) {\n this.set({ domElement });\n }\n\n @Input() set makeDefault(makeDefault: boolean) {\n this.set({ makeDefault });\n }\n\n @Input() set regress(regress: boolean) {\n this.set({ regress });\n }\n\n @Input() set target(target: THREE.Vector3 | Parameters<THREE.Vector3['set']>) {\n this.set({ target });\n }\n\n @Input() set enableDamping(enableDamping: boolean) {\n this.set({ enableDamping });\n }\n\n @Output() change = new EventEmitter<THREE.Event>();\n @Output() start = new EventEmitter<THREE.Event>();\n @Output() end = new EventEmitter<THREE.Event>();\n\n private readonly store = inject(NgtStore);\n\n readonly enableDamping$ = this.select('enableDamping');\n\n constructor() {\n super();\n injectBeforeRender(() => {\n const controls = this.controlsRef.nativeElement;\n if (controls && controls.enabled) {\n controls.update();\n }\n });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ enableDamping: true, regress: false });\n }\n\n ngOnInit() {\n this.setControls();\n this.connectElement();\n this.makeControlsDefault();\n this.setEvents();\n this.connect('args', this.controlsRef.$.pipe(map((controls) => [controls])));\n }\n\n private setControls() {\n this.hold(combineLatest([this.store.select('camera'), this.select('camera')]), ([defaultCamera, camera]) => {\n const controlsCamera = camera || defaultCamera;\n if (!this.controlsRef.nativeElement || this.controlsRef.nativeElement.object !== controlsCamera) {\n this.controlsRef.nativeElement = new OrbitControls(controlsCamera);\n }\n });\n }\n\n private connectElement() {\n this.hold(\n combineLatest([\n this.store.select('gl', 'domElement'),\n this.store.select('invalidate'),\n this.select('regress'),\n this.controlsRef.$,\n ]),\n ([glDom, , , controls]) => {\n const { events } = this.store.get();\n const domElement = this.get('domElement') || events.connected || glDom;\n controls.connect(domElement);\n }\n );\n }\n\n private makeControlsDefault() {\n this.effect(combineLatest([this.controlsRef.$, this.select('makeDefault')]), ([controls, makeDefault]) => {\n if (makeDefault) {\n const oldControls = this.store.get('controls');\n this.store.set({ controls });\n return () => {\n this.store.set({ controls: oldControls });\n };\n }\n });\n }\n\n private setEvents() {\n this.effect(this.controlsRef.$, (controls) => {\n const { invalidate, performance } = this.store.get();\n const regress = this.get('regress');\n\n const changeCallback: (e: THREE.Event) => void = (e) => {\n invalidate();\n if (regress) performance.regress();\n if (this.change.observed) this.change.emit(e);\n };\n\n const startCallback = this.start.observed ? this.start.emit.bind(this.start) : null;\n const endCallback = this.end.observed ? this.end.emit.bind(this.end) : null;\n\n controls.addEventListener('change', changeCallback);\n if (startCallback) controls.addEventListener('start', startCallback);\n if (endCallback) controls.addEventListener('end', endCallback);\n\n return () => {\n controls.removeEventListener('change', changeCallback);\n if (startCallback) controls.removeEventListener('start', startCallback);\n if (endCallback) controls.removeEventListener('end', endCallback);\n };\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { injectNgtLoader } from 'angular-three';
2
+ import { take } from 'rxjs';
3
+ import { MeshoptDecoder } from 'three-stdlib';
4
+ import { DRACOLoader } from 'three-stdlib/loaders/DRACOLoader';
5
+ import { GLTFLoader } from 'three-stdlib/loaders/GLTFLoader';
6
+
7
+ let dracoLoader = null;
8
+ function _extensions(useDraco, useMeshOpt, extensions) {
9
+ return (loader) => {
10
+ if (extensions) {
11
+ extensions(loader);
12
+ }
13
+ if (useDraco) {
14
+ if (!dracoLoader) {
15
+ dracoLoader = new DRACOLoader();
16
+ }
17
+ dracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/');
18
+ loader.setDRACOLoader(dracoLoader);
19
+ }
20
+ if (useMeshOpt) {
21
+ loader.setMeshoptDecoder(typeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder);
22
+ }
23
+ };
24
+ }
25
+ function injectGLTFLoader(path, useDraco = true, useMeshOpt = true, extensions) {
26
+ return injectNgtLoader(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));
27
+ }
28
+ injectGLTFLoader.preload = (path, useDraco = true, useMeshOpt = true, extensions) => {
29
+ injectGLTFLoader(path, useDraco, useMeshOpt, extensions).pipe(take(1)).subscribe();
30
+ };
31
+ const injectNgtsGLTFLoader = injectGLTFLoader;
32
+
33
+ /**
34
+ * Generated bundle index. Do not edit.
35
+ */
36
+
37
+ export { injectNgtsGLTFLoader };
38
+ //# sourceMappingURL=angular-three-soba-loaders.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-soba-loaders.mjs","sources":["../../../../libs/angular-three-soba/loaders/src/lib/gltf-loader/gltf-loader.ts","../../../../libs/angular-three-soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import { injectNgtLoader, NgtLoaderResults, NgtObjectMap } from 'angular-three';\nimport { Observable, take } from 'rxjs';\n// @ts-ignore\nimport { MeshoptDecoder } from 'three-stdlib';\nimport { DRACOLoader } from 'three-stdlib/loaders/DRACOLoader';\nimport { GLTF, GLTFLoader } from 'three-stdlib/loaders/GLTFLoader';\n\nlet dracoLoader: DRACOLoader | null = null;\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n return (loader: THREE.Loader) => {\n if (extensions) {\n extensions(loader as GLTFLoader);\n }\n\n if (useDraco) {\n if (!dracoLoader) {\n dracoLoader = new DRACOLoader();\n }\n\n dracoLoader.setDecoderPath(\n typeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/'\n );\n (loader as GLTFLoader).setDRACOLoader(dracoLoader);\n }\n\n if (useMeshOpt) {\n (loader as GLTFLoader).setMeshoptDecoder(\n typeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder\n );\n }\n };\n}\n\nexport interface NgtsGLTFLoader {\n <TInput extends string | string[] | Record<string, string>>(\n path: TInput | Observable<TInput>,\n useDraco?: boolean | string,\n useMeshOpt?: boolean,\n extensions?: (loader: GLTFLoader) => void\n ): Observable<NgtLoaderResults<TInput, GLTF & NgtObjectMap>>;\n preload: <TInput extends string | string[] | Record<string, string>>(\n path: TInput | Observable<TInput>,\n useDraco?: boolean | string,\n useMeshOpt?: boolean,\n extensions?: (loader: GLTFLoader) => void\n ) => void;\n}\n\nfunction injectGLTFLoader<TInput extends string | string[] | Record<string, string>>(\n path: TInput | Observable<TInput>,\n useDraco: boolean | string = true,\n useMeshOpt = true,\n extensions?: (loader: GLTFLoader) => void\n): Observable<NgtLoaderResults<TInput, GLTF & NgtObjectMap>> {\n return injectNgtLoader(() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions)) as Observable<\n NgtLoaderResults<TInput, GLTF & NgtObjectMap>\n >;\n}\n\n(injectGLTFLoader as NgtsGLTFLoader).preload = (path, useDraco = true, useMeshOpt = true, extensions) => {\n injectGLTFLoader(path, useDraco, useMeshOpt, extensions).pipe(take(1)).subscribe();\n};\n\nexport const injectNgtsGLTFLoader = injectGLTFLoader as NgtsGLTFLoader;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAOA,IAAI,WAAW,GAAuB,IAAI,CAAC;AAE3C,SAAS,WAAW,CAAC,QAA0B,EAAE,UAAmB,EAAE,UAAyC,EAAA;IAC3G,OAAO,CAAC,MAAoB,KAAI;AAC5B,QAAA,IAAI,UAAU,EAAE;YACZ,UAAU,CAAC,MAAoB,CAAC,CAAC;AACpC,SAAA;AAED,QAAA,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,WAAW,EAAE;AACd,gBAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACnC,aAAA;AAED,YAAA,WAAW,CAAC,cAAc,CACtB,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,yDAAyD,CACtG,CAAC;AACD,YAAA,MAAqB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,IAAI,UAAU,EAAE;AACX,YAAA,MAAqB,CAAC,iBAAiB,CACpC,OAAO,cAAc,KAAK,UAAU,GAAG,cAAc,EAAE,GAAG,cAAc,CAC3E,CAAC;AACL,SAAA;AACL,KAAC,CAAC;AACN,CAAC;AAiBD,SAAS,gBAAgB,CACrB,IAAiC,EACjC,QAAA,GAA6B,IAAI,EACjC,UAAU,GAAG,IAAI,EACjB,UAAyC,EAAA;AAEzC,IAAA,OAAO,eAAe,CAAC,MAAM,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAE3F,CAAC;AACN,CAAC;AAEA,gBAAmC,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,UAAU,KAAI;IACpG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACvF,CAAC,CAAC;AAEK,MAAM,oBAAoB,GAAG;;AChEpC;;AAEG;;;;"}
@@ -0,0 +1,6 @@
1
+ var index = void 0;
2
+
3
+ /**
4
+ * Generated bundle index. Do not edit.
5
+ */
6
+ //# sourceMappingURL=angular-three-soba.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-soba.mjs","sources":["../../../../libs/angular-three-soba/src/index.ts","../../../../libs/angular-three-soba/src/angular-three-soba.ts"],"sourcesContent":["export default void 0;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA,YAAe,KAAK,CAAC;;ACArB;;AAEG"}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare const _default: undefined;
2
+ export default _default;
@@ -0,0 +1,3 @@
1
+ # angular-three-soba/loaders
2
+
3
+ Secondary entry point of `angular-three-soba`. It can be used by importing from `angular-three-soba/loaders`.
@@ -0,0 +1 @@
1
+ export * from './lib/gltf-loader/gltf-loader';
@@ -0,0 +1,8 @@
1
+ import { NgtLoaderResults, NgtObjectMap } from 'angular-three';
2
+ import { Observable } from 'rxjs';
3
+ import { GLTF, GLTFLoader } from 'three-stdlib/loaders/GLTFLoader';
4
+ export interface NgtsGLTFLoader {
5
+ <TInput extends string | string[] | Record<string, string>>(path: TInput | Observable<TInput>, useDraco?: boolean | string, useMeshOpt?: boolean, extensions?: (loader: GLTFLoader) => void): Observable<NgtLoaderResults<TInput, GLTF & NgtObjectMap>>;
6
+ preload: <TInput extends string | string[] | Record<string, string>>(path: TInput | Observable<TInput>, useDraco?: boolean | string, useMeshOpt?: boolean, extensions?: (loader: GLTFLoader) => void) => void;
7
+ }
8
+ export declare const injectNgtsGLTFLoader: NgtsGLTFLoader;
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "angular-three-soba",
3
+ "version": "1.0.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/angular-threejs/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
+ ],
22
+ "license": "MIT",
23
+ "peerDependencies": {
24
+ "@angular/common": "^15.1.0",
25
+ "@angular/core": "^15.1.0",
26
+ "angular-three": "^1.0.0",
27
+ "three-stdlib": "^2.0.0",
28
+ "troika-three-text": "^0.47.0",
29
+ "rxjs": "7.8.0"
30
+ },
31
+ "dependencies": {
32
+ "@nrwl/devkit": "^15.0.0",
33
+ "tslib": "^2.3.0"
34
+ },
35
+ "sideEffects": false,
36
+ "generators": "./plugin/generators.json",
37
+ "schematics": "./plugin/generators.json",
38
+ "module": "fesm2015/angular-three-soba.mjs",
39
+ "es2020": "fesm2020/angular-three-soba.mjs",
40
+ "esm2020": "esm2020/angular-three-soba.mjs",
41
+ "fesm2020": "fesm2020/angular-three-soba.mjs",
42
+ "fesm2015": "fesm2015/angular-three-soba.mjs",
43
+ "typings": "index.d.ts",
44
+ "exports": {
45
+ "./package.json": {
46
+ "default": "./package.json"
47
+ },
48
+ ".": {
49
+ "types": "./index.d.ts",
50
+ "esm2020": "./esm2020/angular-three-soba.mjs",
51
+ "es2020": "./fesm2020/angular-three-soba.mjs",
52
+ "es2015": "./fesm2015/angular-three-soba.mjs",
53
+ "node": "./fesm2015/angular-three-soba.mjs",
54
+ "default": "./fesm2020/angular-three-soba.mjs"
55
+ },
56
+ "./controls": {
57
+ "types": "./controls/index.d.ts",
58
+ "esm2020": "./esm2020/controls/angular-three-soba-controls.mjs",
59
+ "es2020": "./fesm2020/angular-three-soba-controls.mjs",
60
+ "es2015": "./fesm2015/angular-three-soba-controls.mjs",
61
+ "node": "./fesm2015/angular-three-soba-controls.mjs",
62
+ "default": "./fesm2020/angular-three-soba-controls.mjs"
63
+ },
64
+ "./loaders": {
65
+ "types": "./loaders/index.d.ts",
66
+ "esm2020": "./esm2020/loaders/angular-three-soba-loaders.mjs",
67
+ "es2020": "./fesm2020/angular-three-soba-loaders.mjs",
68
+ "es2015": "./fesm2015/angular-three-soba-loaders.mjs",
69
+ "node": "./fesm2015/angular-three-soba-loaders.mjs",
70
+ "default": "./fesm2020/angular-three-soba-loaders.mjs"
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,11 @@
1
+ # plugin
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build plugin` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test plugin` to execute the unit tests via [Jest](https://jestjs.io).
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "name": "plugin",
4
+ "version": "0.0.1",
5
+ "generators": {}
6
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "type": "commonjs",
3
+ "peerDependencies": {
4
+ "nx": "15.6.3",
5
+ "tslib": "2.5.0"
6
+ },
7
+ "main": "./src/index.js",
8
+ "types": "./src/index.d.ts",
9
+ "version": "1.0.0"
10
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: (generatorOptions: any) => (tree: any, context: any) => Promise<any>;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nrwl/devkit");
4
+ const init_1 = require("./init");
5
+ exports.default = (0, devkit_1.convertNxGenerator)(init_1.default);
6
+ //# sourceMappingURL=compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/init/compat.ts"],"names":[],"mappings":";;AAAA,yCAAkD;AAClD,iCAA0B;AAE1B,kBAAe,IAAA,2BAAkB,EAAC,cAAI,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Tree } from '@nrwl/devkit';
2
+ export declare const ANGULAR_THREE_SOBA_VERSION = "^1.0.0";
3
+ export declare const THREE_STDLIB_VERSION = "^2.0.0";
4
+ export default function (tree: Tree): Promise<() => void>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.THREE_STDLIB_VERSION = exports.ANGULAR_THREE_SOBA_VERSION = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nrwl/devkit");
6
+ exports.ANGULAR_THREE_SOBA_VERSION = '^1.0.0';
7
+ exports.THREE_STDLIB_VERSION = '^2.0.0';
8
+ function default_1(tree) {
9
+ var _a, _b;
10
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
11
+ devkit_1.logger.log('Initializing Angular Three...');
12
+ const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
13
+ const version = ((_a = packageJson['dependencies']) === null || _a === void 0 ? void 0 : _a['angular-three-soba']) ||
14
+ ((_b = packageJson['devDependencies']) === null || _b === void 0 ? void 0 : _b['angular-three-soba']) ||
15
+ exports.ANGULAR_THREE_SOBA_VERSION;
16
+ (0, devkit_1.addDependenciesToPackageJson)(tree, {
17
+ 'angular-three-soba': version,
18
+ 'three-stdlib': exports.THREE_STDLIB_VERSION,
19
+ }, {});
20
+ return () => {
21
+ (0, devkit_1.installPackagesTask)(tree);
22
+ };
23
+ });
24
+ }
25
+ exports.default = default_1;
26
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/init/init.ts"],"names":[],"mappings":";;;;AAAA,yCAAyG;AAE5F,QAAA,0BAA0B,GAAG,QAAQ,CAAC;AACtC,QAAA,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,mBAA+B,IAAU;;;QACrC,eAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE5C,MAAM,WAAW,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAEnD,MAAM,OAAO,GACT,CAAA,MAAA,WAAW,CAAC,cAAc,CAAC,0CAAG,oBAAoB,CAAC;aACnD,MAAA,WAAW,CAAC,iBAAiB,CAAC,0CAAG,oBAAoB,CAAC,CAAA;YACtD,kCAA0B,CAAC;QAE/B,IAAA,qCAA4B,EACxB,IAAI,EACJ;YACI,oBAAoB,EAAE,OAAO;YAC7B,cAAc,EAAE,4BAAoB;SACvC,EACD,EAAE,CACL,CAAC;QAEF,OAAO,GAAG,EAAE;YACR,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC;;CACL;AAtBD,4BAsBC"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "cli": "nx",
4
+ "$id": "Init",
5
+ "title": "Init Angular Three Soba"
6
+ }
@@ -0,0 +1 @@
1
+ export { default as initGenerator } from './generators/init/init';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initGenerator = void 0;
4
+ var init_1 = require("./generators/init/init");
5
+ Object.defineProperty(exports, "initGenerator", { enumerable: true, get: function () { return init_1.default; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/plugin/src/index.ts"],"names":[],"mappings":";;;AAAA,+CAAkE;AAAzD,qGAAA,OAAO,OAAiB"}