angular-three-soba 1.3.1 → 1.4.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 (53) hide show
  1. package/abstractions/README.md +3 -0
  2. package/abstractions/index.d.ts +6 -0
  3. package/abstractions/lib/billboard/billboard.d.ts +14 -0
  4. package/abstractions/lib/gizmo-helper/gizmo-helper.d.ts +41 -0
  5. package/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.d.ts +12 -0
  6. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +16 -0
  7. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +24 -0
  8. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +14 -0
  9. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +15 -0
  10. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +28 -0
  11. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +21 -0
  12. package/abstractions/lib/text/text.d.ts +21 -0
  13. package/abstractions/lib/text-3d/text-3d.d.ts +39 -0
  14. package/esm2020/abstractions/angular-three-soba-abstractions.mjs +5 -0
  15. package/esm2020/abstractions/index.mjs +7 -0
  16. package/esm2020/abstractions/lib/billboard/billboard.mjs +73 -0
  17. package/esm2020/abstractions/lib/gizmo-helper/gizmo-helper.mjs +206 -0
  18. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  19. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +91 -0
  20. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +182 -0
  21. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +45 -0
  22. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +133 -0
  23. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +193 -0
  24. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +266 -0
  25. package/esm2020/abstractions/lib/text/text.mjs +110 -0
  26. package/esm2020/abstractions/lib/text-3d/text-3d.mjs +144 -0
  27. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +5 -5
  28. package/esm2020/performance/lib/stats/stats.mjs +21 -7
  29. package/esm2020/staging/index.mjs +3 -1
  30. package/esm2020/staging/lib/camera-shake/camera-shake.mjs +121 -0
  31. package/esm2020/staging/lib/cloud/cloud.mjs +159 -0
  32. package/fesm2015/angular-three-soba-abstractions.mjs +1431 -0
  33. package/fesm2015/angular-three-soba-abstractions.mjs.map +1 -0
  34. package/fesm2015/angular-three-soba-cameras.mjs +4 -4
  35. package/fesm2015/angular-three-soba-cameras.mjs.map +1 -1
  36. package/fesm2015/angular-three-soba-performance.mjs +20 -6
  37. package/fesm2015/angular-three-soba-performance.mjs.map +1 -1
  38. package/fesm2015/angular-three-soba-staging.mjs +274 -4
  39. package/fesm2015/angular-three-soba-staging.mjs.map +1 -1
  40. package/fesm2020/angular-three-soba-abstractions.mjs +1428 -0
  41. package/fesm2020/angular-three-soba-abstractions.mjs.map +1 -0
  42. package/fesm2020/angular-three-soba-cameras.mjs +4 -4
  43. package/fesm2020/angular-three-soba-cameras.mjs.map +1 -1
  44. package/fesm2020/angular-three-soba-performance.mjs +20 -6
  45. package/fesm2020/angular-three-soba-performance.mjs.map +1 -1
  46. package/fesm2020/angular-three-soba-staging.mjs +274 -4
  47. package/fesm2020/angular-three-soba-staging.mjs.map +1 -1
  48. package/package.json +11 -3
  49. package/performance/lib/stats/stats.d.ts +5 -4
  50. package/plugin/package.json +1 -1
  51. package/staging/index.d.ts +2 -0
  52. package/staging/lib/camera-shake/camera-shake.d.ts +28 -0
  53. package/staging/lib/cloud/cloud.d.ts +23 -0
