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
@@ -0,0 +1,86 @@
1
+ import { Directive, inject, Input } from '@angular/core';
2
+ import { NgtRxStore, NgtStore } from 'angular-three';
3
+ import { Texture, TextureEncoding } from 'three';
4
+ import * as i0 from "@angular/core";
5
+ export class NgtsEnvironmentInputs extends NgtRxStore {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.store = inject(NgtStore);
9
+ }
10
+ set frames(frames) {
11
+ this.set({ frames });
12
+ }
13
+ set near(near) {
14
+ this.set({ near });
15
+ }
16
+ set far(far) {
17
+ this.set({ far });
18
+ }
19
+ set resolution(resolution) {
20
+ this.set({ resolution });
21
+ }
22
+ set background(background) {
23
+ this.set({ background });
24
+ }
25
+ set blur(blur) {
26
+ this.set({ blur });
27
+ }
28
+ set map(map) {
29
+ this.set({ map });
30
+ }
31
+ set files(files) {
32
+ this.set({ files });
33
+ }
34
+ set path(path) {
35
+ this.set({ path });
36
+ }
37
+ set preset(preset) {
38
+ this.set({ preset });
39
+ }
40
+ set scene(scene) {
41
+ this.set({ scene });
42
+ }
43
+ set extensions(extensions) {
44
+ this.set({ extensions });
45
+ }
46
+ set ground(ground) {
47
+ this.set({ ground });
48
+ }
49
+ set encoding(encoding) {
50
+ this.set({ encoding });
51
+ }
52
+ }
53
+ NgtsEnvironmentInputs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironmentInputs, deps: null, target: i0.ɵɵFactoryTarget.Directive });
54
+ NgtsEnvironmentInputs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsEnvironmentInputs, inputs: { frames: "frames", near: "near", far: "far", resolution: "resolution", background: "background", blur: "blur", map: "map", files: "files", path: "path", preset: "preset", scene: "scene", extensions: "extensions", ground: "ground", encoding: "encoding" }, usesInheritance: true, ngImport: i0 });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironmentInputs, decorators: [{
56
+ type: Directive
57
+ }], propDecorators: { frames: [{
58
+ type: Input
59
+ }], near: [{
60
+ type: Input
61
+ }], far: [{
62
+ type: Input
63
+ }], resolution: [{
64
+ type: Input
65
+ }], background: [{
66
+ type: Input
67
+ }], blur: [{
68
+ type: Input
69
+ }], map: [{
70
+ type: Input
71
+ }], files: [{
72
+ type: Input
73
+ }], path: [{
74
+ type: Input
75
+ }], preset: [{
76
+ type: Input
77
+ }], scene: [{
78
+ type: Input
79
+ }], extensions: [{
80
+ type: Input
81
+ }], ground: [{
82
+ type: Input
83
+ }], encoding: [{
84
+ type: Input
85
+ }] } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtaW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL2Vudmlyb25tZW50L2Vudmlyb25tZW50LWlucHV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFpQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUloRSxNQUFNLE9BQWdCLHFCQUFzQixTQUFRLFVBQVU7SUFEOUQ7O1FBRXVCLFVBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FpRS9DO0lBL0RHLElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsR0FBRyxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsVUFBVSxDQUFDLFVBQWtCO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxVQUE0QjtRQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBYSxHQUFHLENBQUMsR0FBWTtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBd0I7UUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQWtDO1FBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUFnQztRQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxVQUFVLENBQUMsVUFBb0M7UUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQWEsTUFBTSxDQUNmLE1BTU87UUFFUCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxRQUFRLENBQUMsUUFBeUI7UUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7a0hBakVpQixxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUQxQyxTQUFTOzhCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxHQUFHO3NCQUFmLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLElBQUk7c0JBQWhCLEtBQUs7Z0JBSU8sR0FBRztzQkFBZixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQVlPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBMb2FkZXIsIFNjZW5lLCBUZXh0dXJlLCBUZXh0dXJlRW5jb2RpbmcgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSB9IGZyb20gJy4vYXNzZXRzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmd0c0Vudmlyb25tZW50SW5wdXRzIGV4dGVuZHMgTmd0UnhTdG9yZSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIEBJbnB1dCgpIHNldCBmcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmFtZXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG5lYXIobmVhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbmVhciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmFyKGZhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmFyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJlc29sdXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJhY2tncm91bmQoYmFja2dyb3VuZDogYm9vbGVhbiB8ICdvbmx5Jykge1xuICAgICAgICB0aGlzLnNldCh7IGJhY2tncm91bmQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJsdXIoYmx1cjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmx1ciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWFwKG1hcDogVGV4dHVyZSkge1xuICAgICAgICB0aGlzLnNldCh7IG1hcCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmlsZXMoZmlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmlsZXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcGF0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcHJlc2V0KHByZXNldDogTmd0c0Vudmlyb25tZW50UHJlc2V0c1R5cGUpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwcmVzZXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNjZW5lKHNjZW5lOiBTY2VuZSB8IEVsZW1lbnRSZWY8U2NlbmU+KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2NlbmUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGV4dGVuc2lvbnMoZXh0ZW5zaW9uczogKGxvYWRlcjogTG9hZGVyKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZXh0ZW5zaW9ucyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZ3JvdW5kKFxuICAgICAgICBncm91bmQ6XG4gICAgICAgICAgICB8IGJvb2xlYW5cbiAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgcmFkaXVzPzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgc2NhbGU/OiBudW1iZXI7XG4gICAgICAgICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgdGhpcy5zZXQoeyBncm91bmQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGVuY29kaW5nKGVuY29kaW5nOiBUZXh0dXJlRW5jb2RpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBlbmNvZGluZyB9KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { Directive } from '@angular/core';
2
+ import { startWithUndefined } from 'angular-three';
3
+ import { combineLatest } from 'rxjs';
4
+ import { NgtsEnvironmentInputs } from './environment-inputs';
5
+ import { setEnvProps } from './utils';
6
+ import * as i0 from "@angular/core";
7
+ export class NgtsEnvironmentMap extends NgtsEnvironmentInputs {
8
+ initialize() {
9
+ super.initialize();
10
+ this.set({ background: false });
11
+ }
12
+ ngOnInit() {
13
+ this.setEnvProps();
14
+ }
15
+ setEnvProps() {
16
+ this.effect(combineLatest([
17
+ this.store.select('scene'),
18
+ this.select('map'),
19
+ this.select('scene').pipe(startWithUndefined()),
20
+ this.select('background'),
21
+ this.select('blur').pipe(startWithUndefined()),
22
+ ]), ([defaultScene, map, scene, background, blur]) => {
23
+ if (map) {
24
+ return setEnvProps(background, scene, defaultScene, map, blur);
25
+ }
26
+ });
27
+ }
28
+ }
29
+ NgtsEnvironmentMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironmentMap, deps: null, target: i0.ɵɵFactoryTarget.Directive });
30
+ NgtsEnvironmentMap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsEnvironmentMap, isStandalone: true, selector: "ngts-environment-map", usesInheritance: true, ngImport: i0 });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironmentMap, decorators: [{
32
+ type: Directive,
33
+ args: [{
34
+ selector: 'ngts-environment-map',
35
+ standalone: true,
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL2Vudmlyb25tZW50L2Vudmlyb25tZW50LW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBTXRDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxxQkFBcUI7SUFDaEQsVUFBVTtRQUNmLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLENBQUMsTUFBTSxDQUNQLGFBQWEsQ0FBQztZQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDakQsQ0FBQyxFQUNGLENBQUMsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUM3QyxJQUFJLEdBQUcsRUFBRTtnQkFDTCxPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDbEU7UUFDTCxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7OytHQXpCUSxrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzdGFydFdpdGhVbmRlZmluZWQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudElucHV0cyB9IGZyb20gJy4vZW52aXJvbm1lbnQtaW5wdXRzJztcbmltcG9ydCB7IHNldEVudlByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1lbnZpcm9ubWVudC1tYXAnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNFbnZpcm9ubWVudE1hcCBleHRlbmRzIE5ndHNFbnZpcm9ubWVudElucHV0cyBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7IGJhY2tncm91bmQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldEVudlByb3BzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRFbnZQcm9wcygpIHtcbiAgICAgICAgdGhpcy5lZmZlY3QoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnc2NlbmUnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnbWFwJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3NjZW5lJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2JhY2tncm91bmQnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnYmx1cicpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAoW2RlZmF1bHRTY2VuZSwgbWFwLCBzY2VuZSwgYmFja2dyb3VuZCwgYmx1cl0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWFwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRFbnZQcm9wcyhiYWNrZ3JvdW5kLCBzY2VuZSwgZGVmYXVsdFNjZW5lLCBtYXAsIGJsdXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,110 @@
1
+ import { NgIf } from '@angular/common';
2
+ import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
+ import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtPortal, NgtPortalContent, prepare, } from 'angular-three';
4
+ import { combineLatest } from 'rxjs';
5
+ import * as THREE from 'three';
6
+ import { CubeCamera, HalfFloatType } from 'three';
7
+ import { NgtsEnvironmentCube } from './environment-cube';
8
+ import { NgtsEnvironmentInputs } from './environment-inputs';
9
+ import { NgtsEnvironmentMap } from './environment-map';
10
+ import { setEnvProps } from './utils';
11
+ import * as i0 from "@angular/core";
12
+ extend({ CubeCamera });
13
+ export class NgtsEnvironmentPortal extends NgtsEnvironmentInputs {
14
+ initialize() {
15
+ super.initialize();
16
+ this.set({ near: 1, far: 1000, resolution: 256, frames: 1, background: false, preset: undefined });
17
+ this.connect('fbo', this.select(['resolution'], ({ resolution }) => {
18
+ const fbo = new THREE.WebGLCubeRenderTarget(resolution);
19
+ fbo.texture.type = HalfFloatType;
20
+ return fbo;
21
+ }));
22
+ this.connect('cameraArgs', this.select(['fbo', 'near', 'far'], ({ near, far, fbo }) => [near, far, fbo]));
23
+ }
24
+ constructor() {
25
+ super();
26
+ this.virtualSceneRef = injectNgtRef(prepare(new THREE.Scene()));
27
+ this.cubeCameraRef = injectNgtRef();
28
+ injectBeforeRender(this.onBeforeRender.bind(this, 1));
29
+ }
30
+ ngOnInit() {
31
+ this.setEnvProps();
32
+ }
33
+ setEnvProps() {
34
+ this.effect(combineLatest([
35
+ this.store.select('gl'),
36
+ this.store.select('scene'),
37
+ this.select('fbo'),
38
+ this.select('scene'),
39
+ this.select('background'),
40
+ this.select('frames'),
41
+ this.select('blur'),
42
+ this.virtualSceneRef.$,
43
+ this.cubeCameraRef.$,
44
+ ]), ([gl, defaultScene, fbo, scene, background, frames, blur, virtualScene, camera]) => {
45
+ if (frames === 1)
46
+ camera.update(gl, virtualScene);
47
+ return setEnvProps(background, scene, defaultScene, fbo.texture, blur);
48
+ });
49
+ }
50
+ onBeforeRender(count, { gl }) {
51
+ const { frames } = this.get();
52
+ if (frames === Infinity || count < frames) {
53
+ if (this.cubeCameraRef.nativeElement) {
54
+ this.cubeCameraRef.nativeElement.update(gl, this.virtualSceneRef.nativeElement);
55
+ count++;
56
+ }
57
+ }
58
+ }
59
+ }
60
+ NgtsEnvironmentPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironmentPortal, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
+ NgtsEnvironmentPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtsEnvironmentPortal, isStandalone: true, selector: "ngts-environment-portal", usesInheritance: true, ngImport: i0, template: `
62
+ <ngt-portal [container]="virtualSceneRef">
63
+ <ng-template ngtPortalContent>
64
+ <ng-content />
65
+ <ngt-cube-camera *args="get('cameraArgs')" [ref]="cubeCameraRef" />
66
+ <ng-container *ngIf="get('files') || get('preset'); else environmentMap">
67
+ <ngts-environment-cube
68
+ [background]="true"
69
+ [files]="get('files')"
70
+ [preset]="get('preset')"
71
+ [path]="get('path')"
72
+ [extensions]="get('extensions')"
73
+ />
74
+ </ng-container>
75
+ <ng-template #environmentMap>
76
+ <ngts-environment-map [background]="true" [map]="get('map')" [extensions]="get('extensions')" />
77
+ </ng-template>
78
+ </ng-template>
79
+ </ngt-portal>
80
+ `, isInline: true, dependencies: [{ kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"], outputs: ["beforeRender"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[ngtPortalContent]" }, { kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map" }, { kind: "directive", type: NgtsEnvironmentCube, selector: "ngts-environment-cube" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironmentPortal, decorators: [{
82
+ type: Component,
83
+ args: [{
84
+ selector: 'ngts-environment-portal',
85
+ standalone: true,
86
+ template: `
87
+ <ngt-portal [container]="virtualSceneRef">
88
+ <ng-template ngtPortalContent>
89
+ <ng-content />
90
+ <ngt-cube-camera *args="get('cameraArgs')" [ref]="cubeCameraRef" />
91
+ <ng-container *ngIf="get('files') || get('preset'); else environmentMap">
92
+ <ngts-environment-cube
93
+ [background]="true"
94
+ [files]="get('files')"
95
+ [preset]="get('preset')"
96
+ [path]="get('path')"
97
+ [extensions]="get('extensions')"
98
+ />
99
+ </ng-container>
100
+ <ng-template #environmentMap>
101
+ <ngts-environment-map [background]="true" [map]="get('map')" [extensions]="get('extensions')" />
102
+ </ng-template>
103
+ </ng-template>
104
+ </ngt-portal>
105
+ `,
106
+ imports: [NgtPortal, NgtPortalContent, NgtsEnvironmentMap, NgtsEnvironmentCube, NgIf, NgtArgs],
107
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
108
+ }]
109
+ }], ctorParameters: function () { return []; } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtcG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL2Vudmlyb25tZW50L2Vudmlyb25tZW50LXBvcnRhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQ0gsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osT0FBTyxFQUNQLFNBQVMsRUFDVCxnQkFBZ0IsRUFFaEIsT0FBTyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFdEMsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQTRCdkIsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHFCQUFxQjtJQUluRCxVQUFVO1FBQ2YsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdB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Q0FBQztnQkFDaEYsS0FBSyxFQUFFLENBQUM7YUFDWDtTQUNKO0lBQ0wsQ0FBQzs7a0hBMURRLHFCQUFxQjtzR0FBckIscUJBQXFCLDBHQXZCcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FtQlQsNERBQ1MsU0FBUyxzSkFBRSxnQkFBZ0IsMEVBQUUsa0JBQWtCLGlFQUFFLG1CQUFtQixrRUFBRSxJQUFJLDZGQUFFLE9BQU87MkZBR3BGLHFCQUFxQjtrQkExQmpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW1CVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztvQkFDOUYsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBleHRlbmQsXG4gICAgaW5qZWN0QmVmb3JlUmVuZGVyLFxuICAgIGluamVjdE5ndFJlZixcbiAgICBOZ3RBcmdzLFxuICAgIE5ndFBvcnRhbCxcbiAgICBOZ3RQb3J0YWxDb250ZW50LFxuICAgIE5ndFJlbmRlclN0YXRlLFxuICAgIHByZXBhcmUsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgQ3ViZUNhbWVyYSwgSGFsZkZsb2F0VHlwZSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudEN1YmUgfSBmcm9tICcuL2Vudmlyb25tZW50LWN1YmUnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50SW5wdXRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC1pbnB1dHMnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50TWFwIH0gZnJvbSAnLi9lbnZpcm9ubWVudC1tYXAnO1xuaW1wb3J0IHsgc2V0RW52UHJvcHMgfSBmcm9tICcuL3V0aWxzJztcblxuZXh0ZW5kKHsgQ3ViZUNhbWVyYSB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWVudmlyb25tZW50LXBvcnRhbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LXBvcnRhbCBbY29udGFpbmVyXT1cInZpcnR1YWxTY2VuZVJlZlwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5ndFBvcnRhbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWN1YmUtY2FtZXJhICphcmdzPVwiZ2V0KCdjYW1lcmFBcmdzJylcIiBbcmVmXT1cImN1YmVDYW1lcmFSZWZcIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXQoJ2ZpbGVzJykgfHwgZ2V0KCdwcmVzZXQnKTsgZWxzZSBlbnZpcm9ubWVudE1hcFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmd0cy1lbnZpcm9ubWVudC1jdWJlXG4gICAgICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxlc109XCJnZXQoJ2ZpbGVzJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ByZXNldF09XCJnZXQoJ3ByZXNldCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXRoXT1cImdldCgncGF0aCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtleHRlbnNpb25zXT1cImdldCgnZXh0ZW5zaW9ucycpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vudmlyb25tZW50TWFwPlxuICAgICAgICAgICAgICAgICAgICA8bmd0cy1lbnZpcm9ubWVudC1tYXAgW2JhY2tncm91bmRdPVwidHJ1ZVwiIFttYXBdPVwiZ2V0KCdtYXAnKVwiIFtleHRlbnNpb25zXT1cImdldCgnZXh0ZW5zaW9ucycpXCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZ3QtcG9ydGFsPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05ndFBvcnRhbCwgTmd0UG9ydGFsQ29udGVudCwgTmd0c0Vudmlyb25tZW50TWFwLCBOZ3RzRW52aXJvbm1lbnRDdWJlLCBOZ0lmLCBOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNFbnZpcm9ubWVudFBvcnRhbCBleHRlbmRzIE5ndHNFbnZpcm9ubWVudElucHV0cyBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcmVhZG9ubHkgdmlydHVhbFNjZW5lUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLlNjZW5lPihwcmVwYXJlKG5ldyBUSFJFRS5TY2VuZSgpKSk7XG4gICAgcmVhZG9ubHkgY3ViZUNhbWVyYVJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5DdWJlQ2FtZXJhPigpO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7IG5lYXI6IDEsIGZhcjogMTAwMCwgcmVzb2x1dGlvbjogMjU2LCBmcmFtZXM6IDEsIGJhY2tncm91bmQ6IGZhbHNlLCBwcmVzZXQ6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ2ZibycsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbJ3Jlc29sdXRpb24nXSwgKHsgcmVzb2x1dGlvbiB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmJvID0gbmV3IFRIUkVFLldlYkdMQ3ViZVJlbmRlclRhcmdldChyZXNvbHV0aW9uKTtcbiAgICAgICAgICAgICAgICBmYm8udGV4dHVyZS50eXBlID0gSGFsZkZsb2F0VHlwZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmJvO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ2NhbWVyYUFyZ3MnLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoWydmYm8nLCAnbmVhcicsICdmYXInXSwgKHsgbmVhciwgZmFyLCBmYm8gfSkgPT4gW25lYXIsIGZhciwgZmJvXSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMub25CZWZvcmVSZW5kZXIuYmluZCh0aGlzLCAxKSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RW52UHJvcHMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEVudlByb3BzKCkge1xuICAgICAgICB0aGlzLmVmZmVjdChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdmYm8nKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnc2NlbmUnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnYmFja2dyb3VuZCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdmcmFtZXMnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnYmx1cicpLFxuICAgICAgICAgICAgICAgIHRoaXMudmlydHVhbFNjZW5lUmVmLiQsXG4gICAgICAgICAgICAgICAgdGhpcy5jdWJlQ2FtZXJhUmVmLiQsXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIChbZ2wsIGRlZmF1bHRTY2VuZSwgZmJvLCBzY2VuZSwgYmFja2dyb3VuZCwgZnJhbWVzLCBibHVyLCB2aXJ0dWFsU2NlbmUsIGNhbWVyYV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZnJhbWVzID09PSAxKSBjYW1lcmEudXBkYXRlKGdsLCB2aXJ0dWFsU2NlbmUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXRFbnZQcm9wcyhiYWNrZ3JvdW5kLCBzY2VuZSwgZGVmYXVsdFNjZW5lLCBmYm8udGV4dHVyZSwgYmx1cik7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJlZm9yZVJlbmRlcihjb3VudDogbnVtYmVyLCB7IGdsIH06IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHsgZnJhbWVzIH0gPSB0aGlzLmdldCgpO1xuICAgICAgICBpZiAoZnJhbWVzID09PSBJbmZpbml0eSB8fCBjb3VudCA8IGZyYW1lcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3ViZUNhbWVyYVJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdWJlQ2FtZXJhUmVmLm5hdGl2ZUVsZW1lbnQudXBkYXRlKGdsLCB0aGlzLnZpcnR1YWxTY2VuZVJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,163 @@
1
+ import { NgIf, NgTemplateOutlet } from '@angular/common';
2
+ import { Component, ContentChild, CUSTOM_ELEMENTS_SCHEMA, Directive, TemplateRef } from '@angular/core';
3
+ import { NgtsEnvironmentCube } from './environment-cube';
4
+ import { NgtsEnvironmentGround } from './environment-ground';
5
+ import { NgtsEnvironmentInputs } from './environment-inputs';
6
+ import { NgtsEnvironmentMap } from './environment-map';
7
+ import { NgtsEnvironmentPortal } from './environment-portal';
8
+ import * as i0 from "@angular/core";
9
+ export class NgtsEnvironmentContent {
10
+ }
11
+ NgtsEnvironmentContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironmentContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ NgtsEnvironmentContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtsEnvironmentContent, isStandalone: true, selector: "ng-template[ngtsEnvironmentContent]", ngImport: i0 });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironmentContent, decorators: [{
14
+ type: Directive,
15
+ args: [{ selector: 'ng-template[ngtsEnvironmentContent]', standalone: true }]
16
+ }] });
17
+ export class NgtsEnvironment extends NgtsEnvironmentInputs {
18
+ }
19
+ NgtsEnvironment.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironment, deps: null, target: i0.ɵɵFactoryTarget.Component });
20
+ NgtsEnvironment.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtsEnvironment, isStandalone: true, selector: "ngts-environment", queries: [{ propertyName: "content", first: true, predicate: NgtsEnvironmentContent, descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: `
21
+ <ngts-environment-ground
22
+ *ngIf="get('ground'); else noGround"
23
+ [ground]="get('ground')"
24
+ [map]="get('map')"
25
+ [scene]="get('scene')"
26
+ [blur]="get('blur')"
27
+ [background]="get('background')"
28
+ [preset]="get('preset')"
29
+ [frames]="get('frames')"
30
+ [far]="get('far')"
31
+ [near]="get('near')"
32
+ [resolution]="get('resolution')"
33
+ [files]="get('files')"
34
+ [path]="get('path')"
35
+ [extensions]="get('extensions')"
36
+ />
37
+ <ng-template #noGround>
38
+ <ngts-environment-map
39
+ *ngIf="get('map'); else noMap"
40
+ [map]="get('map')"
41
+ [scene]="get('scene')"
42
+ [blur]="get('blur')"
43
+ [background]="get('background')"
44
+ />
45
+ <ng-template #noMap>
46
+ <ngts-environment-portal
47
+ *ngIf="content; else noPortal"
48
+ [frames]="get('frames')"
49
+ [far]="get('far')"
50
+ [near]="get('near')"
51
+ [resolution]="get('resolution')"
52
+ [map]="get('map')"
53
+ [background]="get('background')"
54
+ [blur]="get('blur')"
55
+ [scene]="get('scene')"
56
+ [files]="get('files')"
57
+ [path]="get('path')"
58
+ [preset]="get('preset')"
59
+ [extensions]="get('extensions')"
60
+ >
61
+ <ng-container *ngTemplateOutlet="content" />
62
+ </ngts-environment-portal>
63
+ <ng-template #noPortal>
64
+ <ngts-environment-cube
65
+ [frames]="get('frames')"
66
+ [far]="get('far')"
67
+ [near]="get('near')"
68
+ [resolution]="get('resolution')"
69
+ [map]="get('map')"
70
+ [background]="get('background')"
71
+ [blur]="get('blur')"
72
+ [scene]="get('scene')"
73
+ [files]="get('files')"
74
+ [path]="get('path')"
75
+ [preset]="get('preset')"
76
+ [extensions]="get('extensions')"
77
+ />
78
+ </ng-template>
79
+ </ng-template>
80
+ </ng-template>
81
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map" }, { kind: "component", type: NgtsEnvironmentGround, selector: "ngts-environment-ground" }, { kind: "directive", type: NgtsEnvironmentCube, selector: "ngts-environment-cube" }, { kind: "component", type: NgtsEnvironmentPortal, selector: "ngts-environment-portal" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsEnvironment, decorators: [{
83
+ type: Component,
84
+ args: [{
85
+ selector: 'ngts-environment',
86
+ standalone: true,
87
+ template: `
88
+ <ngts-environment-ground
89
+ *ngIf="get('ground'); else noGround"
90
+ [ground]="get('ground')"
91
+ [map]="get('map')"
92
+ [scene]="get('scene')"
93
+ [blur]="get('blur')"
94
+ [background]="get('background')"
95
+ [preset]="get('preset')"
96
+ [frames]="get('frames')"
97
+ [far]="get('far')"
98
+ [near]="get('near')"
99
+ [resolution]="get('resolution')"
100
+ [files]="get('files')"
101
+ [path]="get('path')"
102
+ [extensions]="get('extensions')"
103
+ />
104
+ <ng-template #noGround>
105
+ <ngts-environment-map
106
+ *ngIf="get('map'); else noMap"
107
+ [map]="get('map')"
108
+ [scene]="get('scene')"
109
+ [blur]="get('blur')"
110
+ [background]="get('background')"
111
+ />
112
+ <ng-template #noMap>
113
+ <ngts-environment-portal
114
+ *ngIf="content; else noPortal"
115
+ [frames]="get('frames')"
116
+ [far]="get('far')"
117
+ [near]="get('near')"
118
+ [resolution]="get('resolution')"
119
+ [map]="get('map')"
120
+ [background]="get('background')"
121
+ [blur]="get('blur')"
122
+ [scene]="get('scene')"
123
+ [files]="get('files')"
124
+ [path]="get('path')"
125
+ [preset]="get('preset')"
126
+ [extensions]="get('extensions')"
127
+ >
128
+ <ng-container *ngTemplateOutlet="content" />
129
+ </ngts-environment-portal>
130
+ <ng-template #noPortal>
131
+ <ngts-environment-cube
132
+ [frames]="get('frames')"
133
+ [far]="get('far')"
134
+ [near]="get('near')"
135
+ [resolution]="get('resolution')"
136
+ [map]="get('map')"
137
+ [background]="get('background')"
138
+ [blur]="get('blur')"
139
+ [scene]="get('scene')"
140
+ [files]="get('files')"
141
+ [path]="get('path')"
142
+ [preset]="get('preset')"
143
+ [extensions]="get('extensions')"
144
+ />
145
+ </ng-template>
146
+ </ng-template>
147
+ </ng-template>
148
+ `,
149
+ imports: [
150
+ NgtsEnvironmentMap,
151
+ NgtsEnvironmentGround,
152
+ NgtsEnvironmentCube,
153
+ NgtsEnvironmentPortal,
154
+ NgIf,
155
+ NgTemplateOutlet,
156
+ ],
157
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
158
+ }]
159
+ }], propDecorators: { content: [{
160
+ type: ContentChild,
161
+ args: [NgtsEnvironmentContent, { read: TemplateRef }]
162
+ }] } });
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvZW52aXJvbm1lbnQvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRzdELE1BQU0sT0FBTyxzQkFBc0I7O21IQUF0QixzQkFBc0I7dUdBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQURsQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHFDQUFxQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7O0FBOEVoRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxxQkFBcUI7OzRHQUE3QyxlQUFlO2dHQUFmLGVBQWUsaUhBQ1Ysc0JBQXNCLDJCQUFVLFdBQVcsb0RBekUvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTZEVCw0REFFRyxrQkFBa0IsaUVBQ2xCLHFCQUFxQixvRUFDckIsbUJBQW1CLGtFQUNuQixxQkFBcUIsb0VBQ3JCLElBQUksNkZBQ0osZ0JBQWdCOzJGQUlYLGVBQWU7a0JBM0UzQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E2RFQ7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsSUFBSTt3QkFDSixnQkFBZ0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQzs4QkFFZ0UsT0FBTztzQkFBbkUsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRDdWJlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC1jdWJlJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudEdyb3VuZCB9IGZyb20gJy4vZW52aXJvbm1lbnQtZ3JvdW5kJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudElucHV0cyB9IGZyb20gJy4vZW52aXJvbm1lbnQtaW5wdXRzJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudE1hcCB9IGZyb20gJy4vZW52aXJvbm1lbnQtbWFwJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudFBvcnRhbCB9IGZyb20gJy4vZW52aXJvbm1lbnQtcG9ydGFsJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmd0c0Vudmlyb25tZW50Q29udGVudF0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0c0Vudmlyb25tZW50Q29udGVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtZW52aXJvbm1lbnQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndHMtZW52aXJvbm1lbnQtZ3JvdW5kXG4gICAgICAgICAgICAqbmdJZj1cImdldCgnZ3JvdW5kJyk7IGVsc2Ugbm9Hcm91bmRcIlxuICAgICAgICAgICAgW2dyb3VuZF09XCJnZXQoJ2dyb3VuZCcpXCJcbiAgICAgICAgICAgIFttYXBdPVwiZ2V0KCdtYXAnKVwiXG4gICAgICAgICAgICBbc2NlbmVdPVwiZ2V0KCdzY2VuZScpXCJcbiAgICAgICAgICAgIFtibHVyXT1cImdldCgnYmx1cicpXCJcbiAgICAgICAgICAgIFtiYWNrZ3JvdW5kXT1cImdldCgnYmFja2dyb3VuZCcpXCJcbiAgICAgICAgICAgIFtwcmVzZXRdPVwiZ2V0KCdwcmVzZXQnKVwiXG4gICAgICAgICAgICBbZnJhbWVzXT1cImdldCgnZnJhbWVzJylcIlxuICAgICAgICAgICAgW2Zhcl09XCJnZXQoJ2ZhcicpXCJcbiAgICAgICAgICAgIFtuZWFyXT1cImdldCgnbmVhcicpXCJcbiAgICAgICAgICAgIFtyZXNvbHV0aW9uXT1cImdldCgncmVzb2x1dGlvbicpXCJcbiAgICAgICAgICAgIFtmaWxlc109XCJnZXQoJ2ZpbGVzJylcIlxuICAgICAgICAgICAgW3BhdGhdPVwiZ2V0KCdwYXRoJylcIlxuICAgICAgICAgICAgW2V4dGVuc2lvbnNdPVwiZ2V0KCdleHRlbnNpb25zJylcIlxuICAgICAgICAvPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vR3JvdW5kPlxuICAgICAgICAgICAgPG5ndHMtZW52aXJvbm1lbnQtbWFwXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXQoJ21hcCcpOyBlbHNlIG5vTWFwXCJcbiAgICAgICAgICAgICAgICBbbWFwXT1cImdldCgnbWFwJylcIlxuICAgICAgICAgICAgICAgIFtzY2VuZV09XCJnZXQoJ3NjZW5lJylcIlxuICAgICAgICAgICAgICAgIFtibHVyXT1cImdldCgnYmx1cicpXCJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZF09XCJnZXQoJ2JhY2tncm91bmQnKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub01hcD5cbiAgICAgICAgICAgICAgICA8bmd0cy1lbnZpcm9ubWVudC1wb3J0YWxcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50OyBlbHNlIG5vUG9ydGFsXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZyYW1lc109XCJnZXQoJ2ZyYW1lcycpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zhcl09XCJnZXQoJ2ZhcicpXCJcbiAgICAgICAgICAgICAgICAgICAgW25lYXJdPVwiZ2V0KCduZWFyJylcIlxuICAgICAgICAgICAgICAgICAgICBbcmVzb2x1dGlvbl09XCJnZXQoJ3Jlc29sdXRpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXBdPVwiZ2V0KCdtYXAnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kXT1cImdldCgnYmFja2dyb3VuZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgW2JsdXJdPVwiZ2V0KCdibHVyJylcIlxuICAgICAgICAgICAgICAgICAgICBbc2NlbmVdPVwiZ2V0KCdzY2VuZScpXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbGVzXT1cImdldCgnZmlsZXMnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtwYXRoXT1cImdldCgncGF0aCcpXCJcbiAgICAgICAgICAgICAgICAgICAgW3ByZXNldF09XCJnZXQoJ3ByZXNldCcpXCJcbiAgICAgICAgICAgICAgICAgICAgW2V4dGVuc2lvbnNdPVwiZ2V0KCdleHRlbnNpb25zJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmd0cy1lbnZpcm9ubWVudC1wb3J0YWw+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1BvcnRhbD5cbiAgICAgICAgICAgICAgICAgICAgPG5ndHMtZW52aXJvbm1lbnQtY3ViZVxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZyYW1lc109XCJnZXQoJ2ZyYW1lcycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmYXJdPVwiZ2V0KCdmYXInKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmVhcl09XCJnZXQoJ25lYXInKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVzb2x1dGlvbl09XCJnZXQoJ3Jlc29sdXRpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWFwXT1cImdldCgnbWFwJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2JhY2tncm91bmRdPVwiZ2V0KCdiYWNrZ3JvdW5kJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2JsdXJdPVwiZ2V0KCdibHVyJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NjZW5lXT1cImdldCgnc2NlbmUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmlsZXNdPVwiZ2V0KCdmaWxlcycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXRoXT1cImdldCgncGF0aCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVzZXRdPVwiZ2V0KCdwcmVzZXQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZW5zaW9uc109XCJnZXQoJ2V4dGVuc2lvbnMnKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5ndHNFbnZpcm9ubWVudE1hcCxcbiAgICAgICAgTmd0c0Vudmlyb25tZW50R3JvdW5kLFxuICAgICAgICBOZ3RzRW52aXJvbm1lbnRDdWJlLFxuICAgICAgICBOZ3RzRW52aXJvbm1lbnRQb3J0YWwsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNFbnZpcm9ubWVudCBleHRlbmRzIE5ndHNFbnZpcm9ubWVudElucHV0cyB7XG4gICAgQENvbnRlbnRDaGlsZChOZ3RzRW52aXJvbm1lbnRDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGNvbnRlbnQ/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbn1cbiJdfQ==
@@ -0,0 +1,70 @@
1
+ import { injectNgtDestroy, injectNgtLoader, injectNgtRef, is } from 'angular-three';
2
+ import { debounceTime, isObservable, map, of, takeUntil } from 'rxjs';
3
+ import { CubeReflectionMapping, CubeTextureLoader, EquirectangularReflectionMapping, LinearEncoding, sRGBEncoding, } from 'three';
4
+ import { RGBELoader } from 'three-stdlib';
5
+ import { ngtsEnvironmentPresetsObj } from './assets';
6
+ function resolveScene(scene) {
7
+ return is.ref(scene) ? scene.nativeElement : scene;
8
+ }
9
+ export function setEnvProps(background, scene, defaultScene, texture, blur = 0) {
10
+ const target = resolveScene(scene || defaultScene);
11
+ const oldbg = target.background;
12
+ const oldenv = target.environment;
13
+ const oldBlur = target.backgroundBlurriness || 0;
14
+ if (background !== 'only')
15
+ target.environment = texture;
16
+ if (background)
17
+ target.background = texture;
18
+ if (background && target.backgroundBlurriness !== undefined)
19
+ target.backgroundBlurriness = blur;
20
+ return () => {
21
+ if (background !== 'only')
22
+ target.environment = oldenv;
23
+ if (background)
24
+ target.background = oldbg;
25
+ if (background && target.backgroundBlurriness !== undefined)
26
+ target.backgroundBlurriness = oldBlur;
27
+ };
28
+ }
29
+ const CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';
30
+ export function injectNgtsEnvironment(paramsFactory) {
31
+ let p = {
32
+ files: ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'],
33
+ path: '',
34
+ preset: undefined,
35
+ encoding: undefined,
36
+ };
37
+ const params = paramsFactory(p);
38
+ const params$ = isObservable(params) ? params : of(params);
39
+ const textureRef = injectNgtRef();
40
+ const { destroy$ } = injectNgtDestroy(() => {
41
+ textureRef.nativeElement?.dispose();
42
+ });
43
+ const loaderResult = injectNgtLoader((inputs) => (Array.isArray(inputs) ? CubeTextureLoader : RGBELoader), params$.pipe(debounceTime(0), map((data) => {
44
+ p = data;
45
+ return p;
46
+ }), map((data) => {
47
+ if (data.preset) {
48
+ if (!(data.preset in ngtsEnvironmentPresetsObj))
49
+ throw new Error('Preset must be one of: ' + Object.keys(ngtsEnvironmentPresetsObj).join(', '));
50
+ data.files = ngtsEnvironmentPresetsObj[data.preset];
51
+ data.path = CUBEMAP_ROOT;
52
+ }
53
+ return Array.isArray(data.files) ? [data.files] : data.files;
54
+ })), (loader) => {
55
+ if (p.path) {
56
+ loader.setPath(p.path);
57
+ }
58
+ if (p.extensions) {
59
+ p.extensions(loader);
60
+ }
61
+ });
62
+ loaderResult.pipe(takeUntil(destroy$)).subscribe((results) => {
63
+ const texture = Array.isArray(p.files) ? results[0] : results;
64
+ texture.mapping = Array.isArray(p.files) ? CubeReflectionMapping : EquirectangularReflectionMapping;
65
+ texture.encoding = (p.encoding ?? Array.isArray(p.files)) ? sRGBEncoding : LinearEncoding;
66
+ textureRef.nativeElement = texture;
67
+ });
68
+ return textureRef;
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvZW52aXJvbm1lbnQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFDSCxxQkFBcUIsRUFFckIsaUJBQWlCLEVBQ2pCLGdDQUFnQyxFQUNoQyxjQUFjLEVBQ2QsWUFBWSxHQUVmLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHckQsU0FBUyxZQUFZLENBQUMsS0FBNEM7SUFDOUQsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQ3ZCLFVBQTRCLEVBQzVCLEtBQXdELEVBQ3hELFlBQXlCLEVBQ3pCLE9BQXNCLEVBQ3RCLElBQUksR0FBRyxDQUFDO0lBRVIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsQ0FBQztJQUNuRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixJQUFJLENBQUMs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QU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFO1lBQ2QsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjtJQUNMLENBQUMsQ0FDSixDQUFDO0lBRUYsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN6RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFNLENBQUMsQ0FBQyxDQUFDLENBQUUsT0FBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQztRQUNyRyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUEsQ0FBQyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFNLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFFekYsVUFBVSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgaW5qZWN0Tmd0TG9hZGVyLCBpbmplY3ROZ3RSZWYsIGlzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGlzT2JzZXJ2YWJsZSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIEN1YmVSZWZsZWN0aW9uTWFwcGluZyxcbiAgICBDdWJlVGV4dHVyZSxcbiAgICBDdWJlVGV4dHVyZUxvYWRlcixcbiAgICBFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZyxcbiAgICBMaW5lYXJFbmNvZGluZyxcbiAgICBzUkdCRW5jb2RpbmcsXG4gICAgVGV4dHVyZSxcbn0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUkdCRUxvYWRlciB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBuZ3RzRW52aXJvbm1lbnRQcmVzZXRzT2JqIH0gZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50SW5wdXRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC1pbnB1dHMnO1xuXG5mdW5jdGlvbiByZXNvbHZlU2NlbmUoc2NlbmU6IFRIUkVFLlNjZW5lIHwgRWxlbWVudFJlZjxUSFJFRS5TY2VuZT4pIHtcbiAgICByZXR1cm4gaXMucmVmKHNjZW5lKSA/IHNjZW5lLm5hdGl2ZUVsZW1lbnQgOiBzY2VuZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVudlByb3BzKFxuICAgIGJhY2tncm91bmQ6IGJvb2xlYW4gfCAnb25seScsXG4gICAgc2NlbmU6IFRIUkVFLlNjZW5lIHwgRWxlbWVudFJlZjxUSFJFRS5TY2VuZT4gfCB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFNjZW5lOiBUSFJFRS5TY2VuZSxcbiAgICB0ZXh0dXJlOiBUSFJFRS5UZXh0dXJlLFxuICAgIGJsdXIgPSAwXG4pIHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXNvbHZlU2NlbmUoc2NlbmUgfHwgZGVmYXVsdFNjZW5lKTtcbiAgICBjb25zdCBvbGRiZyA9IHRhcmdldC5iYWNrZ3JvdW5kO1xuICAgIGNvbnN0IG9sZGVudiA9IHRhcmdldC5lbnZpcm9ubWVudDtcbiAgICBjb25zdCBvbGRCbHVyID0gdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzIHx8IDA7XG5cbiAgICBpZiAoYmFja2dyb3VuZCAhPT0gJ29ubHknKSB0YXJnZXQuZW52aXJvbm1lbnQgPSB0ZXh0dXJlO1xuICAgIGlmIChiYWNrZ3JvdW5kKSB0YXJnZXQuYmFja2dyb3VuZCA9IHRleHR1cmU7XG4gICAgaWYgKGJhY2tncm91bmQgJiYgdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzICE9PSB1bmRlZmluZWQpIHRhcmdldC5iYWNrZ3JvdW5kQmx1cnJpbmVzcyA9IGJsdXI7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoYmFja2dyb3VuZCAhPT0gJ29ubHknKSB0YXJnZXQuZW52aXJvbm1lbnQgPSBvbGRlbnY7XG4gICAgICAgIGlmIChiYWNrZ3JvdW5kKSB0YXJnZXQuYmFja2dyb3VuZCA9IG9sZGJnO1xuICAgICAgICBpZiAoYmFja2dyb3VuZCAmJiB0YXJnZXQuYmFja2dyb3VuZEJsdXJyaW5lc3MgIT09IHVuZGVmaW5lZCkgdGFyZ2V0LmJhY2tncm91bmRCbHVycmluZXNzID0gb2xkQmx1cjtcbiAgICB9O1xufVxuXG50eXBlIE5ndHNJbmplY3RFbnZpcm9ubWVudFBhcmFtcyA9IFBhcnRpYWw8XG4gICAgUGljazxOZ3RzRW52aXJvbm1lbnRJbnB1dHMsICdmaWxlcycgfCAncGF0aCcgfCAncHJlc2V0JyB8ICdleHRlbnNpb25zJyB8ICdlbmNvZGluZyc+XG4+O1xuXG5jb25zdCBDVUJFTUFQX1JPT1QgPSAnaHR0cHM6Ly9tYXJrZXQtYXNzZXRzLmZyYTEuY2RuLmRpZ2l0YWxvY2VhbnNwYWNlcy5jb20vbWFya2V0LWFzc2V0cy9oZHJpcy8nO1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNFbnZpcm9ubWVudChcbiAgICBwYXJhbXNGYWN0b3J5OiAoXG4gICAgICAgIGRlZmF1bHRQYXJhbXM6IE5ndHNJbmplY3RFbnZpcm9ubWVudFBhcmFtc1xuICAgICkgPT4gTmd0c0luamVjdEVudmlyb25tZW50UGFyYW1zIHwgT2JzZXJ2YWJsZTxOZ3RzSW5qZWN0RW52aXJvbm1lbnRQYXJhbXM+XG4pIHtcbiAgICBsZXQgcCA9IHtcbiAgICAgICAgZmlsZXM6IFsnL3B4LnBuZycsICcvbngucG5nJywgJy9weS5wbmcnLCAnL255LnBuZycsICcvcHoucG5nJywgJy9uei5wbmcnXSxcbiAgICAgICAgcGF0aDogJycsXG4gICAgICAgIHByZXNldDogdW5kZWZpbmVkLFxuICAgICAgICBlbmNvZGluZzogdW5kZWZpbmVkLFxuICAgIH0gYXMgTmd0c0luamVjdEVudmlyb25tZW50UGFyYW1zO1xuICAgIGNvbnN0IHBhcmFtcyA9IHBhcmFtc0ZhY3RvcnkocCk7XG4gICAgY29uc3QgcGFyYW1zJCA9IGlzT2JzZXJ2YWJsZShwYXJhbXMpID8gcGFyYW1zIDogb2YocGFyYW1zKTtcblxuICAgIGNvbnN0IHRleHR1cmVSZWYgPSBpbmplY3ROZ3RSZWY8VGV4dHVyZSB8IEN1YmVUZXh0dXJlPigpO1xuICAgIGNvbnN0IHsgZGVzdHJveSQgfSA9IGluamVjdE5ndERlc3Ryb3koKCkgPT4ge1xuICAgICAgICB0ZXh0dXJlUmVmLm5hdGl2ZUVsZW1lbnQ/LmRpc3Bvc2UoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvYWRlclJlc3VsdCA9IGluamVjdE5ndExvYWRlcihcbiAgICAgICAgKGlucHV0cykgPT4gKEFycmF5LmlzQXJyYXkoaW5wdXRzKSA/IEN1YmVUZXh0dXJlTG9hZGVyIDogUkdCRUxvYWRlcikgYXMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55LFxuICAgICAgICBwYXJhbXMkLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBwID0gZGF0YTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEucHJlc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGRhdGEucHJlc2V0IGluIG5ndHNFbnZpcm9ubWVudFByZXNldHNPYmopKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcmVzZXQgbXVzdCBiZSBvbmUgb2Y6ICcgKyBPYmplY3Qua2V5cyhuZ3RzRW52aXJvbm1lbnRQcmVzZXRzT2JqKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9IG5ndHNFbnZpcm9ubWVudFByZXNldHNPYmpbZGF0YS5wcmVzZXRdO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnBhdGggPSBDVUJFTUFQX1JPT1Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEuZmlsZXMpID8gW2RhdGEuZmlsZXNdIDogKGRhdGEuZmlsZXMhIGFzIGFueSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICAobG9hZGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAocC5wYXRoKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnNldFBhdGgocC5wYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwLmV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBwLmV4dGVuc2lvbnMobG9hZGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBsb2FkZXJSZXN1bHQucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlc3VsdHMpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dHVyZSA9IEFycmF5LmlzQXJyYXkocC5maWxlcyEpID8gKHJlc3VsdHMgYXMgYW55W10pWzBdIDogcmVzdWx0cztcbiAgICAgICAgdGV4dHVyZS5tYXBwaW5nID0gQXJyYXkuaXNBcnJheShwLmZpbGVzISkgPyBDdWJlUmVmbGVjdGlvbk1hcHBpbmcgOiBFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZztcbiAgICAgICAgdGV4dHVyZS5lbmNvZGluZyA9IHAuZW5jb2RpbmcgPz8gQXJyYXkuaXNBcnJheShwLmZpbGVzISkgPyBzUkdCRW5jb2RpbmcgOiBMaW5lYXJFbmNvZGluZztcblxuICAgICAgICB0ZXh0dXJlUmVmLm5hdGl2ZUVsZW1lbnQgPSB0ZXh0dXJlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRleHR1cmVSZWY7XG59XG4iXX0=
@@ -0,0 +1,76 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
+ import { extend, injectBeforeRender, injectNgtRef, NgtRxStore } from 'angular-three';
3
+ import * as THREE from 'three';
4
+ import { Group } from 'three';
5
+ import * as i0 from "@angular/core";
6
+ extend({ Group });
7
+ export class NgtsFloat extends NgtRxStore {
8
+ set speed(speed) {
9
+ this.set({ speed });
10
+ }
11
+ set rotationIntensity(rotationIntensity) {
12
+ this.set({ rotationIntensity });
13
+ }
14
+ set floatIntensity(floatIntensity) {
15
+ this.set({ floatIntensity });
16
+ }
17
+ set floatingRange(floatingRange) {
18
+ this.set({ floatingRange });
19
+ }
20
+ initialize() {
21
+ super.initialize();
22
+ this.set({ speed: 1, rotationIntensity: 1, floatIntensity: 1, floatingRange: [-0.1, 0.1] });
23
+ }
24
+ constructor() {
25
+ super();
26
+ this.offset = Math.random() * 10000;
27
+ this.floatRef = injectNgtRef();
28
+ injectBeforeRender(this.onBeforeRender.bind(this));
29
+ }
30
+ onBeforeRender({ clock }) {
31
+ if (!this.floatRef.nativeElement)
32
+ return;
33
+ const { speed, floatingRange, floatIntensity, rotationIntensity } = this.get();
34
+ const t = this.offset + clock.getElapsedTime();
35
+ this.floatRef.nativeElement.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;
36
+ this.floatRef.nativeElement.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;
37
+ this.floatRef.nativeElement.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;
38
+ let yPosition = Math.sin((t / 4) * speed) / 10;
39
+ yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);
40
+ this.floatRef.nativeElement.position.y = yPosition * floatIntensity;
41
+ }
42
+ }
43
+ NgtsFloat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsFloat, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
+ NgtsFloat.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtsFloat, isStandalone: true, selector: "ngts-float", inputs: { floatRef: "floatRef", speed: "speed", rotationIntensity: "rotationIntensity", floatIntensity: "floatIntensity", floatingRange: "floatingRange" }, usesInheritance: true, ngImport: i0, template: `
45
+ <ngt-group ngtCompound>
46
+ <ngt-group [ref]="floatRef">
47
+ <ng-content />
48
+ </ngt-group>
49
+ </ngt-group>
50
+ `, isInline: true });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtsFloat, decorators: [{
52
+ type: Component,
53
+ args: [{
54
+ selector: 'ngts-float',
55
+ standalone: true,
56
+ template: `
57
+ <ngt-group ngtCompound>
58
+ <ngt-group [ref]="floatRef">
59
+ <ng-content />
60
+ </ngt-group>
61
+ </ngt-group>
62
+ `,
63
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
64
+ }]
65
+ }], ctorParameters: function () { return []; }, propDecorators: { floatRef: [{
66
+ type: Input
67
+ }], speed: [{
68
+ type: Input
69
+ }], rotationIntensity: [{
70
+ type: Input
71
+ }], floatIntensity: [{
72
+ type: Input
73
+ }], floatingRange: [{
74
+ type: Input
75
+ }] } });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvZmxvYXQvZmxvYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQWtCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUU5QixNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBY2xCLE1BQU0sT0FBTyxTQUFVLFNBQVEsVUFBVTtJQUtyQyxJQUFhLEtBQUssQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFhLGlCQUFpQixDQUFDLGlCQUF5QjtRQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFhLGNBQWMsQ0FBQyxjQUFzQjtRQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBYSxhQUFhLENBQUMsYUFBaUM7UUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBMUJLLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXZDLGFBQVEsR0FBRyxZQUFZLEVBQWUsQ0FBQztRQXlCNUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFrQjtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUN6QyxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0UsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUM7UUFDN0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUM7UUFDN0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7UUFDOUYsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0MsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxjQUFjLENBQUM7SUFDeEUsQ0FBQzs7c0dBekNRLFNBQVM7MEZBQVQsU0FBUyx5UEFUUjs7Ozs7O0tBTVQ7MkZBR1EsU0FBUztrQkFackIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7O0tBTVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUlZLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRU8sS0FBSztzQkFBakIsS0FBSztnQkFJTyxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBSU8sY0FBYztzQkFBMUIsS0FBSztnQkFJTyxhQUFhO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdE5ndFJlZiwgTmd0UmVuZGVyU3RhdGUsIE5ndFJ4U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSAndGhyZWUnO1xuXG5leHRlbmQoeyBHcm91cCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWZsb2F0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQ+XG4gICAgICAgICAgICA8bmd0LWdyb3VwIFtyZWZdPVwiZmxvYXRSZWZcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzRmxvYXQgZXh0ZW5kcyBOZ3RSeFN0b3JlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9mZnNldCA9IE1hdGgucmFuZG9tKCkgKiAxMDAwMDtcblxuICAgIEBJbnB1dCgpIGZsb2F0UmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLkdyb3VwPigpO1xuXG4gICAgQElucHV0KCkgc2V0IHNwZWVkKHNwZWVkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzcGVlZCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcm90YXRpb25JbnRlbnNpdHkocm90YXRpb25JbnRlbnNpdHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJvdGF0aW9uSW50ZW5zaXR5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmbG9hdEludGVuc2l0eShmbG9hdEludGVuc2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmxvYXRJbnRlbnNpdHkgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZsb2F0aW5nUmFuZ2UoZmxvYXRpbmdSYW5nZTogW251bWJlcj8sIG51bWJlcj9dKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmxvYXRpbmdSYW5nZSB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgc3BlZWQ6IDEsIHJvdGF0aW9uSW50ZW5zaXR5OiAxLCBmbG9hdEludGVuc2l0eTogMSwgZmxvYXRpbmdSYW5nZTogWy0wLjEsIDAuMV0gfSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGluamVjdEJlZm9yZVJlbmRlcih0aGlzLm9uQmVmb3JlUmVuZGVyLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25CZWZvcmVSZW5kZXIoeyBjbG9jayB9OiBOZ3RSZW5kZXJTdGF0ZSkge1xuICAgICAgICBpZiAoIXRoaXMuZmxvYXRSZWYubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IHNwZWVkLCBmbG9hdGluZ1JhbmdlLCBmbG9hdEludGVuc2l0eSwgcm90YXRpb25JbnRlbnNpdHkgfSA9IHRoaXMuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHQgPSB0aGlzLm9mZnNldCArIGNsb2NrLmdldEVsYXBzZWRUaW1lKCk7XG4gICAgICAgIHRoaXMuZmxvYXRSZWYubmF0aXZlRWxlbWVudC5yb3RhdGlvbi54ID0gKE1hdGguY29zKCh0IC8gNCkgKiBzcGVlZCkgLyA4KSAqIHJvdGF0aW9uSW50ZW5zaXR5O1xuICAgICAgICB0aGlzLmZsb2F0UmVmLm5hdGl2ZUVsZW1lbnQucm90YXRpb24ueSA9IChNYXRoLnNpbigodCAvIDQpICogc3BlZWQpIC8gOCkgKiByb3RhdGlvbkludGVuc2l0eTtcbiAgICAgICAgdGhpcy5mbG9hdFJlZi5uYXRpdmVFbGVtZW50LnJvdGF0aW9uLnogPSAoTWF0aC5zaW4oKHQgLyA0KSAqIHNwZWVkKSAvIDIwKSAqIHJvdGF0aW9uSW50ZW5zaXR5O1xuICAgICAgICBsZXQgeVBvc2l0aW9uID0gTWF0aC5zaW4oKHQgLyA0KSAqIHNwZWVkKSAvIDEwO1xuICAgICAgICB5UG9zaXRpb24gPSBUSFJFRS5NYXRoVXRpbHMubWFwTGluZWFyKHlQb3NpdGlvbiwgLTAuMSwgMC4xLCBmbG9hdGluZ1JhbmdlWzBdID8/IC0wLjEsIGZsb2F0aW5nUmFuZ2VbMV0gPz8gMC4xKTtcbiAgICAgICAgdGhpcy5mbG9hdFJlZi5uYXRpdmVFbGVtZW50LnBvc2l0aW9uLnkgPSB5UG9zaXRpb24gKiBmbG9hdEludGVuc2l0eTtcbiAgICB9XG59XG4iXX0=