angular-three-soba 1.0.2 → 1.2.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 (101) hide show
  1. package/esm2020/controls/lib/orbit-controls/orbit-controls.mjs +3 -3
  2. package/esm2020/loaders/index.mjs +4 -1
  3. package/esm2020/loaders/lib/loader/loader.mjs +133 -0
  4. package/esm2020/loaders/lib/progress/progress.mjs +39 -0
  5. package/esm2020/loaders/lib/texture-loader/texture-loader.mjs +19 -0
  6. package/esm2020/misc/angular-three-soba-misc.mjs +5 -0
  7. package/esm2020/misc/index.mjs +2 -0
  8. package/esm2020/misc/lib/bake-shadows/bake-shadows.mjs +25 -0
  9. package/esm2020/performance/angular-three-soba-performance.mjs +5 -0
  10. package/esm2020/performance/index.mjs +5 -0
  11. package/esm2020/performance/lib/adaptive/adaptive-dpr.mjs +46 -0
  12. package/esm2020/performance/lib/adaptive/adaptive-events.mjs +36 -0
  13. package/esm2020/performance/lib/detailed/detailed.mjs +50 -0
  14. package/esm2020/performance/lib/stats/stats.mjs +63 -0
  15. package/esm2020/shaders/angular-three-soba-shaders.mjs +5 -0
  16. package/esm2020/shaders/index.mjs +2 -0
  17. package/esm2020/shaders/lib/shader-material/shader-material.mjs +34 -0
  18. package/esm2020/staging/angular-three-soba-staging.mjs +5 -0
  19. package/esm2020/staging/index.mjs +13 -0
  20. package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +276 -0
  21. package/esm2020/staging/lib/accumulative-shadows/progressive-light-map.mjs +109 -0
  22. package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +196 -0
  23. package/esm2020/staging/lib/bounds/bounds.mjs +283 -0
  24. package/esm2020/staging/lib/center/center.mjs +142 -0
  25. package/esm2020/staging/lib/contact-shadows/contact-shadows.mjs +227 -0
  26. package/esm2020/staging/lib/environment/assets.mjs +13 -0
  27. package/esm2020/staging/lib/environment/environment-cube.mjs +40 -0
  28. package/esm2020/staging/lib/environment/environment-ground.mjs +66 -0
  29. package/esm2020/staging/lib/environment/environment-inputs.mjs +86 -0
  30. package/esm2020/staging/lib/environment/environment-map.mjs +38 -0
  31. package/esm2020/staging/lib/environment/environment-portal.mjs +110 -0
  32. package/esm2020/staging/lib/environment/environment.mjs +163 -0
  33. package/esm2020/staging/lib/environment/utils.mjs +70 -0
  34. package/esm2020/staging/lib/float/float.mjs +76 -0
  35. package/esm2020/staging/lib/sky/sky.mjs +111 -0
  36. package/esm2020/staging/lib/sparkles/sparkles.mjs +209 -0
  37. package/esm2020/staging/lib/stage/stage.mjs +369 -0
  38. package/esm2020/staging/lib/stars/stars.mjs +171 -0
  39. package/fesm2015/angular-three-soba-controls.mjs +3 -3
  40. package/fesm2015/angular-three-soba-loaders.mjs +187 -3
  41. package/fesm2015/angular-three-soba-loaders.mjs.map +1 -1
  42. package/fesm2015/angular-three-soba-misc.mjs +32 -0
  43. package/fesm2015/angular-three-soba-misc.mjs.map +1 -0
  44. package/fesm2015/angular-three-soba-performance.mjs +191 -0
  45. package/fesm2015/angular-three-soba-performance.mjs.map +1 -0
  46. package/fesm2015/angular-three-soba-shaders.mjs +38 -0
  47. package/fesm2015/angular-three-soba-shaders.mjs.map +1 -0
  48. package/fesm2015/angular-three-soba-staging.mjs +2647 -0
  49. package/fesm2015/angular-three-soba-staging.mjs.map +1 -0
  50. package/fesm2020/angular-three-soba-controls.mjs +3 -3
  51. package/fesm2020/angular-three-soba-loaders.mjs +186 -3
  52. package/fesm2020/angular-three-soba-loaders.mjs.map +1 -1
  53. package/fesm2020/angular-three-soba-misc.mjs +32 -0
  54. package/fesm2020/angular-three-soba-misc.mjs.map +1 -0
  55. package/fesm2020/angular-three-soba-performance.mjs +191 -0
  56. package/fesm2020/angular-three-soba-performance.mjs.map +1 -0
  57. package/fesm2020/angular-three-soba-shaders.mjs +41 -0
  58. package/fesm2020/angular-three-soba-shaders.mjs.map +1 -0
  59. package/fesm2020/angular-three-soba-staging.mjs +2654 -0
  60. package/fesm2020/angular-three-soba-staging.mjs.map +1 -0
  61. package/loaders/index.d.ts +3 -0
  62. package/loaders/lib/loader/loader.d.ts +26 -0
  63. package/loaders/lib/progress/progress.d.ts +16 -0
  64. package/loaders/lib/texture-loader/texture-loader.d.ts +5 -0
  65. package/misc/README.md +3 -0
  66. package/misc/index.d.ts +1 -0
  67. package/misc/lib/bake-shadows/bake-shadows.d.ts +9 -0
  68. package/package.json +37 -2
  69. package/performance/README.md +3 -0
  70. package/performance/index.d.ts +4 -0
  71. package/performance/lib/adaptive/adaptive-dpr.d.ts +11 -0
  72. package/performance/lib/adaptive/adaptive-events.d.ts +10 -0
  73. package/performance/lib/detailed/detailed.d.ts +12 -0
  74. package/performance/lib/stats/stats.d.ts +14 -0
  75. package/plugin/package.json +1 -1
  76. package/plugin/src/generators/init/init.js +13 -17
  77. package/plugin/src/generators/init/init.js.map +1 -1
  78. package/shaders/README.md +3 -0
  79. package/shaders/index.d.ts +1 -0
  80. package/shaders/lib/shader-material/shader-material.d.ts +6 -0
  81. package/staging/README.md +3 -0
  82. package/staging/index.d.ts +12 -0
  83. package/staging/lib/accumulative-shadows/accumulative-shadows.d.ts +64 -0
  84. package/staging/lib/accumulative-shadows/progressive-light-map.d.ts +34 -0
  85. package/staging/lib/accumulative-shadows/randomized-lights.d.ts +42 -0
  86. package/staging/lib/bounds/bounds.d.ts +48 -0
  87. package/staging/lib/center/center.d.ts +40 -0
  88. package/staging/lib/contact-shadows/contact-shadows.d.ts +29 -0
  89. package/staging/lib/environment/assets.d.ts +13 -0
  90. package/staging/lib/environment/environment-cube.d.ts +11 -0
  91. package/staging/lib/environment/environment-ground.d.ts +9 -0
  92. package/staging/lib/environment/environment-inputs.d.ts +28 -0
  93. package/staging/lib/environment/environment-map.d.ts +10 -0
  94. package/staging/lib/environment/environment-portal.d.ts +15 -0
  95. package/staging/lib/environment/environment.d.ts +12 -0
  96. package/staging/lib/environment/utils.d.ts +8 -0
  97. package/staging/lib/float/float.d.ts +16 -0
  98. package/staging/lib/sky/sky.d.ts +21 -0
  99. package/staging/lib/sparkles/sparkles.d.ts +29 -0
  100. package/staging/lib/stage/stage.d.ts +87 -0
  101. package/staging/lib/stars/stars.d.ts +20 -0