@@ -0,0 +1,144 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
+ import { extend, NgtArgs, NgtPush, NgtRxStore } from 'angular-three';
3
+ import { combineLatest, map, of, switchMap } from 'rxjs';
4
+ import { Mesh } from 'three';
5
+ import { FontLoader, TextGeometry } from 'three-stdlib';
6
+ import * as i0 from "@angular/core";
7
+ extend({ Mesh, TextGeometry });
8
+ export class NgtsText3D extends NgtRxStore {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.font$ = this.select('font').pipe(switchMap((font) => {
12
+ if (typeof font === 'string')
13
+ return fetch(font).then((res) => res.json());
14
+ return of(font);
15
+ }), map((fontData) => new FontLoader().parse(fontData)));
16
+ this.geometryArgs$ = combineLatest([
17
+ this.font$,
18
+ this.select('text'),
19
+ this.select('size'),
20
+ this.select('height'),
21
+ this.select('bevelThickness'),
22
+ this.select('bevelSize'),
23
+ this.select('bevelEnabled'),
24
+ this.select('bevelSegments'),
25
+ this.select('bevelOffset'),
26
+ this.select('curveSegments'),
27
+ this.select('letterSpacing'),
28
+ this.select('lineHeight'),
29
+ ]).pipe(map(([font, text, size, height, bevelThickness, bevelSize, bevelEnabled, bevelSegments, bevelOffset, curveSegments, letterSpacing, lineHeight,]) => [
30
+ text,
31
+ {
32
+ font,
33
+ size,
34
+ height,
35
+ bevelThickness,
36
+ bevelSize,
37
+ bevelSegments,
38
+ bevelEnabled,
39
+ bevelOffset,
40
+ curveSegments,
41
+ letterSpacing,
42
+ lineHeight,
43
+ },
44
+ ]));
45
+ }
46
+ set font(font) {
47
+ this.set({ font });
48
+ }
49
+ set text(text) {
50
+ this.set({ text });
51
+ }
52
+ set bevelEnabled(bevelEnabled) {
53
+ this.set({ bevelEnabled });
54
+ }
55
+ set bevelOffset(bevelOffset) {
56
+ this.set({ bevelOffset });
57
+ }
58
+ set bevelSize(bevelSize) {
59
+ this.set({ bevelSize });
60
+ }
61
+ set bevelThickness(bevelThickness) {
62
+ this.set({ bevelThickness });
63
+ }
64
+ set curveSegments(curveSegments) {
65
+ this.set({ curveSegments });
66
+ }
67
+ set bevelSegments(bevelSegments) {
68
+ this.set({ bevelSegments });
69
+ }
70
+ set height(height) {
71
+ this.set({ height });
72
+ }
73
+ set size(size) {
74
+ this.set({ size });
75
+ }
76
+ set lineHeight(lineHeight) {
77
+ this.set({ lineHeight });
78
+ }
79
+ set letterSpacing(letterSpacing) {
80
+ this.set({ letterSpacing });
81
+ }
82
+ initialize() {
83
+ super.initialize();
84
+ this.set({
85
+ letterSpacing: 0,
86
+ lineHeight: 1,
87
+ size: 1,
88
+ height: 0.2,
89
+ bevelThickness: 0.1,
90
+ bevelSize: 0.01,
91
+ bevelEnabled: false,
92
+ bevelOffset: 0,
93
+ bevelSegments: 4,
94
+ curveSegments: 8,
95
+ });
96
+ }
97
+ }
98
+ NgtsText3D.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsText3D, deps: null, target: i0.ɵɵFactoryTarget.Component });
99
+ NgtsText3D.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtsText3D, isStandalone: true, selector: "ngts-text-3d[font]", inputs: { font: "font", text: "text", bevelEnabled: "bevelEnabled", bevelOffset: "bevelOffset", bevelSize: "bevelSize", bevelThickness: "bevelThickness", curveSegments: "curveSegments", bevelSegments: "bevelSegments", height: "height", size: "size", lineHeight: "lineHeight", letterSpacing: "letterSpacing" }, usesInheritance: true, ngImport: i0, template: `
100
+ <ngt-mesh ngtCompound>
101
+ <ngt-text-geometry *args="geometryArgs$ | ngtPush : null" />
102
+ <ng-content />
103
+ </ngt-mesh>
104
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }] });
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsText3D, decorators: [{
106
+ type: Component,
107
+ args: [{
108
+ selector: 'ngts-text-3d[font]',
109
+ standalone: true,
110
+ template: `
111
+ <ngt-mesh ngtCompound>
112
+ <ngt-text-geometry *args="geometryArgs$ | ngtPush : null" />
113
+ <ng-content />
114
+ </ngt-mesh>
115
+ `,
116
+ imports: [NgtArgs, NgtPush],
117
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
118
+ }]
119
+ }], propDecorators: { font: [{
120
+ type: Input
121
+ }], text: [{
122
+ type: Input
123
+ }], bevelEnabled: [{
124
+ type: Input
125
+ }], bevelOffset: [{
126
+ type: Input
127
+ }], bevelSize: [{
128
+ type: Input
129
+ }], bevelThickness: [{
130
+ type: Input
131
+ }], curveSegments: [{
132
+ type: Input
133
+ }], bevelSegments: [{
134
+ type: Input
135
+ }], height: [{
136
+ type: Input
137
+ }], size: [{
138
+ type: Input
139
+ }], lineHeight: [{
140
+ type: Input
141
+ }], letterSpacing: [{
142
+ type: Input
143
+ }] } });
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC0zZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL2Fic3RyYWN0aW9ucy9zcmMvbGliL3RleHQtM2QvdGV4dC0zZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFxQnhELE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBYy9CLE1BQU0sT0FBTyxVQUFXLFNBQVEsVUFBVTtJQVoxQzs7UUE2RXFCLFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDN0MsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDZixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQXNCLENBQUM7WUFDaEcsT0FBTyxFQUFFLENBQUMsSUFBZ0IsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDdEQsQ0FBQztRQUVPLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLO1lBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztTQUM1QixDQUFDLENBQUMsSUFBSSxDQUNILEdBQUcsQ0FDQyxDQUFDLENBQ0csSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osTUFBTSxFQUNOLGNBQWMsRUFDZCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGFBQWEsRUFDYixXQUFXLEVBQ1gsYUFBYSxFQUNiLGFBQWEsRUFDYixVQUFVLEVBQ2IsRUFBRSxFQUFFLENBQUM7WUFDRixJQUFJO1lBQ0o7Z0JBQ0ksSUFBSTtnQkFDSixJQUFJO2dCQUNKLE1BQU07Z0JBQ04sY0FBYztnQkFDZCxTQUFTO2dCQUNULGFBQWE7Z0JBQ2IsWUFBWTtnQkFDWixXQUFXO2dCQUNYLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixVQUFVO2FBQ2I7U0FDSixDQUNKLENBQ0osQ0FBQztLQUNMO0lBdEhHLElBQWEsSUFBSSxDQUFDLElBQXVCO1FBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLElBQUksQ0FBQyxJQUFZO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLFlBQVksQ0FBQyxZQUFxQjtRQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBYSxXQUFXLENBQUMsV0FBbUI7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQWEsU0FBUyxDQUFDLFNBQWlCO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFhLGNBQWMsQ0FBQyxjQUFzQjtRQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBYSxhQUFhLENBQUMsYUFBcUI7UUFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQWEsYUFBYSxDQUFDLGFBQXFCO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLElBQUksQ0FBQyxJQUFZO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxVQUFrQjtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxhQUFhLENBQUMsYUFBcUI7UUFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNMLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLFVBQVUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLEVBQUUsR0FBRztZQUNYLGNBQWMsRUFBRSxHQUFHO1lBQ25CLFNBQVMsRUFBRSxJQUFJO1lBQ2YsWUFBWSxFQUFFLEtBQUs7WUFDbkIsV0FBVyxFQUFFLENBQUM7WUFDZCxhQUFhLEVBQUUsQ0FBQztZQUNoQixhQUFhLEVBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7SUFDUCxDQUFDOzt1R0EvRFEsVUFBVTsyRkFBVixVQUFVLDJaQVRUOzs7OztLQUtULDREQUNTLE9BQU8sZ0VBQUUsT0FBTzsyRkFHakIsVUFBVTtrQkFadEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7OztLQUtUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7b0JBQzNCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQzs4QkFFZ0IsSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxJQUFJO3NCQUFoQixLQUFLO2dCQUlPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLGNBQWM7c0JBQTFCLEtBQUs7Z0JBSU8sYUFBYTtzQkFBekIsS0FBSztnQkFJTyxhQUFhO3NCQUF6QixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLGFBQWE7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIE5ndEFyZ3MsIE5ndFB1c2gsIE5ndFJ4U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzaCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEZvbnRMb2FkZXIsIFRleHRHZW9tZXRyeSB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmRlY2xhcmUgdHlwZSBHbHlwaCA9IHtcbiAgICBfY2FjaGVkT3V0bGluZTogc3RyaW5nW107XG4gICAgaGE6IG51bWJlcjtcbiAgICBvOiBzdHJpbmc7XG59O1xuXG5kZWNsYXJlIHR5cGUgRm9udERhdGEgPSB7XG4gICAgYm91bmRpbmdCb3g6IHtcbiAgICAgICAgeU1heDogbnVtYmVyO1xuICAgICAgICB5TWluOiBudW1iZXI7XG4gICAgfTtcbiAgICBmYW1pbHlOYW1lOiBzdHJpbmc7XG4gICAgZ2x5cGhzOiB7XG4gICAgICAgIFtrOiBzdHJpbmddOiBHbHlwaDtcbiAgICB9O1xuICAgIHJlc29sdXRpb246IG51bWJlcjtcbiAgICB1bmRlcmxpbmVUaGlja25lc3M6IG51bWJlcjtcbn07XG5cbmV4dGVuZCh7IE1lc2gsIFRleHRHZW9tZXRyeSB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXRleHQtM2RbZm9udF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1tZXNoIG5ndENvbXBvdW5kPlxuICAgICAgICAgICAgPG5ndC10ZXh0LWdlb21ldHJ5ICphcmdzPVwiZ2VvbWV0cnlBcmdzJCB8IG5ndFB1c2ggOiBudWxsXCIgLz5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvbmd0LW1lc2g+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0QXJncywgTmd0UHVzaF0sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzVGV4dDNEIGV4dGVuZHMgTmd0UnhTdG9yZSB7XG4gICAgQElucHV0KCkgc2V0IGZvbnQoZm9udDogRm9udERhdGEgfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmb250IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCB0ZXh0KHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCh7IHRleHQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJldmVsRW5hYmxlZChiZXZlbEVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBiZXZlbEVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJldmVsT2Zmc2V0KGJldmVsT2Zmc2V0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBiZXZlbE9mZnNldCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYmV2ZWxTaXplKGJldmVsU2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmV2ZWxTaXplIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBiZXZlbFRoaWNrbmVzcyhiZXZlbFRoaWNrbmVzczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmV2ZWxUaGlja25lc3MgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGN1cnZlU2VnbWVudHMoY3VydmVTZWdtZW50czogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY3VydmVTZWdtZW50cyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYmV2ZWxTZWdtZW50cyhiZXZlbFNlZ21lbnRzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBiZXZlbFNlZ21lbnRzIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBoZWlnaHQoaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBoZWlnaHQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNpemUoc2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2l6ZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbGluZUhlaWdodChsaW5lSGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsaW5lSGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsZXR0ZXJTcGFjaW5nKGxldHRlclNwYWNpbmc6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGxldHRlclNwYWNpbmcgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiAwLFxuICAgICAgICAgICAgbGluZUhlaWdodDogMSxcbiAgICAgICAgICAgIHNpemU6IDEsXG4gICAgICAgICAgICBoZWlnaHQ6IDAuMixcbiAgICAgICAgICAgIGJldmVsVGhpY2tuZXNzOiAwLjEsXG4gICAgICAgICAgICBiZXZlbFNpemU6IDAuMDEsXG4gICAgICAgICAgICBiZXZlbEVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgYmV2ZWxPZmZzZXQ6IDAsXG4gICAgICAgICAgICBiZXZlbFNlZ21lbnRzOiA0LFxuICAgICAgICAgICAgY3VydmVTZWdtZW50czogOCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb250JCA9IHRoaXMuc2VsZWN0KCdmb250JykucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChmb250KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZvbnQgPT09ICdzdHJpbmcnKSByZXR1cm4gZmV0Y2goZm9udCkudGhlbigocmVzKSA9PiByZXMuanNvbigpKSBhcyBQcm9taXNlPEZvbnREYXRhPjtcbiAgICAgICAgICAgIHJldHVybiBvZihmb250IGFzIEZvbnREYXRhKTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgoZm9udERhdGEpID0+IG5ldyBGb250TG9hZGVyKCkucGFyc2UoZm9udERhdGEpKVxuICAgICk7XG5cbiAgICByZWFkb25seSBnZW9tZXRyeUFyZ3MkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZm9udCQsXG4gICAgICAgIHRoaXMuc2VsZWN0KCd0ZXh0JyksXG4gICAgICAgIHRoaXMuc2VsZWN0KCdzaXplJyksXG4gICAgICAgIHRoaXMuc2VsZWN0KCdoZWlnaHQnKSxcbiAgICAgICAgdGhpcy5zZWxlY3QoJ2JldmVsVGhpY2tuZXNzJyksXG4gICAgICAgIHRoaXMuc2VsZWN0KCdiZXZlbFNpemUnKSxcbiAgICAgICAgdGhpcy5zZWxlY3QoJ2JldmVsRW5hYmxlZCcpLFxuICAgICAgICB0aGlzLnNlbGVjdCgnYmV2ZWxTZWdtZW50cycpLFxuICAgICAgICB0aGlzLnNlbGVjdCgnYmV2ZWxPZmZzZXQnKSxcbiAgICAgICAgdGhpcy5zZWxlY3QoJ2N1cnZlU2VnbWVudHMnKSxcbiAgICAgICAgdGhpcy5zZWxlY3QoJ2xldHRlclNwYWNpbmcnKSxcbiAgICAgICAgdGhpcy5zZWxlY3QoJ2xpbmVIZWlnaHQnKSxcbiAgICBdKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgICAoW1xuICAgICAgICAgICAgICAgIGZvbnQsXG4gICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICBiZXZlbFRoaWNrbmVzcyxcbiAgICAgICAgICAgICAgICBiZXZlbFNpemUsXG4gICAgICAgICAgICAgICAgYmV2ZWxFbmFibGVkLFxuICAgICAgICAgICAgICAgIGJldmVsU2VnbWVudHMsXG4gICAgICAgICAgICAgICAgYmV2ZWxPZmZzZXQsXG4gICAgICAgICAgICAgICAgY3VydmVTZWdtZW50cyxcbiAgICAgICAgICAgICAgICBsZXR0ZXJTcGFjaW5nLFxuICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQsXG4gICAgICAgICAgICBdKSA9PiBbXG4gICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQsXG4gICAgICAgICAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgYmV2ZWxUaGlja25lc3MsXG4gICAgICAgICAgICAgICAgICAgIGJldmVsU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgYmV2ZWxTZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgYmV2ZWxFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICBiZXZlbE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgY3VydmVTZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyU3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVxuICAgICAgICApXG4gICAgKTtcbn1cbiJdfQ==
@@ -10,10 +10,10 @@ extend({ OrthographicCamera, Group });
10
10
  export class NgtsOrthographicCamera extends NgtsCamera {
11
11
  constructor() {
12
12
  super(...arguments);
13
- this.left$ = combineLatest([this.select('left'), this.store.select('size')]).pipe(map(([left, size]) => left ?? size.width / -2));
14
- this.right$ = combineLatest([this.select('right'), this.store.select('size')]).pipe(map(([right, size]) => right ?? size.width / 2));
15
- this.top$ = combineLatest([this.select('top'), this.store.select('size')]).pipe(map(([top, size]) => top ?? size.height / 2));
16
- this.bottom$ = combineLatest([this.select('bottom'), this.store.select('size')]).pipe(map(([bottom, size]) => bottom ?? size.height / -2));
13
+ this.left$ = combineLatest([this.select('left'), this.store.select('size')]).pipe(map(([left, size]) => left || size.width / -2));
14
+ this.right$ = combineLatest([this.select('right'), this.store.select('size')]).pipe(map(([right, size]) => right || size.width / 2));
15
+ this.top$ = combineLatest([this.select('top'), this.store.select('size')]).pipe(map(([top, size]) => top || size.height / 2));
16
+ this.bottom$ = combineLatest([this.select('bottom'), this.store.select('size')]).pipe(map(([bottom, size]) => bottom || size.height / -2));
17
17
  }
18
18
  set left(left) {
19
19
  this.set({ left });
@@ -89,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
89
89
  }], bottom: [{
90
90
  type: Input
91
91
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3J0aG9ncmFwaGljLWNhbWVyYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL2NhbWVyYXMvc3JjL2xpYi9vcnRob2dyYXBoaWMtY2FtZXJhL29ydGhvZ3JhcGhpYy1jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFN0QsTUFBTSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQTBCdEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFVBQW9DO0lBeEJoRjs7UUFnRGEsVUFBSyxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakYsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ2pELENBQUM7UUFFTyxXQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNuRixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQ2xELENBQUM7UUFFTyxTQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQy9DLENBQUM7UUFFTyxZQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyRixHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDdEQsQ0FBQztLQUNMO0lBcENHLElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQWEsR0FBRyxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O21IQXRCUSxzQkFBc0I7dUdBQXRCLHNCQUFzQix1TUFDakIsaUJBQWlCLHVFQXRCckI7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUJULDREQUNTLElBQUksNkZBQUUsZ0JBQWdCLCtJQUFFLE9BQU87MkZBR2hDLHNCQUFzQjtrQkF4QmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQztvQkFDMUMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzhCQUVvQyxhQUFhO3NCQUE3QyxZQUFZO3VCQUFDLGlCQUFpQjtnQkFFbEIsSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLEdBQUc7c0JBQWYsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgTmd0UHVzaCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHcm91cCwgT3J0aG9ncmFwaGljQ2FtZXJhIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYSB9IGZyb20gJy4uL2NhbWVyYS9jYW1lcmEnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYUNvbnRlbnQgfSBmcm9tICcuLi9jYW1lcmEvY2FtZXJhLWNvbnRlbnQnO1xuXG5leHRlbmQoeyBPcnRob2dyYXBoaWNDYW1lcmEsIEdyb3VwIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtb3J0aG9ncmFwaGljLWNhbWVyYScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmFcbiAgICAgICAgICAgIG5ndENvbXBvdW5kXG4gICAgICAgICAgICBbcmVmXT1cImNhbWVyYVJlZlwiXG4gICAgICAgICAgICBbbGVmdF09XCJsZWZ0JCB8IG5ndFB1c2hcIlxuICAgICAgICAgICAgW3JpZ2h0XT1cInJpZ2h0JCB8IG5ndFB1c2hcIlxuICAgICAgICAgICAgW3RvcF09XCJ0b3AkIHwgbmd0UHVzaFwiXG4gICAgICAgICAgICBbYm90dG9tXT1cImJvdHRvbSQgfCBuZ3RQdXNoXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FtZXJhQ29udGVudCAmJiAhY2FtZXJhQ29udGVudC5uZ3RzQ2FtZXJhQ29udGVudFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FtZXJhQ29udGVudC50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L25ndC1vcnRob2dyYXBoaWMtY2FtZXJhPlxuICAgICAgICA8bmd0LWdyb3VwICNncm91cCAqbmdJZj1cImNhbWVyYUNvbnRlbnQgJiYgY2FtZXJhQ29udGVudC5uZ3RzQ2FtZXJhQ29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhbWVyYUNvbnRlbnQudGVtcGxhdGU7IGNvbnRleHQ6IHsgZmJvOiBmYm9SZWYubmF0aXZlRWxlbWVudCwgZ3JvdXAgfVwiIC8+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIE5ndFB1c2hdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c09ydGhvZ3JhcGhpY0NhbWVyYSBleHRlbmRzIE5ndHNDYW1lcmE8VEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhPiB7XG4gICAgQENvbnRlbnRDaGlsZChOZ3RzQ2FtZXJhQ29udGVudCkgY2FtZXJhQ29udGVudD86IE5ndHNDYW1lcmFDb250ZW50O1xuXG4gICAgQElucHV0KCkgc2V0IGxlZnQobGVmdDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVmdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmlnaHQocmlnaHQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJpZ2h0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCB0b3AodG9wOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0b3AgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJvdHRvbShib3R0b206IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGJvdHRvbSB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVmdDogMCwgcmlnaHQ6IDAsIHRvcDogMCwgYm90dG9tOiAwIH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IGxlZnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ2xlZnQnKSwgdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKV0pLnBpcGUoXG4gICAgICAgIG1hcCgoW2xlZnQsIHNpemVdKSA9PiBsZWZ0ID8/IHNpemUud2lkdGggLyAtMilcbiAgICApO1xuXG4gICAgcmVhZG9ubHkgcmlnaHQkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ3JpZ2h0JyksIHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyldKS5waXBlKFxuICAgICAgICBtYXAoKFtyaWdodCwgc2l6ZV0pID0+IHJpZ2h0ID8/IHNpemUud2lkdGggLyAyKVxuICAgICk7XG5cbiAgICByZWFkb25seSB0b3AkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ3RvcCcpLCB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpXSkucGlwZShcbiAgICAgICAgbWFwKChbdG9wLCBzaXplXSkgPT4gdG9wID8/IHNpemUuaGVpZ2h0IC8gMilcbiAgICApO1xuXG4gICAgcmVhZG9ubHkgYm90dG9tJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0KCdib3R0b20nKSwgdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKV0pLnBpcGUoXG4gICAgICAgIG1hcCgoW2JvdHRvbSwgc2l6ZV0pID0+IGJvdHRvbSA/PyBzaXplLmhlaWdodCAvIC0yKVxuICAgICk7XG59XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3J0aG9ncmFwaGljLWNhbWVyYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL2NhbWVyYXMvc3JjL2xpYi9vcnRob2dyYXBoaWMtY2FtZXJhL29ydGhvZ3JhcGhpYy1jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFN0QsTUFBTSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQTBCdEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFVBQW9DO0lBeEJoRjs7UUFnRGEsVUFBSyxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakYsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ2pELENBQUM7UUFFTyxXQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNuRixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQ2xELENBQUM7UUFFTyxTQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQy9DLENBQUM7UUFFTyxZQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyRixHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDdEQsQ0FBQztLQUNMO0lBcENHLElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQWEsR0FBRyxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O21IQXRCUSxzQkFBc0I7dUdBQXRCLHNCQUFzQix1TUFDakIsaUJBQWlCLHVFQXRCckI7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUJULDREQUNTLElBQUksNkZBQUUsZ0JBQWdCLCtJQUFFLE9BQU87MkZBR2hDLHNCQUFzQjtrQkF4QmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQztvQkFDMUMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzhCQUVvQyxhQUFhO3NCQUE3QyxZQUFZO3VCQUFDLGlCQUFpQjtnQkFFbEIsSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLEdBQUc7c0JBQWYsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgTmd0UHVzaCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHcm91cCwgT3J0aG9ncmFwaGljQ2FtZXJhIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYSB9IGZyb20gJy4uL2NhbWVyYS9jYW1lcmEnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYUNvbnRlbnQgfSBmcm9tICcuLi9jYW1lcmEvY2FtZXJhLWNvbnRlbnQnO1xuXG5leHRlbmQoeyBPcnRob2dyYXBoaWNDYW1lcmEsIEdyb3VwIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtb3J0aG9ncmFwaGljLWNhbWVyYScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmFcbiAgICAgICAgICAgIG5ndENvbXBvdW5kXG4gICAgICAgICAgICBbcmVmXT1cImNhbWVyYVJlZlwiXG4gICAgICAgICAgICBbbGVmdF09XCJsZWZ0JCB8IG5ndFB1c2hcIlxuICAgICAgICAgICAgW3JpZ2h0XT1cInJpZ2h0JCB8IG5ndFB1c2hcIlxuICAgICAgICAgICAgW3RvcF09XCJ0b3AkIHwgbmd0UHVzaFwiXG4gICAgICAgICAgICBbYm90dG9tXT1cImJvdHRvbSQgfCBuZ3RQdXNoXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FtZXJhQ29udGVudCAmJiAhY2FtZXJhQ29udGVudC5uZ3RzQ2FtZXJhQ29udGVudFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FtZXJhQ29udGVudC50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L25ndC1vcnRob2dyYXBoaWMtY2FtZXJhPlxuICAgICAgICA8bmd0LWdyb3VwICNncm91cCAqbmdJZj1cImNhbWVyYUNvbnRlbnQgJiYgY2FtZXJhQ29udGVudC5uZ3RzQ2FtZXJhQ29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhbWVyYUNvbnRlbnQudGVtcGxhdGU7IGNvbnRleHQ6IHsgZmJvOiBmYm9SZWYubmF0aXZlRWxlbWVudCwgZ3JvdXAgfVwiIC8+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIE5ndFB1c2hdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c09ydGhvZ3JhcGhpY0NhbWVyYSBleHRlbmRzIE5ndHNDYW1lcmE8VEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhPiB7XG4gICAgQENvbnRlbnRDaGlsZChOZ3RzQ2FtZXJhQ29udGVudCkgY2FtZXJhQ29udGVudD86IE5ndHNDYW1lcmFDb250ZW50O1xuXG4gICAgQElucHV0KCkgc2V0IGxlZnQobGVmdDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVmdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmlnaHQocmlnaHQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJpZ2h0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCB0b3AodG9wOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0b3AgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJvdHRvbShib3R0b206IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGJvdHRvbSB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVmdDogMCwgcmlnaHQ6IDAsIHRvcDogMCwgYm90dG9tOiAwIH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IGxlZnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ2xlZnQnKSwgdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKV0pLnBpcGUoXG4gICAgICAgIG1hcCgoW2xlZnQsIHNpemVdKSA9PiBsZWZ0IHx8IHNpemUud2lkdGggLyAtMilcbiAgICApO1xuXG4gICAgcmVhZG9ubHkgcmlnaHQkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ3JpZ2h0JyksIHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyldKS5waXBlKFxuICAgICAgICBtYXAoKFtyaWdodCwgc2l6ZV0pID0+IHJpZ2h0IHx8IHNpemUud2lkdGggLyAyKVxuICAgICk7XG5cbiAgICByZWFkb25seSB0b3AkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ3RvcCcpLCB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpXSkucGlwZShcbiAgICAgICAgbWFwKChbdG9wLCBzaXplXSkgPT4gdG9wIHx8IHNpemUuaGVpZ2h0IC8gMilcbiAgICApO1xuXG4gICAgcmVhZG9ubHkgYm90dG9tJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0KCdib3R0b20nKSwgdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKV0pLnBpcGUoXG4gICAgICAgIG1hcCgoW2JvdHRvbSwgc2l6ZV0pID0+IGJvdHRvbSB8fCBzaXplLmhlaWdodCAvIC0yKVxuICAgICk7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
2
  import { Directive, inject, Input } from '@angular/core';
3
- import { addAfterEffect, addEffect, NgtRxStore, startWithUndefined } from 'angular-three';
3
+ import { addAfterEffect, addEffect, is, NgtRxStore, startWithUndefined } from 'angular-three';
4
4
  import { combineLatest } from 'rxjs';
5
5
  import * as Stats from 'stats.js';
6
6
  import * as i0 from "@angular/core";
@@ -16,27 +16,39 @@ export class NgtsStats extends NgtRxStore {
16
16
  this.set({ showPanel: showPanel === undefined ? this.get('showPanel') : showPanel });
17
17
  }
18
18
  set parent(parent) {
19
- this.set({ parent });
19
+ this.set({ parent: is.ref(parent) ? parent.nativeElement : parent });
20
20
  }
21
21
  set classes(classes) {
22
22
  this.set({ classes });
23
23
  }
24
+ set right(right) {
25
+ this.set({ right });
26
+ }
24
27
  initialize() {
25
28
  super.initialize();
26
- this.set({ showPanel: 0 });
29
+ this.set({ showPanel: 0, right: false });
27
30
  }
28
31
  ngOnInit() {
29
32
  this.effect(combineLatest([
30
33
  this.select('showPanel'),
34
+ this.select('right'),
31
35
  this.select('parent').pipe(startWithUndefined()),
32
36
  this.select('classes').pipe(startWithUndefined()),
33
- ]), ([showPanel, parent, classes]) => {
34
- const node = parent && parent.nativeElement ? parent.nativeElement : this.document.body;
37
+ ]), ([showPanel, right, parent, classes]) => {
38
+ const node = parent ?? this.document.body;
35
39
  this.stats.showPanel(showPanel);
36
40
  node.appendChild(this.stats.dom);
37
41
  if (classes) {
38
42
  this.stats.dom.classList.add(...classes.split(' ').filter((cls) => cls));
39
43
  }
44
+ if (right) {
45
+ this.stats.dom.style.right = '0px';
46
+ this.stats.dom.style.left = 'inherit';
47
+ }
48
+ else {
49
+ this.stats.dom.style.left = '0px';
50
+ this.stats.dom.style.right = 'inherit';
51
+ }
40
52
  const begin = addEffect(() => this.stats.begin());
41
53
  const end = addAfterEffect(() => this.stats.end());
42
54
  return () => {
@@ -48,7 +60,7 @@ export class NgtsStats extends NgtRxStore {
48
60
  }
49
61
  }
50
62
  NgtsStats.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsStats, deps: null, target: i0.ɵɵFactoryTarget.Directive });
51
- 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 });
63
+ 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", right: "right" }, usesInheritance: true, ngImport: i0 });
52
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsStats, decorators: [{
53
65
  type: Directive,
54
66
  args: [{
@@ -61,5 +73,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
61
73
  type: Input
62
74
  }], classes: [{
63
75
  type: Input
76
+ }], right: [{
77
+ type: Input
64
78
  }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvbGliL3N0YXRzL3N0YXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQWdDLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sS0FBSyxLQUFLLE1BQU0sVUFBVSxDQUFDOztBQU1sQyxNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQVU7SUFKekM7O1FBS3FCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsVUFBSyxHQUFJLEtBQXNCLENBQUMsU0FBUyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxJQUFLLEtBQXNCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDMUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7S0EyQ3JCO0lBekNHLElBQWEsU0FBUyxDQUFDLFNBQWlCO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBbUM7UUFDbkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FDUCxhQUFhLENBQUM7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDcEQsQ0FBQyxFQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUFJLE9BQU8sRUFBRTtnQkFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDcEY7WUFDRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkQsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsQ0FBQztnQkFDUixHQUFHLEVBQUUsQ0FBQztZQUNWLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQzs7c0dBOUNRLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQUpyQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBT2dCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFkZEFmdGVyRWZmZWN0LCBhZGRFZmZlY3QsIE5ndEFueVJlY29yZCwgTmd0SW5qZWN0ZWRSZWYsIE5ndFJ4U3RvcmUsIHN0YXJ0V2l0aFVuZGVmaW5lZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgU3RhdHMgZnJvbSAnc3RhdHMuanMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc3RhdHMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGF0cyBleHRlbmRzIE5ndFJ4U3RvcmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdHMgPSAoU3RhdHMgYXMgTmd0QW55UmVjb3JkKVsnZGVmYXVsdCddXG4gICAgICAgID8gbmV3IChTdGF0cyBhcyBOZ3RBbnlSZWNvcmQpWydkZWZhdWx0J10oKVxuICAgICAgICA6IG5ldyBTdGF0cygpO1xuXG4gICAgQElucHV0KCkgc2V0IHNob3dQYW5lbChzaG93UGFuZWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNob3dQYW5lbDogc2hvd1BhbmVsID09PSB1bmRlZmluZWQgPyB0aGlzLmdldCgnc2hvd1BhbmVsJykgOiBzaG93UGFuZWwgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBhcmVudChwYXJlbnQ6IE5ndEluamVjdGVkUmVmPEhUTUxFbGVtZW50Pikge1xuICAgICAgICB0aGlzLnNldCh7IHBhcmVudCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY2xhc3NlcyhjbGFzc2VzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjbGFzc2VzIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoeyBzaG93UGFuZWw6IDAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0KFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3Nob3dQYW5lbCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdwYXJlbnQnKS5waXBlKHN0YXJ0V2l0aFVuZGVmaW5lZCgpKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnY2xhc3NlcycpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAoW3Nob3dQYW5lbCwgcGFyZW50LCBjbGFzc2VzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBwYXJlbnQgJiYgcGFyZW50Lm5hdGl2ZUVsZW1lbnQgPyBwYXJlbnQubmF0aXZlRWxlbWVudCA6IHRoaXMuZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRzLnNob3dQYW5lbChzaG93UGFuZWwpO1xuICAgICAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGhpcy5zdGF0cy5kb20pO1xuICAgICAgICAgICAgICAgIGlmIChjbGFzc2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHMuZG9tLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5zcGxpdCgnICcpLmZpbHRlcigoY2xzOiBzdHJpbmcpID0+IGNscykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBiZWdpbiA9IGFkZEVmZmVjdCgoKSA9PiB0aGlzLnN0YXRzLmJlZ2luKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IGFkZEFmdGVyRWZmZWN0KCgpID0+IHRoaXMuc3RhdHMuZW5kKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQodGhpcy5zdGF0cy5kb20pO1xuICAgICAgICAgICAgICAgICAgICBiZWdpbigpO1xuICAgICAgICAgICAgICAgICAgICBlbmQoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvbGliL3N0YXRzL3N0YXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFnQixVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEtBQUssS0FBSyxNQUFNLFVBQVUsQ0FBQzs7QUFNbEMsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUFVO0lBSnpDOztRQUtxQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFVBQUssR0FBVyxLQUFzQixDQUFDLFNBQVMsQ0FBQztZQUM5RCxDQUFDLENBQUMsSUFBSyxLQUFzQixDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO0tBdURyQjtJQXJERyxJQUFhLFNBQVMsQ0FBQyxTQUFpQjtRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQTZDO1FBQzdELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFN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QUUsSUFBSTtpQkFDbkI7OEJBT2dCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWRkQWZ0ZXJFZmZlY3QsIGFkZEVmZmVjdCwgaXMsIE5ndEFueVJlY29yZCwgTmd0UnhTdG9yZSwgc3RhcnRXaXRoVW5kZWZpbmVkIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBTdGF0cyBmcm9tICdzdGF0cy5qcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1zdGF0cycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1N0YXRzIGV4dGVuZHMgTmd0UnhTdG9yZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0czogU3RhdHMgPSAoU3RhdHMgYXMgTmd0QW55UmVjb3JkKVsnZGVmYXVsdCddXG4gICAgICAgID8gbmV3IChTdGF0cyBhcyBOZ3RBbnlSZWNvcmQpWydkZWZhdWx0J10oKVxuICAgICAgICA6IG5ldyBTdGF0cygpO1xuXG4gICAgQElucHV0KCkgc2V0IHNob3dQYW5lbChzaG93UGFuZWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNob3dQYW5lbDogc2hvd1BhbmVsID09PSB1bmRlZmluZWQgPyB0aGlzLmdldCgnc2hvd1BhbmVsJykgOiBzaG93UGFuZWwgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBhcmVudChwYXJlbnQ6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwYXJlbnQ6IGlzLnJlZihwYXJlbnQpID8gcGFyZW50Lm5hdGl2ZUVsZW1lbnQgOiBwYXJlbnQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNsYXNzZXMoY2xhc3Nlczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2xhc3NlcyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmlnaHQocmlnaHQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyByaWdodCB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgc2hvd1BhbmVsOiAwLCByaWdodDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0KFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3Nob3dQYW5lbCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdyaWdodCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdwYXJlbnQnKS5waXBlKHN0YXJ0V2l0aFVuZGVmaW5lZCgpKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnY2xhc3NlcycpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAoW3Nob3dQYW5lbCwgcmlnaHQsIHBhcmVudCwgY2xhc3Nlc10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gcGFyZW50ID8/IHRoaXMuZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRzLnNob3dQYW5lbChzaG93UGFuZWwpO1xuICAgICAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGhpcy5zdGF0cy5kb20pO1xuICAgICAgICAgICAgICAgIGlmIChjbGFzc2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHMuZG9tLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5zcGxpdCgnICcpLmZpbHRlcigoY2xzOiBzdHJpbmcpID0+IGNscykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0cy5kb20uc3R5bGUucmlnaHQgPSAnMHB4JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0cy5kb20uc3R5bGUubGVmdCA9ICdpbmhlcml0JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRzLmRvbS5zdHlsZS5sZWZ0ID0gJzBweCc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHMuZG9tLnN0eWxlLnJpZ2h0ID0gJ2luaGVyaXQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBiZWdpbiA9IGFkZEVmZmVjdCgoKSA9PiB0aGlzLnN0YXRzLmJlZ2luKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IGFkZEFmdGVyRWZmZWN0KCgpID0+IHRoaXMuc3RhdHMuZW5kKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQodGhpcy5zdGF0cy5kb20pO1xuICAgICAgICAgICAgICAgICAgICBiZWdpbigpO1xuICAgICAgICAgICAgICAgICAgICBlbmQoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +1,9 @@
1
1
  export { NgtsAccumulativeShadows } from './lib/accumulative-shadows/accumulative-shadows';
2
2
  export { NgtsRandomizedLights } from './lib/accumulative-shadows/randomized-lights';
3
3
  export * from './lib/bounds/bounds';
4
+ export * from './lib/camera-shake/camera-shake';
4
5
  export * from './lib/center/center';
6
+ export * from './lib/cloud/cloud';
5
7
  export * from './lib/contact-shadows/contact-shadows';
6
8
  export * from './lib/environment/assets';
7
9
  export * from './lib/environment/environment';
@@ -10,4 +12,4 @@ export * from './lib/sky/sky';
10
12
  export * from './lib/sparkles/sparkles';
11
13
  export * from './lib/stage/stage';
12
14
  export * from './lib/stars/stars';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzIH0gZnJvbSAnLi9saWIvYWNjdW11bGF0aXZlLXNoYWRvd3MvYWNjdW11bGF0aXZlLXNoYWRvd3MnO1xuZXhwb3J0IHsgTmd0c1JhbmRvbWl6ZWRMaWdodHMgfSBmcm9tICcuL2xpYi9hY2N1bXVsYXRpdmUtc2hhZG93cy9yYW5kb21pemVkLWxpZ2h0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ib3VuZHMvYm91bmRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NlbnRlci9jZW50ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udGFjdC1zaGFkb3dzL2NvbnRhY3Qtc2hhZG93cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnZpcm9ubWVudC9hc3NldHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW52aXJvbm1lbnQvZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmxvYXQvZmxvYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2t5L3NreSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcGFya2xlcy9zcGFya2xlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGFnZS9zdGFnZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGFycy9zdGFycyc7XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBOZ3RzQWNjdW11bGF0aXZlU2hhZG93cyB9IGZyb20gJy4vbGliL2FjY3VtdWxhdGl2ZS1zaGFkb3dzL2FjY3VtdWxhdGl2ZS1zaGFkb3dzJztcbmV4cG9ydCB7IE5ndHNSYW5kb21pemVkTGlnaHRzIH0gZnJvbSAnLi9saWIvYWNjdW11bGF0aXZlLXNoYWRvd3MvcmFuZG9taXplZC1saWdodHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYm91bmRzL2JvdW5kcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYW1lcmEtc2hha2UvY2FtZXJhLXNoYWtlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NlbnRlci9jZW50ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xvdWQvY2xvdWQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udGFjdC1zaGFkb3dzL2NvbnRhY3Qtc2hhZG93cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnZpcm9ubWVudC9hc3NldHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW52aXJvbm1lbnQvZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmxvYXQvZmxvYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2t5L3NreSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcGFya2xlcy9zcGFya2xlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGFnZS9zdGFnZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGFycy9zdGFycyc7XG4iXX0=
@@ -0,0 +1,121 @@
1
+ import { Directive, inject, Input } from '@angular/core';
2
+ import { injectBeforeRender, NgtRxStore, NgtStore } from 'angular-three';
3
+ import { combineLatest } from 'rxjs';
4
+ import { SimplexNoise } from 'three-stdlib';
5
+ import * as i0 from "@angular/core";
6
+ export class NgtsCameraShake extends NgtRxStore {
7
+ set intensity(intensity) {
8
+ this.set({ intensity });
9
+ }
10
+ set decay(decay) {
11
+ this.set({ decay });
12
+ }
13
+ set decayRate(decayRate) {
14
+ this.set({ decayRate });
15
+ }
16
+ set maxYaw(maxYaw) {
17
+ this.set({ maxYaw });
18
+ }
19
+ set maxPitch(maxPitch) {
20
+ this.set({ maxPitch });
21
+ }
22
+ set maxRoll(maxRoll) {
23
+ this.set({ maxRoll });
24
+ }
25
+ set yawFrequency(yawFrequency) {
26
+ this.set({ yawFrequency });
27
+ }
28
+ set pitchFrequency(pitchFrequency) {
29
+ this.set({ pitchFrequency });
30
+ }
31
+ set rollFrequency(rollFrequency) {
32
+ this.set({ rollFrequency });
33
+ }
34
+ initialize() {
35
+ super.initialize();
36
+ this.set({
37
+ intensity: 1,
38
+ decayRate: 0.65,
39
+ maxYaw: 0.1,
40
+ maxPitch: 0.1,
41
+ maxRoll: 0.1,
42
+ yawFrequency: 0.1,
43
+ pitchFrequency: 0.1,
44
+ rollFrequency: 0.1,
45
+ });
46
+ }
47
+ constructor() {
48
+ super();
49
+ this.store = inject(NgtStore);
50
+ this.initialRotation = this.store.get('camera').rotation.clone();
51
+ this.yawNoise = new SimplexNoise();
52
+ this.pitchNoise = new SimplexNoise();
53
+ this.rollNoise = new SimplexNoise();
54
+ injectBeforeRender(({ clock, delta, camera }) => {
55
+ const { intensity, maxYaw, maxPitch, maxRoll, yawFrequency, pitchFrequency, rollFrequency, decay, decayRate, } = this.get();
56
+ const shake = Math.pow(intensity, 2);
57
+ const yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);
58
+ const pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);
59
+ const roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);
60
+ camera.rotation.set(this.initialRotation.x + pitch, this.initialRotation.y + yaw, this.initialRotation.z + roll);
61
+ if (decay && intensity > 0) {
62
+ this.set({ intensity: intensity - decayRate * delta });
63
+ this.constraintIntensity();
64
+ }
65
+ });
66
+ }
67
+ ngOnInit() {
68
+ this.setChangeEvent();
69
+ }
70
+ setChangeEvent() {
71
+ this.effect(combineLatest([this.store.select('camera'), this.store.select('controls')]), ([camera, controls]) => {
72
+ if (controls) {
73
+ const callback = () => void (this.initialRotation = camera.rotation.clone());
74
+ controls.addEventListener('change', callback);
75
+ callback();
76
+ return () => void controls.removeEventListener('change', callback);
77
+ }
78
+ });
79
+ }
80
+ getIntensity() {
81
+ return this.get('intensity');
82
+ }
83
+ setIntensity(intensity) {
84
+ this.set({ intensity });
85
+ this.constraintIntensity();
86
+ }
87
+ constraintIntensity() {
88
+ const intensity = this.get('intensity');
89
+ if (intensity < 0 || intensity > 1) {
90
+ this.set({ intensity: intensity < 0 ? 0 : 1 });
91
+ }
92
+ }
93
+ }
94
+ NgtsCameraShake.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCameraShake, deps: [], target: i0.ɵɵFactoryTarget.Directive });
95
+ NgtsCameraShake.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsCameraShake, isStandalone: true, selector: "ngts-camera-shake", inputs: { intensity: "intensity", decay: "decay", decayRate: "decayRate", maxYaw: "maxYaw", maxPitch: "maxPitch", maxRoll: "maxRoll", yawFrequency: "yawFrequency", pitchFrequency: "pitchFrequency", rollFrequency: "rollFrequency" }, usesInheritance: true, ngImport: i0 });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsCameraShake, decorators: [{
97
+ type: Directive,
98
+ args: [{
99
+ selector: 'ngts-camera-shake',
100
+ standalone: true,
101
+ }]
102
+ }], ctorParameters: function () { return []; }, propDecorators: { intensity: [{
103
+ type: Input
104
+ }], decay: [{
105
+ type: Input
106
+ }], decayRate: [{
107
+ type: Input
108
+ }], maxYaw: [{
109
+ type: Input
110
+ }], maxPitch: [{
111
+ type: Input
112
+ }], maxRoll: [{
113
+ type: Input
114
+ }], yawFrequency: [{
115
+ type: Input
116
+ }], pitchFrequency: [{
117
+ type: Input
118
+ }], rollFrequency: [{
119
+ type: Input
120
+ }] } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLXNoYWtlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL2NhbWVyYS1zaGFrZS9jYW1lcmEtc2hha2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFNNUMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsVUFBVTtJQVMzQyxJQUFhLFNBQVMsQ0FBQyxTQUFpQjtRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxTQUFTLENBQUMsU0FBaUI7UUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsUUFBUSxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFhLE9BQU8sQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxH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U0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0wsQ0FBQzs7NEdBNUhRLGVBQWU7Z0dBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjswRUFVZ0IsU0FBUztzQkFBckIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxRQUFRO3NCQUFwQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFJTyxjQUFjO3NCQUExQixLQUFLO2dCQUlPLGFBQWE7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyLCBOZ3RSeFN0b3JlLCBOZ3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2ltcGxleE5vaXNlIH0gZnJvbSAndGhyZWUtc3RkbGliJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWNhbWVyYS1zaGFrZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0NhbWVyYVNoYWtlIGV4dGVuZHMgTmd0UnhTdG9yZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG5cbiAgICBwcml2YXRlIGluaXRpYWxSb3RhdGlvbiA9IHRoaXMuc3RvcmUuZ2V0KCdjYW1lcmEnKS5yb3RhdGlvbi5jbG9uZSgpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB5YXdOb2lzZSA9IG5ldyBTaW1wbGV4Tm9pc2UoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBpdGNoTm9pc2UgPSBuZXcgU2ltcGxleE5vaXNlKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb2xsTm9pc2UgPSBuZXcgU2ltcGxleE5vaXNlKCk7XG5cbiAgICBASW5wdXQoKSBzZXQgaW50ZW5zaXR5KGludGVuc2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW50ZW5zaXR5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkZWNheShkZWNheTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGRlY2F5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkZWNheVJhdGUoZGVjYXlSYXRlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkZWNheVJhdGUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG1heFlhdyhtYXhZYXc6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1heFlhdyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWF4UGl0Y2gobWF4UGl0Y2g6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1heFBpdGNoIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtYXhSb2xsKG1heFJvbGw6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1heFJvbGwgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHlhd0ZyZXF1ZW5jeSh5YXdGcmVxdWVuY3k6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHlhd0ZyZXF1ZW5jeSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcGl0Y2hGcmVxdWVuY3kocGl0Y2hGcmVxdWVuY3k6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHBpdGNoRnJlcXVlbmN5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByb2xsRnJlcXVlbmN5KHJvbGxGcmVxdWVuY3k6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJvbGxGcmVxdWVuY3kgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBpbnRlbnNpdHk6IDEsXG4gICAgICAgICAgICBkZWNheVJhdGU6IDAuNjUsXG4gICAgICAgICAgICBtYXhZYXc6IDAuMSxcbiAgICAgICAgICAgIG1heFBpdGNoOiAwLjEsXG4gICAgICAgICAgICBtYXhSb2xsOiAwLjEsXG4gICAgICAgICAgICB5YXdGcmVxdWVuY3k6IDAuMSxcbiAgICAgICAgICAgIHBpdGNoRnJlcXVlbmN5OiAwLjEsXG4gICAgICAgICAgICByb2xsRnJlcXVlbmN5OiAwLjEsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBpbmplY3RCZWZvcmVSZW5kZXIoKHsgY2xvY2ssIGRlbHRhLCBjYW1lcmEgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGludGVuc2l0eSxcbiAgICAgICAgICAgICAgICBtYXhZYXcsXG4gICAgICAgICAgICAgICAgbWF4UGl0Y2gsXG4gICAgICAgICAgICAgICAgbWF4Um9sbCxcbiAgICAgICAgICAgICAgICB5YXdGcmVxdWVuY3ksXG4gICAgICAgICAgICAgICAgcGl0Y2hGcmVxdWVuY3ksXG4gICAgICAgICAgICAgICAgcm9sbEZyZXF1ZW5jeSxcbiAgICAgICAgICAgICAgICBkZWNheSxcbiAgICAgICAgICAgICAgICBkZWNheVJhdGUsXG4gICAgICAgICAgICB9ID0gdGhpcy5nZXQoKTtcblxuICAgICAgICAgICAgY29uc3Qgc2hha2UgPSBNYXRoLnBvdyhpbnRlbnNpdHksIDIpO1xuICAgICAgICAgICAgY29uc3QgeWF3ID0gbWF4WWF3ICogc2hha2UgKiB0aGlzLnlhd05vaXNlLm5vaXNlKGNsb2NrLmVsYXBzZWRUaW1lICogeWF3RnJlcXVlbmN5LCAxKTtcbiAgICAgICAgICAgIGNvbnN0IHBpdGNoID0gbWF4UGl0Y2ggKiBzaGFrZSAqIHRoaXMucGl0Y2hOb2lzZS5ub2lzZShjbG9jay5lbGFwc2VkVGltZSAqIHBpdGNoRnJlcXVlbmN5LCAxKTtcbiAgICAgICAgICAgIGNvbnN0IHJvbGwgPSBtYXhSb2xsICogc2hha2UgKiB0aGlzLnJvbGxOb2lzZS5ub2lzZShjbG9jay5lbGFwc2VkVGltZSAqIHJvbGxGcmVxdWVuY3ksIDEpO1xuXG4gICAgICAgICAgICBjYW1lcmEucm90YXRpb24uc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbFJvdGF0aW9uLnggKyBwaXRjaCxcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxSb3RhdGlvbi55ICsgeWF3LFxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbFJvdGF0aW9uLnogKyByb2xsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoZGVjYXkgJiYgaW50ZW5zaXR5ID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0KHsgaW50ZW5zaXR5OiBpbnRlbnNpdHkgLSBkZWNheVJhdGUgKiBkZWx0YSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cmFpbnRJbnRlbnNpdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENoYW5nZUV2ZW50KCkge1xuICAgICAgICB0aGlzLmVmZmVjdChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKSwgdGhpcy5zdG9yZS5zZWxlY3QoJ2NvbnRyb2xzJyldKSxcbiAgICAgICAgICAgIChbY2FtZXJhLCBjb250cm9sc10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiB2b2lkICh0aGlzLmluaXRpYWxSb3RhdGlvbiA9IGNhbWVyYS5yb3RhdGlvbi5jbG9uZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gdm9pZCBjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEludGVuc2l0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdpbnRlbnNpdHknKTtcbiAgICB9XG5cbiAgICBzZXRJbnRlbnNpdHkoaW50ZW5zaXR5OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBpbnRlbnNpdHkgfSk7XG4gICAgICAgIHRoaXMuY29uc3RyYWludEludGVuc2l0eSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uc3RyYWludEludGVuc2l0eSgpIHtcbiAgICAgICAgY29uc3QgaW50ZW5zaXR5ID0gdGhpcy5nZXQoJ2ludGVuc2l0eScpO1xuICAgICAgICBpZiAoaW50ZW5zaXR5IDwgMCB8fCBpbnRlbnNpdHkgPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnNldCh7IGludGVuc2l0eTogaW50ZW5zaXR5IDwgMCA/IDAgOiAxIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19