@@ -107,11 +107,11 @@ export class NgtsOrbitControls extends NgtRxStore {
107
107
  });
108
108
  }
109
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: `
110
+ NgtsOrbitControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsOrbitControls, deps: [], target: i0.ɵɵFactoryTarget.Component });
111
+ NgtsOrbitControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", 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
112
  <ngt-primitive *args="get('args')" ngtCompound [enableDamping]="enableDamping$ | ngtPush" />
113
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: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsOrbitControls, decorators: [{
115
115
  type: Component,
116
116
  args: [{
117
117
  selector: 'ngts-orbit-controls',
@@ -1,2 +1,5 @@
1
1
  export * from './lib/gltf-loader/gltf-loader';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x0Zi1sb2FkZXIvZ2x0Zi1sb2FkZXInO1xuIl19
2
+ export * from './lib/loader/loader';
3
+ export * from './lib/progress/progress';
4
+ export * from './lib/texture-loader/texture-loader';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x0Zi1sb2FkZXIvZ2x0Zi1sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZGVyL2xvYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9ncmVzcy9wcm9ncmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXh0dXJlLWxvYWRlci90ZXh0dXJlLWxvYWRlcic7XG4iXX0=
@@ -0,0 +1,133 @@
1
+ import { AsyncPipe, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild } from '@angular/core';
3
+ import { NgtPush, NgtRxStore, startWithUndefined } from 'angular-three';
4
+ import { combineLatest, map, of, switchMap, timer, withLatestFrom } from 'rxjs';
5
+ import { injectNgtsProgress } from '../progress/progress';
6
+ import * as i0 from "@angular/core";
7
+ const defaultDataInterpolation = (p) => `Loading ${p.toFixed(2)}%`;
8
+ export class NgtsLoader extends NgtRxStore {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.progress = injectNgtsProgress();
12
+ this.vm$ = combineLatest([
13
+ this.select('shown'),
14
+ this.select('containerClass').pipe(startWithUndefined()),
15
+ this.select('innerClass').pipe(startWithUndefined()),
16
+ this.select('barClass').pipe(startWithUndefined()),
17
+ this.select('dataClass').pipe(startWithUndefined()),
18
+ this.progress.select('progress'),
19
+ this.progress.select('active'),
20
+ ]).pipe(map(([shown, containerClass, innerClass, barClass, dataClass, progress, active]) => {
21
+ return { shown, containerClass, innerClass, barClass, dataClass, progress, active };
22
+ }));
23
+ }
24
+ set containerClass(containerClass) {
25
+ this.set({ containerClass });
26
+ }
27
+ set innerClass(innerClass) {
28
+ this.set({ innerClass });
29
+ }
30
+ set barClass(barClass) {
31
+ this.set({ barClass });
32
+ }
33
+ set dataClass(dataClass) {
34
+ this.set({ dataClass });
35
+ }
36
+ set dataInterpolation(dataInterpolation) {
37
+ this.set({ dataInterpolation });
38
+ }
39
+ set initialState(initialState) {
40
+ this.set({ initialState });
41
+ }
42
+ initialize() {
43
+ super.initialize();
44
+ this.set({ dataInterpolation: defaultDataInterpolation, initialState: (active) => active });
45
+ }
46
+ ngOnInit() {
47
+ this.set({ shown: this.get('initialState')(this.progress.get('active')) });
48
+ this.connect('shown', this.progress.select('active').pipe(withLatestFrom(this.select('shown')), switchMap(([active, shown]) => {
49
+ if (shown !== active)
50
+ return timer(300).pipe(map(() => active));
51
+ return of(shown);
52
+ })));
53
+ let progressRef = 0;
54
+ let rafId;
55
+ this.effect(combineLatest([this.select('dataInterpolation'), this.progress.select('progress')]), ([dataInterpolation, progress]) => {
56
+ const updateProgress = () => {
57
+ if (!this.progressSpanRef?.nativeElement)
58
+ return;
59
+ progressRef += (progress - progressRef) / 2;
60
+ if (progressRef > 0.95 * progress || progress === 100)
61
+ progressRef = progress;
62
+ this.progressSpanRef.nativeElement.innerText = dataInterpolation(progressRef);
63
+ if (progressRef < progress) {
64
+ rafId = requestAnimationFrame(updateProgress);
65
+ }
66
+ };
67
+ updateProgress();
68
+ return () => cancelAnimationFrame(rafId);
69
+ });
70
+ }
71
+ }
72
+ NgtsLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsLoader, deps: null, target: i0.ɵɵFactoryTarget.Component });
73
+ NgtsLoader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { containerClass: "containerClass", innerClass: "innerClass", barClass: "barClass", dataClass: "dataClass", dataInterpolation: "dataInterpolation", initialState: "initialState" }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
74
+ <ng-container *ngIf="vm$ | ngtPush as vm">
75
+ <div
76
+ *ngIf="vm.shown"
77
+ class="ngts-loader-container"
78
+ [class]="vm.containerClass"
79
+ [style.--ngts-loader-container-opacity]="vm.active ? 1 : 0"
80
+ >
81
+ <div>
82
+ <div class="ngts-loader-inner" [class]="vm.innerClass">
83
+ <div
84
+ class="ngts-loader-bar"
85
+ [class]="vm.barClass"
86
+ [style.--ngts-loader-bar-scale]="vm.progress / 100"
87
+ ></div>
88
+ <span #progressSpanRef class="ngts-loader-data" [class]="vm.dataClass"></span>
89
+ </div>
90
+ </div>
91
+ </div>
92
+ </ng-container>
93
+ `, 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:white;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-feature-settings:\"tnum\";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"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsLoader, decorators: [{
95
+ type: Component,
96
+ args: [{ selector: 'ngts-loader', standalone: true, template: `
97
+ <ng-container *ngIf="vm$ | ngtPush as vm">
98
+ <div
99
+ *ngIf="vm.shown"
100
+ class="ngts-loader-container"
101
+ [class]="vm.containerClass"
102
+ [style.--ngts-loader-container-opacity]="vm.active ? 1 : 0"
103
+ >
104
+ <div>
105
+ <div class="ngts-loader-inner" [class]="vm.innerClass">
106
+ <div
107
+ class="ngts-loader-bar"
108
+ [class]="vm.barClass"
109
+ [style.--ngts-loader-bar-scale]="vm.progress / 100"
110
+ ></div>
111
+ <span #progressSpanRef class="ngts-loader-data" [class]="vm.dataClass"></span>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </ng-container>
116
+ `, imports: [NgIf, AsyncPipe, NgtPush], 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:white;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-feature-settings:\"tnum\";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"] }]
117
+ }], propDecorators: { containerClass: [{
118
+ type: Input
119
+ }], innerClass: [{
120
+ type: Input
121
+ }], barClass: [{
122
+ type: Input
123
+ }], dataClass: [{
124
+ type: Input
125
+ }], dataInterpolation: [{
126
+ type: Input
127
+ }], initialState: [{
128
+ type: Input
129
+ }], progressSpanRef: [{
130
+ type: ViewChild,
131
+ args: ['progressSpanRef']
132
+ }] } });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvbG9hZGVycy9zcmMvbGliL2xvYWRlci9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFMUQsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUE4QjNFLE1BQU0sT0FBTyxVQUFXLFNBQVEsVUFBVTtJQTVCMUM7O1FBNkJxQixhQUFRLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUV4QyxRQUFHLEdBQUcsYUFBYSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFD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Z0JBSU8saUJBQWlCO3NCQUE3QixLQUFLO2dCQUlPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSXdCLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0UHVzaCwgTmd0UnhTdG9yZSwgc3RhcnRXaXRoVW5kZWZpbmVkIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIG9mLCBzd2l0Y2hNYXAsIHRpbWVyLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c1Byb2dyZXNzIH0gZnJvbSAnLi4vcHJvZ3Jlc3MvcHJvZ3Jlc3MnO1xuXG5jb25zdCBkZWZhdWx0RGF0YUludGVycG9sYXRpb24gPSAocDogbnVtYmVyKSA9PiBgTG9hZGluZyAke3AudG9GaXhlZCgyKX0lYDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWxvYWRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidm0kIHwgbmd0UHVzaCBhcyB2bVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidm0uc2hvd25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibmd0cy1sb2FkZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwidm0uY29udGFpbmVyQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS4tLW5ndHMtbG9hZGVyLWNvbnRhaW5lci1vcGFjaXR5XT1cInZtLmFjdGl2ZSA/IDEgOiAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmd0cy1sb2FkZXItaW5uZXJcIiBbY2xhc3NdPVwidm0uaW5uZXJDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmd0cy1sb2FkZXItYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidm0uYmFyQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLW5ndHMtbG9hZGVyLWJhci1zY2FsZV09XCJ2bS5wcm9ncmVzcyAvIDEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAjcHJvZ3Jlc3NTcGFuUmVmIGNsYXNzPVwibmd0cy1sb2FkZXItZGF0YVwiIFtjbGFzc109XCJ2bS5kYXRhQ2xhc3NcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICAgc3R5bGVVcmxzOiBbJ2xvYWRlci5jc3MnXSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgQXN5bmNQaXBlLCBOZ3RQdXNoXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0xvYWRlciBleHRlbmRzIE5ndFJ4U3RvcmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZ3Jlc3MgPSBpbmplY3ROZ3RzUHJvZ3Jlc3MoKTtcblxuICAgIHJlYWRvbmx5IHZtJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnNlbGVjdCgnc2hvd24nKSxcbiAgICAgICAgdGhpcy5zZWxlY3QoJ2NvbnRhaW5lckNsYXNzJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgIHRoaXMuc2VsZWN0KCdpbm5lckNsYXNzJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgIHRoaXMuc2VsZWN0KCdiYXJDbGFzcycpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICB0aGlzLnNlbGVjdCgnZGF0YUNsYXNzJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgIHRoaXMucHJvZ3Jlc3Muc2VsZWN0KCdwcm9ncmVzcycpLFxuICAgICAgICB0aGlzLnByb2dyZXNzLnNlbGVjdCgnYWN0aXZlJyksXG4gICAgXSkucGlwZShcbiAgICAgICAgbWFwKChbc2hvd24sIGNvbnRhaW5lckNsYXNzLCBpbm5lckNsYXNzLCBiYXJDbGFzcywgZGF0YUNsYXNzLCBwcm9ncmVzcywgYWN0aXZlXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgc2hvd24sIGNvbnRhaW5lckNsYXNzLCBpbm5lckNsYXNzLCBiYXJDbGFzcywgZGF0YUNsYXNzLCBwcm9ncmVzcywgYWN0aXZlIH07XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIEBJbnB1dCgpIHNldCBjb250YWluZXJDbGFzcyhjb250YWluZXJDbGFzczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY29udGFpbmVyQ2xhc3MgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGlubmVyQ2xhc3MoaW5uZXJDbGFzczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW5uZXJDbGFzcyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYmFyQ2xhc3MoYmFyQ2xhc3M6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCh7IGJhckNsYXNzIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkYXRhQ2xhc3MoZGF0YUNsYXNzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkYXRhQ2xhc3MgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRhdGFJbnRlcnBvbGF0aW9uKGRhdGFJbnRlcnBvbGF0aW9uOiAodmFsdWU6IG51bWJlcikgPT4gc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGF0YUludGVycG9sYXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGluaXRpYWxTdGF0ZShpbml0aWFsU3RhdGU6ICh2YWx1ZTogYm9vbGVhbikgPT4gYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGluaXRpYWxTdGF0ZSB9KTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdwcm9ncmVzc1NwYW5SZWYnKSBwcm9ncmVzc1NwYW5SZWY/OiBFbGVtZW50UmVmPEhUTUxTcGFuRWxlbWVudD47XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgZGF0YUludGVycG9sYXRpb246IGRlZmF1bHREYXRhSW50ZXJwb2xhdGlvbiwgaW5pdGlhbFN0YXRlOiAoYWN0aXZlOiBib29sZWFuKSA9PiBhY3RpdmUgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2hvd246IHRoaXMuZ2V0KCdpbml0aWFsU3RhdGUnKSh0aGlzLnByb2dyZXNzLmdldCgnYWN0aXZlJykpIH0pO1xuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc2hvd24nLFxuICAgICAgICAgICAgdGhpcy5wcm9ncmVzcy5zZWxlY3QoJ2FjdGl2ZScpLnBpcGUoXG4gICAgICAgICAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zZWxlY3QoJ3Nob3duJykpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoW2FjdGl2ZSwgc2hvd25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93biAhPT0gYWN0aXZlKSByZXR1cm4gdGltZXIoMzAwKS5waXBlKG1hcCgoKSA9PiBhY3RpdmUpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNob3duKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBwcm9ncmVzc1JlZiA9IDA7XG4gICAgICAgIGxldCByYWZJZDogUmV0dXJuVHlwZTx0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lPjtcblxuICAgICAgICB0aGlzLmVmZmVjdChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0KCdkYXRhSW50ZXJwb2xhdGlvbicpLCB0aGlzLnByb2dyZXNzLnNlbGVjdCgncHJvZ3Jlc3MnKV0pLFxuICAgICAgICAgICAgKFtkYXRhSW50ZXJwb2xhdGlvbiwgcHJvZ3Jlc3NdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlUHJvZ3Jlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcm9ncmVzc1NwYW5SZWY/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NSZWYgKz0gKHByb2dyZXNzIC0gcHJvZ3Jlc3NSZWYpIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzUmVmID4gMC45NSAqIHByb2dyZXNzIHx8IHByb2dyZXNzID09PSAxMDApIHByb2dyZXNzUmVmID0gcHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NTcGFuUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gZGF0YUludGVycG9sYXRpb24ocHJvZ3Jlc3NSZWYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3NSZWYgPCBwcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlUHJvZ3Jlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHVwZGF0ZVByb2dyZXNzKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { injectNgtDestroy, NgtRxStore } from 'angular-three';
2
+ import * as THREE from 'three';
3
+ export function injectNgtsProgress() {
4
+ const progress = new NgtRxStore();
5
+ progress.set({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });
6
+ const { cdr } = injectNgtDestroy(() => progress.ngOnDestroy());
7
+ let saveLastTotalLoaded = 0;
8
+ THREE.DefaultLoadingManager.onStart = (item, loaded, total) => {
9
+ progress.set({
10
+ active: true,
11
+ item,
12
+ loaded,
13
+ total,
14
+ progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,
15
+ });
16
+ cdr.detectChanges();
17
+ };
18
+ THREE.DefaultLoadingManager.onLoad = () => {
19
+ progress.set({ active: false });
20
+ cdr.detectChanges();
21
+ };
22
+ THREE.DefaultLoadingManager.onError = (url) => {
23
+ progress.set({ errors: [...progress.get('errors'), url] });
24
+ cdr.detectChanges();
25
+ };
26
+ THREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {
27
+ if (loaded === total)
28
+ saveLastTotalLoaded = total;
29
+ progress.set({
30
+ item,
31
+ loaded,
32
+ total,
33
+ progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,
34
+ });
35
+ cdr.detectChanges();
36
+ };
37
+ return progress;
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9saWIvcHJvZ3Jlc3MvcHJvZ3Jlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixNQUFNLFVBQVUsa0JBQWtCO0lBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxFQU8zQixDQUFDO0lBQ0wsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDL0QsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFFNUIsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDMUQsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUNULE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSTtZQUNKLE1BQU07WUFDTixLQUFLO1lBQ0wsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsR0FBRztTQUNuRixDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDdEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMscUJBQXFCLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDMUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0QsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzdELElBQUksTUFBTSxLQUFLLEtBQUs7WUFBRSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDbEQsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUNULElBQUk7WUFDSixNQUFNO1lBQ04sS0FBSztZQUNMLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHO1NBQzFGLENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgTmd0UnhTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0c1Byb2dyZXNzKCkge1xuICAgIGNvbnN0IHByb2dyZXNzID0gbmV3IE5ndFJ4U3RvcmU8e1xuICAgICAgICBlcnJvcnM6IHN0cmluZ1tdO1xuICAgICAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgICAgIHByb2dyZXNzOiBudW1iZXI7XG4gICAgICAgIGl0ZW06IHN0cmluZztcbiAgICAgICAgbG9hZGVkOiBudW1iZXI7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgfT4oKTtcbiAgICBwcm9ncmVzcy5zZXQoeyBlcnJvcnM6IFtdLCBhY3RpdmU6IGZhbHNlLCBwcm9ncmVzczogMCwgaXRlbTogJycsIGxvYWRlZDogMCwgdG90YWw6IDAgfSk7XG4gICAgY29uc3QgeyBjZHIgfSA9IGluamVjdE5ndERlc3Ryb3koKCkgPT4gcHJvZ3Jlc3MubmdPbkRlc3Ryb3koKSk7XG4gICAgbGV0IHNhdmVMYXN0VG90YWxMb2FkZWQgPSAwO1xuXG4gICAgVEhSRUUuRGVmYXVsdExvYWRpbmdNYW5hZ2VyLm9uU3RhcnQgPSAoaXRlbSwgbG9hZGVkLCB0b3RhbCkgPT4ge1xuICAgICAgICBwcm9ncmVzcy5zZXQoe1xuICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgIGxvYWRlZCxcbiAgICAgICAgICAgIHRvdGFsLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6ICgobG9hZGVkIC0gc2F2ZUxhc3RUb3RhbExvYWRlZCkgLyAodG90YWwgLSBzYXZlTGFzdFRvdGFsTG9hZGVkKSkgKiAxMDAsXG4gICAgICAgIH0pO1xuICAgICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG5cbiAgICBUSFJFRS5EZWZhdWx0TG9hZGluZ01hbmFnZXIub25Mb2FkID0gKCkgPT4ge1xuICAgICAgICBwcm9ncmVzcy5zZXQoeyBhY3RpdmU6IGZhbHNlIH0pO1xuICAgICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG5cbiAgICBUSFJFRS5EZWZhdWx0TG9hZGluZ01hbmFnZXIub25FcnJvciA9ICh1cmwpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3Muc2V0KHsgZXJyb3JzOiBbLi4ucHJvZ3Jlc3MuZ2V0KCdlcnJvcnMnKSwgdXJsXSB9KTtcbiAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuXG4gICAgVEhSRUUuRGVmYXVsdExvYWRpbmdNYW5hZ2VyLm9uUHJvZ3Jlc3MgPSAoaXRlbSwgbG9hZGVkLCB0b3RhbCkgPT4ge1xuICAgICAgICBpZiAobG9hZGVkID09PSB0b3RhbCkgc2F2ZUxhc3RUb3RhbExvYWRlZCA9IHRvdGFsO1xuICAgICAgICBwcm9ncmVzcy5zZXQoe1xuICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgIGxvYWRlZCxcbiAgICAgICAgICAgIHRvdGFsLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6ICgobG9hZGVkIC0gc2F2ZUxhc3RUb3RhbExvYWRlZCkgLyAodG90YWwgLSBzYXZlTGFzdFRvdGFsTG9hZGVkKSkgKiAxMDAgfHwgMTAwLFxuICAgICAgICB9KTtcbiAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb2dyZXNzO1xufVxuIl19
@@ -0,0 +1,19 @@
1
+ import { inject } from '@angular/core';
2
+ import { injectNgtLoader, NgtStore } from 'angular-three';
3
+ import { tap } from 'rxjs';
4
+ import * as THREE from 'three';
5
+ export const IsObject = (url) => url === Object(url) && !Array.isArray(url) && typeof url !== 'function';
6
+ export function injectNgtsTextureLoader(input, onLoad) {
7
+ const store = inject(NgtStore);
8
+ return injectNgtLoader(() => THREE.TextureLoader, input).pipe(tap((textures) => {
9
+ const array = Array.isArray(textures)
10
+ ? textures
11
+ : textures instanceof THREE.Texture
12
+ ? [textures]
13
+ : Object.values(textures);
14
+ if (onLoad)
15
+ onLoad(array);
16
+ array.forEach(store.get('gl').initTexture);
17
+ }));
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9saWIvdGV4dHVyZS1sb2FkZXIvdGV4dHVyZS1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFvQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFRLEVBQWlDLEVBQUUsQ0FDaEUsR0FBRyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDO0FBRTVFLE1BQU0sVUFBVSx1QkFBdUIsQ0FDbkMsS0FBa0MsRUFDbEMsTUFBMkQ7SUFFM0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUN6RCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNiLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxRQUFRO1lBQ1YsQ0FBQyxDQUFDLFFBQVEsWUFBWSxLQUFLLENBQUMsT0FBTztnQkFDbkMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUNaLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLElBQUksTUFBTTtZQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQ2tELENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0TG9hZGVyLCBOZ3RMb2FkZXJSZXN1bHRzLCBOZ3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBjb25zdCBJc09iamVjdCA9ICh1cmw6IGFueSk6IHVybCBpcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+XG4gICAgdXJsID09PSBPYmplY3QodXJsKSAmJiAhQXJyYXkuaXNBcnJheSh1cmwpICYmIHR5cGVvZiB1cmwgIT09ICdmdW5jdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzVGV4dHVyZUxvYWRlcjxUSW5wdXQgZXh0ZW5kcyBzdHJpbmdbXSB8IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgIGlucHV0OiBUSW5wdXQgfCBPYnNlcnZhYmxlPFRJbnB1dD4sXG4gICAgb25Mb2FkPzogKHRleHR1cmU6IFRIUkVFLlRleHR1cmUgfCBUSFJFRS5UZXh0dXJlW10pID0+IHZvaWRcbik6IE9ic2VydmFibGU8Tmd0TG9hZGVyUmVzdWx0czxUSW5wdXQsIFRIUkVFLlRleHR1cmU+PiB7XG4gICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICAgIHJldHVybiBpbmplY3ROZ3RMb2FkZXIoKCkgPT4gVEhSRUUuVGV4dHVyZUxvYWRlciwgaW5wdXQpLnBpcGUoXG4gICAgICAgIHRhcCgodGV4dHVyZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gQXJyYXkuaXNBcnJheSh0ZXh0dXJlcylcbiAgICAgICAgICAgICAgICA/IHRleHR1cmVzXG4gICAgICAgICAgICAgICAgOiB0ZXh0dXJlcyBpbnN0YW5jZW9mIFRIUkVFLlRleHR1cmVcbiAgICAgICAgICAgICAgICA/IFt0ZXh0dXJlc11cbiAgICAgICAgICAgICAgICA6IE9iamVjdC52YWx1ZXModGV4dHVyZXMpO1xuICAgICAgICAgICAgaWYgKG9uTG9hZCkgb25Mb2FkKGFycmF5KTtcbiAgICAgICAgICAgIGFycmF5LmZvckVhY2goc3RvcmUuZ2V0KCdnbCcpLmluaXRUZXh0dXJlKTtcbiAgICAgICAgfSlcbiAgICApIGFzIE9ic2VydmFibGU8Tmd0TG9hZGVyUmVzdWx0czxUSW5wdXQsIFRIUkVFLlRleHR1cmU+Pjtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLW1pc2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9taXNjL3NyYy9hbmd1bGFyLXRocmVlLXNvYmEtbWlzYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './lib/bake-shadows/bake-shadows';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9taXNjL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYmFrZS1zaGFkb3dzL2Jha2Utc2hhZG93cyc7XG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Directive, inject } from '@angular/core';
2
+ import { NgtRxStore, NgtStore } from 'angular-three';
3
+ import * as i0 from "@angular/core";
4
+ export class NgtsBakeShadows extends NgtRxStore {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.store = inject(NgtStore);
8
+ }
9
+ ngOnInit() {
10
+ this.effect(this.store.select('gl'), (gl) => {
11
+ gl.shadowMap.autoUpdate = false;
12
+ gl.shadowMap.needsUpdate = true;
13
+ return () => {
14
+ gl.shadowMap.autoUpdate = gl.shadowMap.needsUpdate = true;
15
+ };
16
+ });
17
+ }
18
+ }
19
+ NgtsBakeShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsBakeShadows, deps: null, target: i0.ɵɵFactoryTarget.Directive });
20
+ NgtsBakeShadows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", usesInheritance: true, ngImport: i0 });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsBakeShadows, decorators: [{
22
+ type: Directive,
23
+ args: [{ selector: 'ngts-bake-shadows', standalone: true }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFrZS1zaGFkb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvbWlzYy9zcmMvbGliL2Jha2Utc2hhZG93cy9iYWtlLXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3JELE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUFEL0M7O1FBRXFCLFVBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FZN0M7SUFWRyxRQUFRO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3hDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUNoQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFFaEMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQzlELENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NEdBWlEsZUFBZTtnR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25ndHMtYmFrZS1zaGFkb3dzJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNCYWtlU2hhZG93cyBleHRlbmRzIE5ndFJ4U3RvcmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0KHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcpLCAoZ2wpID0+IHtcbiAgICAgICAgICAgIGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICBnbC5zaGFkb3dNYXAubmVlZHNVcGRhdGUgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gZ2wuc2hhZG93TWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLXBlcmZvcm1hbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvcGVyZm9ybWFuY2Uvc3JjL2FuZ3VsYXItdGhyZWUtc29iYS1wZXJmb3JtYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './lib/adaptive/adaptive-dpr';
2
+ export * from './lib/adaptive/adaptive-events';
3
+ export * from './lib/detailed/detailed';
4
+ export * from './lib/stats/stats';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FkYXB0aXZlL2FkYXB0aXZlLWRwcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hZGFwdGl2ZS9hZGFwdGl2ZS1ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGV0YWlsZWQvZGV0YWlsZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdHMvc3RhdHMnO1xuIl19
@@ -0,0 +1,46 @@
1
+ import { Directive, inject, Input } from '@angular/core';
2
+ import { RxActionFactory } from '@rx-angular/state/actions';
3
+ import { NgtRxStore, NgtStore } from 'angular-three';
4
+ import * as i0 from "@angular/core";
5
+ export class NgtsAdaptiveDpr extends NgtRxStore {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.store = inject(NgtStore);
9
+ this.actions = inject((RxActionFactory)).create();
10
+ this.pixelated = false;
11
+ }
12
+ ngOnInit() {
13
+ this.effect(this.actions.restorePixel$, () => {
14
+ const domElement = this.store.get('gl', 'domElement');
15
+ return () => {
16
+ const active = this.store.get('internal', 'active');
17
+ const setDpr = this.store.get('setDpr');
18
+ const initialDpr = this.store.get('viewport', 'initialDpr');
19
+ if (active)
20
+ setDpr(initialDpr);
21
+ if (this.pixelated && domElement)
22
+ domElement.style.imageRendering = 'auto';
23
+ };
24
+ });
25
+ this.actions.restorePixel();
26
+ this.hold(this.store.select('performance', 'current'), (performanceCurrent) => {
27
+ const { gl, viewport, setDpr } = this.store.get();
28
+ setDpr(performanceCurrent * viewport.initialDpr);
29
+ if (this.pixelated && gl.domElement)
30
+ gl.domElement.style.imageRendering = performanceCurrent === 1 ? 'auto' : 'pixelated';
31
+ });
32
+ }
33
+ }
34
+ NgtsAdaptiveDpr.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsAdaptiveDpr, deps: null, target: i0.ɵɵFactoryTarget.Directive });
35
+ NgtsAdaptiveDpr.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: "pixelated" }, providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
37
+ type: Directive,
38
+ args: [{
39
+ selector: 'ngts-adaptive-dpr',
40
+ standalone: true,
41
+ providers: [RxActionFactory],
42
+ }]
43
+ }], propDecorators: { pixelated: [{
44
+ type: Input
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZHByLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvcGVyZm9ybWFuY2Uvc3JjL2xpYi9hZGFwdGl2ZS9hZGFwdGl2ZS1kcHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsVUFBVTtJQUwvQzs7UUFNcUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsTUFBTSxDQUFDLENBQUEsZUFBdUMsQ0FBQSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFM0UsY0FBUyxHQUFHLEtBQUssQ0FBQztLQXVCOUI7SUFyQkcsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN0RCxPQUFPLEdBQUcsRUFBRTtnQkFDUixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQzVELElBQUksTUFBTTtvQkFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxVQUFVO29CQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztZQUMvRSxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQzFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbEQsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLFVBQVU7Z0JBQy9CLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxrQkFBa0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQzdGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NEdBMUJRLGVBQWU7Z0dBQWYsZUFBZSxvR0FGYixDQUFDLGVBQWUsQ0FBQzsyRkFFbkIsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUMvQjs4QkFLWSxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJ4QWN0aW9uRmFjdG9yeSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlL2FjdGlvbnMnO1xuaW1wb3J0IHsgTmd0UnhTdG9yZSwgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWFkYXB0aXZlLWRwcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtSeEFjdGlvbkZhY3RvcnldLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQWRhcHRpdmVEcHIgZXh0ZW5kcyBOZ3RSeFN0b3JlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnMgPSBpbmplY3QoUnhBY3Rpb25GYWN0b3J5PHsgcmVzdG9yZVBpeGVsOiB2b2lkIH0+KS5jcmVhdGUoKTtcblxuICAgIEBJbnB1dCgpIHBpeGVsYXRlZCA9IGZhbHNlO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWZmZWN0KHRoaXMuYWN0aW9ucy5yZXN0b3JlUGl4ZWwkLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5zdG9yZS5nZXQoJ2dsJywgJ2RvbUVsZW1lbnQnKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gdGhpcy5zdG9yZS5nZXQoJ2ludGVybmFsJywgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNldERwciA9IHRoaXMuc3RvcmUuZ2V0KCdzZXREcHInKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbml0aWFsRHByID0gdGhpcy5zdG9yZS5nZXQoJ3ZpZXdwb3J0JywgJ2luaXRpYWxEcHInKTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSBzZXREcHIoaW5pdGlhbERwcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGl4ZWxhdGVkICYmIGRvbUVsZW1lbnQpIGRvbUVsZW1lbnQuc3R5bGUuaW1hZ2VSZW5kZXJpbmcgPSAnYXV0byc7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFjdGlvbnMucmVzdG9yZVBpeGVsKCk7XG5cbiAgICAgICAgdGhpcy5ob2xkKHRoaXMuc3RvcmUuc2VsZWN0KCdwZXJmb3JtYW5jZScsICdjdXJyZW50JyksIChwZXJmb3JtYW5jZUN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZ2wsIHZpZXdwb3J0LCBzZXREcHIgfSA9IHRoaXMuc3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICBzZXREcHIocGVyZm9ybWFuY2VDdXJyZW50ICogdmlld3BvcnQuaW5pdGlhbERwcik7XG4gICAgICAgICAgICBpZiAodGhpcy5waXhlbGF0ZWQgJiYgZ2wuZG9tRWxlbWVudClcbiAgICAgICAgICAgICAgICBnbC5kb21FbGVtZW50LnN0eWxlLmltYWdlUmVuZGVyaW5nID0gcGVyZm9ybWFuY2VDdXJyZW50ID09PSAxID8gJ2F1dG8nIDogJ3BpeGVsYXRlZCc7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import { Directive, inject } from '@angular/core';
2
+ import { RxActionFactory } from '@rx-angular/state/actions';
3
+ import { NgtRxStore, NgtStore } from 'angular-three';
4
+ import * as i0 from "@angular/core";
5
+ export class NgtsAdaptiveEvents extends NgtRxStore {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.store = inject(NgtStore);
9
+ this.actions = inject((RxActionFactory)).create();
10
+ }
11
+ ngOnInit() {
12
+ this.effect(this.actions.setEvents$, () => {
13
+ const enabled = this.store.get('events', 'enabled');
14
+ return () => {
15
+ const setEvents = this.store.get('setEvents');
16
+ setEvents({ enabled });
17
+ };
18
+ });
19
+ this.actions.setEvents();
20
+ this.hold(this.store.select('performance', 'current'), (current) => {
21
+ const setEvents = this.store.get('setEvents');
22
+ setEvents({ enabled: current === 1 });
23
+ });
24
+ }
25
+ }
26
+ NgtsAdaptiveEvents.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsAdaptiveEvents, deps: null, target: i0.ɵɵFactoryTarget.Directive });
27
+ NgtsAdaptiveEvents.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
29
+ type: Directive,
30
+ args: [{
31
+ selector: 'ngts-adaptive-events',
32
+ standalone: true,
33
+ providers: [RxActionFactory],
34
+ }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvcGVyZm9ybWFuY2Uvc3JjL2xpYi9hZGFwdGl2ZS9hZGFwdGl2ZS1ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9yRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsVUFBVTtJQUxsRDs7UUFNcUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsTUFBTSxDQUFDLENBQUEsZUFBb0MsQ0FBQSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7S0FpQnBGO0lBZkcsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNwRCxPQUFPLEdBQUcsRUFBRTtnQkFDUixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMvRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzsrR0FsQlEsa0JBQWtCO21HQUFsQixrQkFBa0IsbUVBRmhCLENBQUMsZUFBZSxDQUFDOzJGQUVuQixrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSeEFjdGlvbkZhY3RvcnkgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZS9hY3Rpb25zJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1hZGFwdGl2ZS1ldmVudHMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbUnhBY3Rpb25GYWN0b3J5XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0FkYXB0aXZlRXZlbnRzIGV4dGVuZHMgTmd0UnhTdG9yZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zID0gaW5qZWN0KFJ4QWN0aW9uRmFjdG9yeTx7IHNldEV2ZW50czogdm9pZCB9PikuY3JlYXRlKCk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZmZlY3QodGhpcy5hY3Rpb25zLnNldEV2ZW50cyQsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVuYWJsZWQgPSB0aGlzLnN0b3JlLmdldCgnZXZlbnRzJywgJ2VuYWJsZWQnKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2V0RXZlbnRzID0gdGhpcy5zdG9yZS5nZXQoJ3NldEV2ZW50cycpO1xuICAgICAgICAgICAgICAgIHNldEV2ZW50cyh7IGVuYWJsZWQgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3Rpb25zLnNldEV2ZW50cygpO1xuXG4gICAgICAgIHRoaXMuaG9sZCh0aGlzLnN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAnY3VycmVudCcpLCAoY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2V0RXZlbnRzID0gdGhpcy5zdG9yZS5nZXQoJ3NldEV2ZW50cycpO1xuICAgICAgICAgICAgc2V0RXZlbnRzKHsgZW5hYmxlZDogY3VycmVudCA9PT0gMSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,50 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
+ import { extend, injectNgtRef, NgtRxStore } from 'angular-three';
3
+ import { combineLatest } from 'rxjs';
4
+ import { LOD } from 'three';
5
+ import * as i0 from "@angular/core";
6
+ extend({ LOD });
7
+ export class NgtsDetailed extends NgtRxStore {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.lodRef = injectNgtRef();
11
+ }
12
+ set distances(distances) {
13
+ this.set({ distances });
14
+ }
15
+ ngOnInit() {
16
+ this.updateLodChildren();
17
+ }
18
+ updateLodChildren() {
19
+ this.hold(combineLatest([this.lodRef.children$(), this.select('distances')]), ([children, distances]) => {
20
+ this.lodRef.nativeElement.levels.length = 0;
21
+ children.forEach((child, index) => {
22
+ this.lodRef.nativeElement.addLevel(child, distances[index]);
23
+ });
24
+ });
25
+ }
26
+ }
27
+ NgtsDetailed.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsDetailed, deps: null, target: i0.ɵɵFactoryTarget.Component });
28
+ NgtsDetailed.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed[distances]", inputs: { lodRef: "lodRef", distances: "distances" }, usesInheritance: true, ngImport: i0, template: `
29
+ <ngt-lOD [ref]="lodRef" ngtCompound (beforeRender)="$any($event).object.update($any($event).state.camera)">
30
+ <ng-content />
31
+ </ngt-lOD>
32
+ `, isInline: true });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsDetailed, decorators: [{
34
+ type: Component,
35
+ args: [{
36
+ selector: 'ngts-detailed[distances]',
37
+ standalone: true,
38
+ template: `
39
+ <ngt-lOD [ref]="lodRef" ngtCompound (beforeRender)="$any($event).object.update($any($event).state.camera)">
40
+ <ng-content />
41
+ </ngt-lOD>
42
+ `,
43
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
44
+ }]
45
+ }], propDecorators: { lodRef: [{
46
+ type: Input
47
+ }], distances: [{
48
+ type: Input
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvbGliL2RldGFpbGVkL2RldGFpbGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRTVCLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFZaEIsTUFBTSxPQUFPLFlBQWEsU0FBUSxVQUFVO0lBVjVDOztRQVdhLFdBQU0sR0FBRyxZQUFZLEVBQU8sQ0FBQztLQWtCekM7SUFoQkcsSUFBYSxTQUFTLENBQUMsU0FBbUI7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7WUFDcEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDNUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7eUdBbEJRLFlBQVk7NkZBQVosWUFBWSxpS0FQWDs7OztLQUlUOzJGQUdRLFlBQVk7a0JBVnhCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztLQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQzs4QkFFWSxNQUFNO3NCQUFkLEtBQUs7Z0JBRU8sU0FBUztzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3ROZ3RSZWYsIE5ndFJ4U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExPRCB9IGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKHsgTE9EIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtZGV0YWlsZWRbZGlzdGFuY2VzXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LWxPRCBbcmVmXT1cImxvZFJlZlwiIG5ndENvbXBvdW5kIChiZWZvcmVSZW5kZXIpPVwiJGFueSgkZXZlbnQpLm9iamVjdC51cGRhdGUoJGFueSgkZXZlbnQpLnN0YXRlLmNhbWVyYSlcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvbmd0LWxPRD5cbiAgICBgLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0RldGFpbGVkIGV4dGVuZHMgTmd0UnhTdG9yZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgbG9kUmVmID0gaW5qZWN0Tmd0UmVmPExPRD4oKTtcblxuICAgIEBJbnB1dCgpIHNldCBkaXN0YW5jZXMoZGlzdGFuY2VzOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLnNldCh7IGRpc3RhbmNlcyB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMb2RDaGlsZHJlbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9kQ2hpbGRyZW4oKSB7XG4gICAgICAgIHRoaXMuaG9sZChjb21iaW5lTGF0ZXN0KFt0aGlzLmxvZFJlZi5jaGlsZHJlbiQoKSwgdGhpcy5zZWxlY3QoJ2Rpc3RhbmNlcycpXSksIChbY2hpbGRyZW4sIGRpc3RhbmNlc10pID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9kUmVmLm5hdGl2ZUVsZW1lbnQubGV2ZWxzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZFJlZi5uYXRpdmVFbGVtZW50LmFkZExldmVsKGNoaWxkLCBkaXN0YW5jZXNbaW5kZXhdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Directive, inject, Input } from '@angular/core';
3
+ import { addAfterEffect, addEffect, NgtRxStore, startWithUndefined } from 'angular-three';
4
+ import { combineLatest } from 'rxjs';
5
+ import * as Stats from 'stats.js';
6
+ import * as i0 from "@angular/core";
7
+ export class NgtsStats extends NgtRxStore {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.document = inject(DOCUMENT);
11
+ this.stats = new Stats();
12
+ }
13
+ set showPanel(showPanel) {
14
+ this.set({ showPanel: showPanel === undefined ? this.get('showPanel') : showPanel });
15
+ }
16
+ set parent(parent) {
17
+ this.set({ parent });
18
+ }
19
+ set classes(classes) {
20
+ this.set({ classes });
21
+ }
22
+ initialize() {
23
+ super.initialize();
24
+ this.set({ showPanel: 0 });
25
+ }
26
+ ngOnInit() {
27
+ this.effect(combineLatest([
28
+ this.select('showPanel'),
29
+ this.select('parent').pipe(startWithUndefined()),
30
+ this.select('classes').pipe(startWithUndefined()),
31
+ ]), ([showPanel, parent, classes]) => {
32
+ const node = parent && parent.nativeElement ? parent.nativeElement : this.document.body;
33
+ this.stats.showPanel(showPanel);
34
+ node.appendChild(this.stats.dom);
35
+ if (classes) {
36
+ this.stats.dom.classList.add(...classes.split(' ').filter((cls) => cls));
37
+ }
38
+ const begin = addEffect(() => this.stats.begin());
39
+ const end = addAfterEffect(() => this.stats.end());
40
+ return () => {
41
+ node.removeChild(this.stats.dom);
42
+ begin();
43
+ end();
44
+ };
45
+ });
46
+ }
47
+ }
48
+ NgtsStats.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsStats, deps: null, target: i0.ɵɵFactoryTarget.Directive });
49
+ NgtsStats.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsStats, isStandalone: true, selector: "ngts-stats", inputs: { showPanel: "showPanel", parent: "parent", classes: "classes" }, usesInheritance: true, ngImport: i0 });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsStats, decorators: [{
51
+ type: Directive,
52
+ args: [{
53
+ selector: 'ngts-stats',
54
+ standalone: true,
55
+ }]
56
+ }], propDecorators: { showPanel: [{
57
+ type: Input
58
+ }], parent: [{
59
+ type: Input
60
+ }], classes: [{
61
+ type: Input
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvbGliL3N0YXRzL3N0YXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQWtCLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sS0FBSyxLQUFLLE1BQU0sVUFBVSxDQUFDOztBQU1sQyxNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQVU7SUFKekM7O1FBS3FCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7S0EyQ3hDO0lBekNHLElBQWEsU0FBUyxDQUFDLFNBQWlCO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBbUM7UUFDbkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FDUCxhQUFhLENBQUM7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDcEQsQ0FBQyxFQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUFJLE9BQU8sRUFBRTtnQkFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDcEY7WUFDRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkQsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsQ0FBQztnQkFDUixHQUFHLEVBQUUsQ0FBQztZQUNWLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQzs7c0dBNUNRLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQUpyQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBS2dCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFkZEFmdGVyRWZmZWN0LCBhZGRFZmZlY3QsIE5ndEluamVjdGVkUmVmLCBOZ3RSeFN0b3JlLCBzdGFydFdpdGhVbmRlZmluZWQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFN0YXRzIGZyb20gJ3N0YXRzLmpzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXN0YXRzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhdHMgZXh0ZW5kcyBOZ3RSeFN0b3JlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXRzID0gbmV3IFN0YXRzKCk7XG5cbiAgICBASW5wdXQoKSBzZXQgc2hvd1BhbmVsKHNob3dQYW5lbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2hvd1BhbmVsOiBzaG93UGFuZWwgPT09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0KCdzaG93UGFuZWwnKSA6IHNob3dQYW5lbCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcGFyZW50KHBhcmVudDogTmd0SW5qZWN0ZWRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcGFyZW50IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjbGFzc2VzKGNsYXNzZXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCh7IGNsYXNzZXMgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7IHNob3dQYW5lbDogMCB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5lZmZlY3QoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnc2hvd1BhbmVsJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3BhcmVudCcpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdjbGFzc2VzJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIChbc2hvd1BhbmVsLCBwYXJlbnQsIGNsYXNzZXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHBhcmVudCAmJiBwYXJlbnQubmF0aXZlRWxlbWVudCA/IHBhcmVudC5uYXRpdmVFbGVtZW50IDogdGhpcy5kb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHMuc2hvd1BhbmVsKHNob3dQYW5lbCk7XG4gICAgICAgICAgICAgICAgbm9kZS5hcHBlbmRDaGlsZCh0aGlzLnN0YXRzLmRvbSk7XG4gICAgICAgICAgICAgICAgaWYgKGNsYXNzZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0cy5kb20uY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLnNwbGl0KCcgJykuZmlsdGVyKChjbHM6IHN0cmluZykgPT4gY2xzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGJlZ2luID0gYWRkRWZmZWN0KCgpID0+IHRoaXMuc3RhdHMuYmVnaW4oKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gYWRkQWZ0ZXJFZmZlY3QoKCkgPT4gdGhpcy5zdGF0cy5lbmQoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZCh0aGlzLnN0YXRzLmRvbSk7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luKCk7XG4gICAgICAgICAgICAgICAgICAgIGVuZCgpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLXNoYWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzL3NyYy9hbmd1bGFyLXRocmVlLXNvYmEtc2hhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './lib/shader-material/shader-material';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhZGVyLW1hdGVyaWFsL3NoYWRlci1tYXRlcmlhbCc7XG4iXX0=
@@ -0,0 +1,34 @@
1
+ import * as THREE from 'three';
2
+ export function shaderMaterial(uniforms, vertexShader, fragmentShader, onInit) {
3
+ const material = class extends THREE.ShaderMaterial {
4
+ constructor(parameters = {}) {
5
+ const entries = Object.entries(uniforms);
6
+ // Create unforms and shaders
7
+ super({
8
+ uniforms: entries.reduce((acc, [name, value]) => {
9
+ const uniform = THREE.UniformsUtils.clone({ [name]: { value } });
10
+ return {
11
+ ...acc,
12
+ ...uniform,
13
+ };
14
+ }, {}),
15
+ vertexShader,
16
+ fragmentShader,
17
+ });
18
+ this.key = '';
19
+ // Create getter/setters
20
+ entries.forEach(([name]) => Object.defineProperty(this, name, {
21
+ get: () => this.uniforms[name].value,
22
+ set: (v) => (this.uniforms[name].value = v),
23
+ }));
24
+ // Assign parameters, this might include uniforms
25
+ Object.assign(this, parameters);
26
+ // Call onInit
27
+ if (onInit)
28
+ onInit(this);
29
+ }
30
+ };
31
+ material.key = THREE.MathUtils.generateUUID();
32
+ return material;
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycy9zcmMvbGliL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsUUFpQkMsRUFDRCxZQUFvQixFQUNwQixjQUFzQixFQUN0QixNQUFrRDtJQUVsRCxNQUFNLFFBQVEsR0FBRyxLQUFNLFNBQVEsS0FBSyxDQUFDLGNBQWM7UUFFL0MsWUFBWSxVQUFVLEdBQUcsRUFBRTtZQUN2QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLDZCQUE2QjtZQUM3QixLQUFLLENBQUM7Z0JBQ0YsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtvQkFDNUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNqRSxPQUFPO3dCQUNILEdBQUcsR0FBRzt3QkFDTixHQUFHLE9BQU87cUJBQ2IsQ0FBQztnQkFDTixDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNOLFlBQVk7Z0JBQ1osY0FBYzthQUNqQixDQUFDLENBQUM7WUFkQSxRQUFHLEdBQUcsRUFBRSxDQUFDO1lBZVosd0JBQXdCO1lBQ3hCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FDdkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO2dCQUM5QixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO2dCQUNwQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2FBQzlDLENBQUMsQ0FDTCxDQUFDO1lBRUYsaURBQWlEO1lBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hDLGNBQWM7WUFDZCxJQUFJLE1BQU07Z0JBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7S0FDd0QsQ0FBQztJQUM5RCxRQUFRLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNoYWRlck1hdGVyaWFsKFxuICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIFtuYW1lOiBzdHJpbmddOlxuICAgICAgICAgICAgfCBUSFJFRS5DdWJlVGV4dHVyZVxuICAgICAgICAgICAgfCBUSFJFRS5UZXh0dXJlXG4gICAgICAgICAgICB8IEludDMyQXJyYXlcbiAgICAgICAgICAgIHwgRmxvYXQzMkFycmF5XG4gICAgICAgICAgICB8IFRIUkVFLk1hdHJpeDRcbiAgICAgICAgICAgIHwgVEhSRUUuTWF0cml4M1xuICAgICAgICAgICAgfCBUSFJFRS5RdWF0ZXJuaW9uXG4gICAgICAgICAgICB8IFRIUkVFLlZlY3RvcjRcbiAgICAgICAgICAgIHwgVEhSRUUuVmVjdG9yM1xuICAgICAgICAgICAgfCBUSFJFRS5WZWN0b3IyXG4gICAgICAgICAgICB8IFRIUkVFLkNvbG9yXG4gICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgfCBib29sZWFuXG4gICAgICAgICAgICB8IEFycmF5PGFueT5cbiAgICAgICAgICAgIHwgbnVsbDtcbiAgICB9LFxuICAgIHZlcnRleFNoYWRlcjogc3RyaW5nLFxuICAgIGZyYWdtZW50U2hhZGVyOiBzdHJpbmcsXG4gICAgb25Jbml0PzogKG1hdGVyaWFsPzogVEhSRUUuU2hhZGVyTWF0ZXJpYWwpID0+IHZvaWRcbikge1xuICAgIGNvbnN0IG1hdGVyaWFsID0gY2xhc3MgZXh0ZW5kcyBUSFJFRS5TaGFkZXJNYXRlcmlhbCB7XG4gICAgICAgIHB1YmxpYyBrZXkgPSAnJztcbiAgICAgICAgY29uc3RydWN0b3IocGFyYW1ldGVycyA9IHt9KSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModW5pZm9ybXMpO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIHVuZm9ybXMgYW5kIHNoYWRlcnNcbiAgICAgICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgICAgICB1bmlmb3JtczogZW50cmllcy5yZWR1Y2UoKGFjYywgW25hbWUsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlmb3JtID0gVEhSRUUuVW5pZm9ybXNVdGlscy5jbG9uZSh7IFtuYW1lXTogeyB2YWx1ZSB9IH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udW5pZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LCB7fSksXG4gICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyLFxuICAgICAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBDcmVhdGUgZ2V0dGVyL3NldHRlcnNcbiAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaCgoW25hbWVdKSA9PlxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBuYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gdGhpcy51bmlmb3Jtc1tuYW1lXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2V0OiAodikgPT4gKHRoaXMudW5pZm9ybXNbbmFtZV0udmFsdWUgPSB2KSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gQXNzaWduIHBhcmFtZXRlcnMsIHRoaXMgbWlnaHQgaW5jbHVkZSB1bmlmb3Jtc1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIC8vIENhbGwgb25Jbml0XG4gICAgICAgICAgICBpZiAob25Jbml0KSBvbkluaXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9IGFzIHVua25vd24gYXMgdHlwZW9mIFRIUkVFLlNoYWRlck1hdGVyaWFsICYgeyBrZXk6IHN0cmluZyB9O1xuICAgIG1hdGVyaWFsLmtleSA9IFRIUkVFLk1hdGhVdGlscy5nZW5lcmF0ZVVVSUQoKTtcbiAgICByZXR1cm4gbWF0ZXJpYWw7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLXN0YWdpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9hbmd1bGFyLXRocmVlLXNvYmEtc3RhZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==