angular-three-soba 2.0.0-beta.237 → 2.0.0-beta.239

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.
@@ -5,7 +5,7 @@ import { extend, injectNgtRef, makeParameters, injectNgtStore, injectBeforeRende
5
5
  import { NgtsContent, injectFBO } from 'angular-three-soba/misc';
6
6
  import { injectAutoEffect } from 'ngxtension/auto-effect';
7
7
  import { mergeInputs } from 'ngxtension/inject-inputs';
8
- import { PerspectiveCamera, Group } from 'three';
8
+ import { OrthographicCamera, Group, PerspectiveCamera } from 'three';
9
9
 
10
10
  class NgtsCameraContentWithFboTexture {
11
11
  static ngTemplateContextGuard(_, ctx) {
@@ -19,6 +19,120 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
19
19
  args: [{ standalone: true, selector: 'ng-template[withTexture]' }]
20
20
  }] });
21
21
 
22
+ extend({ OrthographicCamera, Group });
23
+ const defaultOptions$1 = {
24
+ frames: Infinity,
25
+ resolution: 256,
26
+ makeDefault: false,
27
+ manual: false,
28
+ };
29
+ class NgtsOrthographicCamera {
30
+ constructor() {
31
+ this.cameraRef = input(injectNgtRef());
32
+ this.options = input(defaultOptions$1, { transform: mergeInputs(defaultOptions$1) });
33
+ this.parameters = makeParameters(this.options, ['envMap', 'makeDefault', 'manual', 'frames', 'resolution']);
34
+ this.content = contentChild(NgtsContent, { read: TemplateRef });
35
+ this.withTextureContent = contentChild(NgtsCameraContentWithFboTexture, { read: TemplateRef });
36
+ this.groupRef = injectNgtRef();
37
+ this.autoEffect = injectAutoEffect();
38
+ this.store = injectNgtStore();
39
+ this.camera = this.store.select('camera');
40
+ this.size = this.store.select('size');
41
+ this.manual = computed(() => this.options().manual);
42
+ this.makeDefault = computed(() => this.options().makeDefault);
43
+ this.resolution = computed(() => this.options().resolution);
44
+ this.fbo = injectFBO(() => ({ width: this.resolution() }));
45
+ this.texture = computed(() => this.fbo().texture);
46
+ afterNextRender(() => {
47
+ this.autoEffect(() => {
48
+ if (!this.manual()) {
49
+ this.cameraRef().nativeElement.updateProjectionMatrix();
50
+ }
51
+ });
52
+ this.autoEffect(() => {
53
+ if (this.makeDefault()) {
54
+ const oldCam = untracked(this.camera);
55
+ this.store.update({ camera: this.cameraRef().nativeElement });
56
+ return () => this.store.update(() => ({ camera: oldCam }));
57
+ }
58
+ return;
59
+ });
60
+ this.cameraRef().nativeElement.updateProjectionMatrix();
61
+ });
62
+ let count = 0;
63
+ let oldEnvMap = null;
64
+ injectBeforeRender(({ gl, scene }) => {
65
+ const [{ frames, envMap }, group, camera, fbo] = [
66
+ this.options(),
67
+ this.groupRef.nativeElement,
68
+ this.cameraRef().nativeElement,
69
+ this.fbo(),
70
+ ];
71
+ if (this.withTextureContent() && group && camera && fbo && (frames === Infinity || count < frames)) {
72
+ group.visible = false;
73
+ gl.setRenderTarget(fbo);
74
+ oldEnvMap = scene.background;
75
+ if (envMap)
76
+ scene.background = envMap;
77
+ gl.render(scene, camera);
78
+ scene.background = oldEnvMap;
79
+ gl.setRenderTarget(null);
80
+ group.visible = true;
81
+ count++;
82
+ }
83
+ });
84
+ }
85
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsOrthographicCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: NgtsOrthographicCamera, isStandalone: true, selector: "ngts-orthographic-camera", inputs: { cameraRef: { classPropertyName: "cameraRef", publicName: "cameraRef", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: NgtsContent, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "withTextureContent", first: true, predicate: NgtsCameraContentWithFboTexture, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
87
+ <ngt-orthographic-camera
88
+ [ref]="cameraRef()"
89
+ [left]="size().width / -2"
90
+ [right]="size().width / 2"
91
+ [top]="size().height / 2"
92
+ [bottom]="size().height / -2"
93
+ [parameters]="parameters()"
94
+ >
95
+ @if (content(); as template) {
96
+ <ng-container [ngTemplateOutlet]="template" />
97
+ }
98
+ </ngt-orthographic-camera>
99
+ <ngt-group [ref]="groupRef">
100
+ @if (withTextureContent(); as withTextureTemplate) {
101
+ <ng-container [ngTemplateOutlet]="withTextureTemplate" [ngTemplateOutletContext]="{ $implicit: texture }" />
102
+ }
103
+ </ngt-group>
104
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtsOrthographicCamera, decorators: [{
107
+ type: Component,
108
+ args: [{
109
+ selector: 'ngts-orthographic-camera',
110
+ standalone: true,
111
+ template: `
112
+ <ngt-orthographic-camera
113
+ [ref]="cameraRef()"
114
+ [left]="size().width / -2"
115
+ [right]="size().width / 2"
116
+ [top]="size().height / 2"
117
+ [bottom]="size().height / -2"
118
+ [parameters]="parameters()"
119
+ >
120
+ @if (content(); as template) {
121
+ <ng-container [ngTemplateOutlet]="template" />
122
+ }
123
+ </ngt-orthographic-camera>
124
+ <ngt-group [ref]="groupRef">
125
+ @if (withTextureContent(); as withTextureTemplate) {
126
+ <ng-container [ngTemplateOutlet]="withTextureTemplate" [ngTemplateOutletContext]="{ $implicit: texture }" />
127
+ }
128
+ </ngt-group>
129
+ `,
130
+ imports: [NgTemplateOutlet],
131
+ changeDetection: ChangeDetectionStrategy.OnPush,
132
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
133
+ }]
134
+ }], ctorParameters: () => [] });
135
+
22
136
  extend({ PerspectiveCamera, Group });
23
137
  const defaultOptions = {
24
138
  frames: Infinity,
@@ -123,5 +237,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
123
237
  * Generated bundle index. Do not edit.
124
238
  */
125
239
 
126
- export { NgtsCameraContentWithFboTexture, NgtsPerspectiveCamera };
240
+ export { NgtsCameraContentWithFboTexture, NgtsOrthographicCamera, NgtsPerspectiveCamera };
127
241
  //# sourceMappingURL=angular-three-soba-cameras.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/soba/cameras/src/lib/camera-content.ts","../../../../libs/soba/cameras/src/lib/perspective-camera.ts","../../../../libs/soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive, Signal } from '@angular/core';\nimport { Texture } from 'three';\n\n@Directive({ standalone: true, selector: 'ng-template[withTexture]' })\nexport class NgtsCameraContentWithFboTexture {\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsCameraContentWithFboTexture,\n\t\tctx: unknown,\n\t): ctx is { $implicit: Signal<Texture> } {\n\t\treturn true;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tTemplateRef,\n\tafterNextRender,\n\tcomputed,\n\tcontentChild,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, injectNgtStore, makeParameters } from 'angular-three';\nimport { NgtsContent, injectFBO } from 'angular-three-soba/misc';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Color, Group, PerspectiveCamera, Texture } from 'three';\nimport { NgtsCameraContentWithFboTexture } from './camera-content';\n\nextend({ PerspectiveCamera, Group });\n\nexport interface NgtsPerspectiveCameraOptions extends Partial<PerspectiveCamera> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: Texture;\n}\n\nconst defaultOptions: NgtsPerspectiveCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-perspective-camera',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-perspective-camera [ref]=\"cameraRef()\" [parameters]=\"parameters()\">\n\t\t\t@if (content(); as template) {\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"template\" />\n\t\t\t}\n\t\t</ngt-perspective-camera>\n\t\t<ngt-group [ref]=\"groupRef\">\n\t\t\t@if (withTextureContent(); as withTextureTemplate) {\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"withTextureTemplate\" [ngTemplateOutletContext]=\"{ $implicit: texture }\" />\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera {\n\tcameraRef = input(injectNgtRef<PerspectiveCamera>());\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = makeParameters(this.options, ['envMap', 'makeDefault', 'manual', 'frames', 'resolution']);\n\n\tcontent = contentChild(NgtsContent, { read: TemplateRef });\n\twithTextureContent = contentChild(NgtsCameraContentWithFboTexture, { read: TemplateRef });\n\n\tgroupRef = injectNgtRef<Group>();\n\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectNgtStore();\n\n\tprivate camera = this.store.select('camera');\n\tprivate size = this.store.select('size');\n\n\tprivate manual = computed(() => this.options().manual);\n\tprivate makeDefault = computed(() => this.options().makeDefault);\n\tprivate resolution = computed(() => this.options().resolution);\n\tprivate fbo = injectFBO(() => ({ width: this.resolution() }));\n\ttexture = computed(() => this.fbo().texture);\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (!this.manual()) {\n\t\t\t\t\tthis.cameraRef().nativeElement.aspect = this.size().width / this.size().height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (this.makeDefault()) {\n\t\t\t\t\tconst oldCam = untracked(this.camera);\n\t\t\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\t\t\treturn () => this.store.update(() => ({ camera: oldCam }));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t});\n\n\t\t\tthis.cameraRef().nativeElement.aspect = this.size().width / this.size().height;\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: Color | Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef.nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo(),\n\t\t\t];\n\t\t\tif (this.withTextureContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/soba/cameras/src/lib/camera-content.ts","../../../../libs/soba/cameras/src/lib/orthographic-camera.ts","../../../../libs/soba/cameras/src/lib/perspective-camera.ts","../../../../libs/soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive, Signal } from '@angular/core';\nimport { Texture } from 'three';\n\n@Directive({ standalone: true, selector: 'ng-template[withTexture]' })\nexport class NgtsCameraContentWithFboTexture {\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsCameraContentWithFboTexture,\n\t\tctx: unknown,\n\t): ctx is { $implicit: Signal<Texture> } {\n\t\treturn true;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tTemplateRef,\n\tafterNextRender,\n\tcomputed,\n\tcontentChild,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, injectNgtStore, makeParameters } from 'angular-three';\nimport { NgtsContent, injectFBO } from 'angular-three-soba/misc';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Color, Group, OrthographicCamera, Texture } from 'three';\nimport { NgtsCameraContentWithFboTexture } from './camera-content';\n\nextend({ OrthographicCamera, Group });\n\nexport interface NgtsOrthographicCameraOptions extends Partial<OrthographicCamera> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: Texture;\n}\n\nconst defaultOptions: NgtsOrthographicCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-orthographic-camera',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-orthographic-camera\n\t\t\t[ref]=\"cameraRef()\"\n\t\t\t[left]=\"size().width / -2\"\n\t\t\t[right]=\"size().width / 2\"\n\t\t\t[top]=\"size().height / 2\"\n\t\t\t[bottom]=\"size().height / -2\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t@if (content(); as template) {\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"template\" />\n\t\t\t}\n\t\t</ngt-orthographic-camera>\n\t\t<ngt-group [ref]=\"groupRef\">\n\t\t\t@if (withTextureContent(); as withTextureTemplate) {\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"withTextureTemplate\" [ngTemplateOutletContext]=\"{ $implicit: texture }\" />\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrthographicCamera {\n\tcameraRef = input(injectNgtRef<OrthographicCamera>());\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = makeParameters(this.options, ['envMap', 'makeDefault', 'manual', 'frames', 'resolution']);\n\n\tcontent = contentChild(NgtsContent, { read: TemplateRef });\n\twithTextureContent = contentChild(NgtsCameraContentWithFboTexture, { read: TemplateRef });\n\n\tgroupRef = injectNgtRef<Group>();\n\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectNgtStore();\n\n\tprivate camera = this.store.select('camera');\n\tsize = this.store.select('size');\n\n\tprivate manual = computed(() => this.options().manual);\n\tprivate makeDefault = computed(() => this.options().makeDefault);\n\tprivate resolution = computed(() => this.options().resolution);\n\tprivate fbo = injectFBO(() => ({ width: this.resolution() }));\n\ttexture = computed(() => this.fbo().texture);\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (!this.manual()) {\n\t\t\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (this.makeDefault()) {\n\t\t\t\t\tconst oldCam = untracked(this.camera);\n\t\t\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\t\t\treturn () => this.store.update(() => ({ camera: oldCam }));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t});\n\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: Color | Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef.nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo(),\n\t\t\t];\n\t\t\tif (this.withTextureContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tTemplateRef,\n\tafterNextRender,\n\tcomputed,\n\tcontentChild,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, injectNgtStore, makeParameters } from 'angular-three';\nimport { NgtsContent, injectFBO } from 'angular-three-soba/misc';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Color, Group, PerspectiveCamera, Texture } from 'three';\nimport { NgtsCameraContentWithFboTexture } from './camera-content';\n\nextend({ PerspectiveCamera, Group });\n\nexport interface NgtsPerspectiveCameraOptions extends Partial<PerspectiveCamera> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: Texture;\n}\n\nconst defaultOptions: NgtsPerspectiveCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-perspective-camera',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-perspective-camera [ref]=\"cameraRef()\" [parameters]=\"parameters()\">\n\t\t\t@if (content(); as template) {\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"template\" />\n\t\t\t}\n\t\t</ngt-perspective-camera>\n\t\t<ngt-group [ref]=\"groupRef\">\n\t\t\t@if (withTextureContent(); as withTextureTemplate) {\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"withTextureTemplate\" [ngTemplateOutletContext]=\"{ $implicit: texture }\" />\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera {\n\tcameraRef = input(injectNgtRef<PerspectiveCamera>());\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = makeParameters(this.options, ['envMap', 'makeDefault', 'manual', 'frames', 'resolution']);\n\n\tcontent = contentChild(NgtsContent, { read: TemplateRef });\n\twithTextureContent = contentChild(NgtsCameraContentWithFboTexture, { read: TemplateRef });\n\n\tgroupRef = injectNgtRef<Group>();\n\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectNgtStore();\n\n\tprivate camera = this.store.select('camera');\n\tprivate size = this.store.select('size');\n\n\tprivate manual = computed(() => this.options().manual);\n\tprivate makeDefault = computed(() => this.options().makeDefault);\n\tprivate resolution = computed(() => this.options().resolution);\n\tprivate fbo = injectFBO(() => ({ width: this.resolution() }));\n\ttexture = computed(() => this.fbo().texture);\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (!this.manual()) {\n\t\t\t\t\tthis.cameraRef().nativeElement.aspect = this.size().width / this.size().height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (this.makeDefault()) {\n\t\t\t\t\tconst oldCam = untracked(this.camera);\n\t\t\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\t\t\treturn () => this.store.update(() => ({ camera: oldCam }));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t});\n\n\t\t\tthis.cameraRef().nativeElement.aspect = this.size().width / this.size().height;\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: Color | Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef.nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo(),\n\t\t\t];\n\t\t\tif (this.withTextureContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
@@ -86,6 +86,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
86
86
  args: [{ standalone: true, selector: 'ng-template[ngtsContent]' }]
87
87
  }] });
88
88
 
89
+ /**
90
+ * NOTE: Sets `BufferAttribute.updateRange` since r159.
91
+ */
92
+ const setUpdateRange = (attribute, updateRange) => {
93
+ if ('updateRanges' in attribute) {
94
+ // @ts-expect-error - r159
95
+ attribute.updateRanges[0] = updateRange;
96
+ }
97
+ else {
98
+ Object.assign(attribute, { updateRange });
99
+ }
100
+ };
101
+ const LinearEncoding = 3000;
102
+ const sRGBEncoding = 3001;
103
+
89
104
  function injectFBO(params, { injector } = {}) {
90
105
  return assertInjector(injectFBO, injector, () => {
91
106
  const autoEffect = injectAutoEffect();
@@ -171,5 +186,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
171
186
  * Generated bundle index. Do not edit.
172
187
  */
173
188
 
174
- export { NgtsContent, NgtsFBO, injectAnimations, injectFBO };
189
+ export { LinearEncoding, NgtsContent, NgtsFBO, injectAnimations, injectFBO, sRGBEncoding, setUpdateRange };
175
190
  //# sourceMappingURL=angular-three-soba-misc.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/soba/misc/src/lib/animations.ts","../../../../libs/soba/misc/src/lib/content.ts","../../../../libs/soba/misc/src/lib/fbo.ts","../../../../libs/soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { ElementRef, Injector, afterNextRender, computed, isSignal, signal, untracked } from '@angular/core';\nimport { injectBeforeRender, is } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { AnimationAction, AnimationClip, AnimationMixer, Object3D } from 'three';\n\ntype NgtsAnimationApi<T extends AnimationClip> = {\n\tclips: AnimationClip[];\n\tmixer: AnimationMixer;\n\tnames: T['name'][];\n\tactions: { [key in T['name']]: AnimationAction | null };\n};\n\nexport type NgtsAnimation<TAnimation extends AnimationClip = AnimationClip> =\n\t| TAnimation[]\n\t| { animations: TAnimation[] };\n\nexport function injectAnimations<TAnimation extends AnimationClip>(\n\tanimations: () => NgtsAnimation<TAnimation> | undefined | null,\n\tobject: ElementRef<Object3D> | Object3D | (() => ElementRef<Object3D> | Object3D | undefined | null),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectAnimations, injector, () => {\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tconst mixer = new AnimationMixer(null!);\n\t\tinjectBeforeRender(({ delta }) => mixer.update(delta));\n\n\t\tlet cached = {} as Record<string, AnimationAction>;\n\t\tconst actions = {} as NgtsAnimationApi<TAnimation>['actions'];\n\t\tconst clips = [] as NgtsAnimationApi<TAnimation>['clips'];\n\t\tconst names = [] as NgtsAnimationApi<TAnimation>['names'];\n\n\t\tconst actualObject = computed(() => {\n\t\t\tif (is.ref(object)) {\n\t\t\t\treturn object.nativeElement;\n\t\t\t}\n\n\t\t\tif (isSignal(object) || typeof object === 'function') {\n\t\t\t\tconst value = object();\n\t\t\t\tif (is.ref(value)) {\n\t\t\t\t\treturn value.nativeElement;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\treturn object;\n\t\t});\n\n\t\tconst ready = signal(false);\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst obj = actualObject();\n\t\t\t\tif (!obj) return;\n\t\t\t\tObject.assign(mixer, { _root: obj });\n\n\t\t\t\tconst maybeAnimationClips = animations();\n\t\t\t\tif (!maybeAnimationClips) return;\n\n\t\t\t\tconst animationClips = Array.isArray(maybeAnimationClips)\n\t\t\t\t\t? maybeAnimationClips\n\t\t\t\t\t: maybeAnimationClips.animations;\n\n\t\t\t\tfor (let i = 0; i < animationClips.length; i++) {\n\t\t\t\t\tconst clip = animationClips[i];\n\n\t\t\t\t\tnames.push(clip.name);\n\t\t\t\t\tclips.push(clip);\n\n\t\t\t\t\tif (!actions[clip.name as TAnimation['name']]) {\n\t\t\t\t\t\tObject.defineProperty(actions, clip.name, {\n\t\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\t\tget: () => {\n\t\t\t\t\t\t\t\treturn cached[clip.name] || (cached[clip.name] = mixer.clipAction(clip, obj));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tif (!ready()) {\n\t\t\t\t\t\tready.set(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn () => {\n\t\t\t\t\t// clear cached\n\t\t\t\t\tcached = {};\n\t\t\t\t\t// stop all actions\n\t\t\t\t\tmixer.stopAllAction();\n\t\t\t\t\t// uncache actions\n\t\t\t\t\tObject.values(actions).forEach((action) => {\n\t\t\t\t\t\tmixer.uncacheAction(action as AnimationClip, obj);\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\n\t\treturn { clips, mixer, actions, names, ready };\n\t});\n}\n","import { Directive } from '@angular/core';\n\n/**\n * generic content directive for Ngts components\n */\n@Directive({ standalone: true, selector: 'ng-template[ngtsContent]' })\nexport class NgtsContent {}\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tTemplateRef,\n\tViewContainerRef,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport {\n\tColorSpace,\n\tDepthTexture,\n\tFloatType,\n\tHalfFloatType,\n\tLinearFilter,\n\tMagnificationTextureFilter,\n\tMinificationTextureFilter,\n\tTextureDataType,\n\tWebGLRenderTarget,\n\tWrapping,\n} from 'three';\nimport { TextureEncoding } from './deprecated';\n\ninterface FBOSettings {\n\t/** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n\tsamples?: number;\n\t/** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n\tdepth?: boolean;\n\n\t// WebGLRenderTargetOptions => RenderTargetOptions\n\twrapS?: Wrapping | undefined;\n\twrapT?: Wrapping | undefined;\n\tmagFilter?: MagnificationTextureFilter | undefined;\n\tminFilter?: MinificationTextureFilter | undefined;\n\tformat?: number | undefined; // RGBAFormat;\n\ttype?: TextureDataType | undefined; // UnsignedByteType;\n\tanisotropy?: number | undefined; // 1;\n\tdepthBuffer?: boolean | undefined; // true;\n\tstencilBuffer?: boolean | undefined; // false;\n\tgenerateMipmaps?: boolean | undefined; // true;\n\tdepthTexture?: DepthTexture | undefined;\n\tencoding?: TextureEncoding | undefined;\n\tcolorSpace?: ColorSpace | undefined;\n}\n\nexport interface NgtsFBOParams {\n\twidth?: number | FBOSettings;\n\theight?: number;\n\tsettings?: FBOSettings;\n}\n\nexport function injectFBO(params: () => NgtsFBOParams, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectFBO, injector, () => {\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst store = injectNgtStore();\n\t\tconst size = store.select('size');\n\t\tconst viewport = store.select('viewport');\n\n\t\tconst width = computed(() => {\n\t\t\tconst { width } = params();\n\t\t\treturn typeof width === 'number' ? width : size().width * viewport().dpr;\n\t\t});\n\t\tconst height = computed(() => {\n\t\t\tconst { height } = params();\n\t\t\treturn typeof height === 'number' ? height : size().height * viewport().dpr;\n\t\t});\n\t\tconst settings = computed(() => {\n\t\t\tconst { width, settings } = params();\n\t\t\tconst _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\t\t\tif (_settings.samples === undefined) {\n\t\t\t\t_settings.samples = 0;\n\t\t\t}\n\t\t\treturn _settings;\n\t\t});\n\n\t\tconst target = computed(() => {\n\t\t\tconst [{ samples = 0, depth, ...targetSettings }, _width, _height] = [\n\t\t\t\tuntracked(settings),\n\t\t\t\tuntracked(width),\n\t\t\t\tuntracked(height),\n\t\t\t];\n\t\t\tconst target = new WebGLRenderTarget(_width, _height, {\n\t\t\t\tminFilter: LinearFilter,\n\t\t\t\tmagFilter: LinearFilter,\n\t\t\t\ttype: HalfFloatType,\n\t\t\t\t...targetSettings,\n\t\t\t});\n\n\t\t\tif (depth) {\n\t\t\t\ttarget.depthTexture = new DepthTexture(_width, _height, FloatType);\n\t\t\t}\n\n\t\t\ttarget.samples = samples;\n\t\t\treturn target;\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [{ samples = 0 }, _width, _height, _target] = [settings(), width(), height(), target()];\n\t\t\t\t_target.setSize(_width, _height);\n\t\t\t\tif (samples) _target.samples = samples;\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => target().dispose());\n\n\t\treturn target;\n\t});\n}\n\n@Directive({ selector: 'ng-template[fbo]', standalone: true })\nexport class NgtsFBO {\n\tfbo = input({} as { width: NgtsFBOParams['width']; height: NgtsFBOParams['height'] } & FBOSettings);\n\n\ttemplate = inject(TemplateRef);\n\tviewContainerRef = inject(ViewContainerRef);\n\n\tfboTarget = injectFBO(() => {\n\t\tconst { width, height, ...settings } = this.fbo();\n\t\treturn { width, height, settings };\n\t});\n\n\tconstructor() {\n\t\tlet ref: EmbeddedViewRef<{ $implicit: ReturnType<typeof injectFBO> }>;\n\t\tafterNextRender(() => {\n\t\t\tref = this.viewContainerRef.createEmbeddedView(this.template, { $implicit: this.fboTarget });\n\t\t\tref.detectChanges();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(dir: NgtsFBO, ctx: unknown): ctx is { $implicit: ReturnType<typeof injectFBO> } {\n\t\treturn true;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/soba/misc/src/lib/animations.ts","../../../../libs/soba/misc/src/lib/content.ts","../../../../libs/soba/misc/src/lib/deprecated.ts","../../../../libs/soba/misc/src/lib/fbo.ts","../../../../libs/soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { ElementRef, Injector, afterNextRender, computed, isSignal, signal, untracked } from '@angular/core';\nimport { injectBeforeRender, is } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { AnimationAction, AnimationClip, AnimationMixer, Object3D } from 'three';\n\ntype NgtsAnimationApi<T extends AnimationClip> = {\n\tclips: AnimationClip[];\n\tmixer: AnimationMixer;\n\tnames: T['name'][];\n\tactions: { [key in T['name']]: AnimationAction | null };\n};\n\nexport type NgtsAnimation<TAnimation extends AnimationClip = AnimationClip> =\n\t| TAnimation[]\n\t| { animations: TAnimation[] };\n\nexport function injectAnimations<TAnimation extends AnimationClip>(\n\tanimations: () => NgtsAnimation<TAnimation> | undefined | null,\n\tobject: ElementRef<Object3D> | Object3D | (() => ElementRef<Object3D> | Object3D | undefined | null),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectAnimations, injector, () => {\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tconst mixer = new AnimationMixer(null!);\n\t\tinjectBeforeRender(({ delta }) => mixer.update(delta));\n\n\t\tlet cached = {} as Record<string, AnimationAction>;\n\t\tconst actions = {} as NgtsAnimationApi<TAnimation>['actions'];\n\t\tconst clips = [] as NgtsAnimationApi<TAnimation>['clips'];\n\t\tconst names = [] as NgtsAnimationApi<TAnimation>['names'];\n\n\t\tconst actualObject = computed(() => {\n\t\t\tif (is.ref(object)) {\n\t\t\t\treturn object.nativeElement;\n\t\t\t}\n\n\t\t\tif (isSignal(object) || typeof object === 'function') {\n\t\t\t\tconst value = object();\n\t\t\t\tif (is.ref(value)) {\n\t\t\t\t\treturn value.nativeElement;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\treturn object;\n\t\t});\n\n\t\tconst ready = signal(false);\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst obj = actualObject();\n\t\t\t\tif (!obj) return;\n\t\t\t\tObject.assign(mixer, { _root: obj });\n\n\t\t\t\tconst maybeAnimationClips = animations();\n\t\t\t\tif (!maybeAnimationClips) return;\n\n\t\t\t\tconst animationClips = Array.isArray(maybeAnimationClips)\n\t\t\t\t\t? maybeAnimationClips\n\t\t\t\t\t: maybeAnimationClips.animations;\n\n\t\t\t\tfor (let i = 0; i < animationClips.length; i++) {\n\t\t\t\t\tconst clip = animationClips[i];\n\n\t\t\t\t\tnames.push(clip.name);\n\t\t\t\t\tclips.push(clip);\n\n\t\t\t\t\tif (!actions[clip.name as TAnimation['name']]) {\n\t\t\t\t\t\tObject.defineProperty(actions, clip.name, {\n\t\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\t\tget: () => {\n\t\t\t\t\t\t\t\treturn cached[clip.name] || (cached[clip.name] = mixer.clipAction(clip, obj));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tif (!ready()) {\n\t\t\t\t\t\tready.set(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn () => {\n\t\t\t\t\t// clear cached\n\t\t\t\t\tcached = {};\n\t\t\t\t\t// stop all actions\n\t\t\t\t\tmixer.stopAllAction();\n\t\t\t\t\t// uncache actions\n\t\t\t\t\tObject.values(actions).forEach((action) => {\n\t\t\t\t\t\tmixer.uncacheAction(action as AnimationClip, obj);\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\n\t\treturn { clips, mixer, actions, names, ready };\n\t});\n}\n","import { Directive } from '@angular/core';\n\n/**\n * generic content directive for Ngts components\n */\n@Directive({ standalone: true, selector: 'ng-template[ngtsContent]' })\nexport class NgtsContent {}\n","import { BufferAttribute } from 'three';\n\n/**\n * NOTE: Sets `BufferAttribute.updateRange` since r159.\n */\nexport const setUpdateRange = (attribute: BufferAttribute, updateRange: { offset: number; count: number }): void => {\n\tif ('updateRanges' in attribute) {\n\t\t// @ts-expect-error - r159\n\t\tattribute.updateRanges[0] = updateRange;\n\t} else {\n\t\tObject.assign(attribute, { updateRange });\n\t}\n};\n\nexport const LinearEncoding = 3000;\nexport const sRGBEncoding = 3001;\n\n/**\n * NOTE: TextureEncoding was deprecated in r152, and removed in r162.\n */\nexport type TextureEncoding = typeof LinearEncoding | typeof sRGBEncoding;\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tTemplateRef,\n\tViewContainerRef,\n\tafterNextRender,\n\tcomputed,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport {\n\tColorSpace,\n\tDepthTexture,\n\tFloatType,\n\tHalfFloatType,\n\tLinearFilter,\n\tMagnificationTextureFilter,\n\tMinificationTextureFilter,\n\tTextureDataType,\n\tWebGLRenderTarget,\n\tWrapping,\n} from 'three';\nimport { TextureEncoding } from './deprecated';\n\ninterface FBOSettings {\n\t/** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n\tsamples?: number;\n\t/** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n\tdepth?: boolean;\n\n\t// WebGLRenderTargetOptions => RenderTargetOptions\n\twrapS?: Wrapping | undefined;\n\twrapT?: Wrapping | undefined;\n\tmagFilter?: MagnificationTextureFilter | undefined;\n\tminFilter?: MinificationTextureFilter | undefined;\n\tformat?: number | undefined; // RGBAFormat;\n\ttype?: TextureDataType | undefined; // UnsignedByteType;\n\tanisotropy?: number | undefined; // 1;\n\tdepthBuffer?: boolean | undefined; // true;\n\tstencilBuffer?: boolean | undefined; // false;\n\tgenerateMipmaps?: boolean | undefined; // true;\n\tdepthTexture?: DepthTexture | undefined;\n\tencoding?: TextureEncoding | undefined;\n\tcolorSpace?: ColorSpace | undefined;\n}\n\nexport interface NgtsFBOParams {\n\twidth?: number | FBOSettings;\n\theight?: number;\n\tsettings?: FBOSettings;\n}\n\nexport function injectFBO(params: () => NgtsFBOParams, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectFBO, injector, () => {\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst store = injectNgtStore();\n\t\tconst size = store.select('size');\n\t\tconst viewport = store.select('viewport');\n\n\t\tconst width = computed(() => {\n\t\t\tconst { width } = params();\n\t\t\treturn typeof width === 'number' ? width : size().width * viewport().dpr;\n\t\t});\n\t\tconst height = computed(() => {\n\t\t\tconst { height } = params();\n\t\t\treturn typeof height === 'number' ? height : size().height * viewport().dpr;\n\t\t});\n\t\tconst settings = computed(() => {\n\t\t\tconst { width, settings } = params();\n\t\t\tconst _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\t\t\tif (_settings.samples === undefined) {\n\t\t\t\t_settings.samples = 0;\n\t\t\t}\n\t\t\treturn _settings;\n\t\t});\n\n\t\tconst target = computed(() => {\n\t\t\tconst [{ samples = 0, depth, ...targetSettings }, _width, _height] = [\n\t\t\t\tuntracked(settings),\n\t\t\t\tuntracked(width),\n\t\t\t\tuntracked(height),\n\t\t\t];\n\t\t\tconst target = new WebGLRenderTarget(_width, _height, {\n\t\t\t\tminFilter: LinearFilter,\n\t\t\t\tmagFilter: LinearFilter,\n\t\t\t\ttype: HalfFloatType,\n\t\t\t\t...targetSettings,\n\t\t\t});\n\n\t\t\tif (depth) {\n\t\t\t\ttarget.depthTexture = new DepthTexture(_width, _height, FloatType);\n\t\t\t}\n\n\t\t\ttarget.samples = samples;\n\t\t\treturn target;\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [{ samples = 0 }, _width, _height, _target] = [settings(), width(), height(), target()];\n\t\t\t\t_target.setSize(_width, _height);\n\t\t\t\tif (samples) _target.samples = samples;\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => target().dispose());\n\n\t\treturn target;\n\t});\n}\n\n@Directive({ selector: 'ng-template[fbo]', standalone: true })\nexport class NgtsFBO {\n\tfbo = input({} as { width: NgtsFBOParams['width']; height: NgtsFBOParams['height'] } & FBOSettings);\n\n\ttemplate = inject(TemplateRef);\n\tviewContainerRef = inject(ViewContainerRef);\n\n\tfboTarget = injectFBO(() => {\n\t\tconst { width, height, ...settings } = this.fbo();\n\t\treturn { width, height, settings };\n\t});\n\n\tconstructor() {\n\t\tlet ref: EmbeddedViewRef<{ $implicit: ReturnType<typeof injectFBO> }>;\n\t\tafterNextRender(() => {\n\t\t\tref = this.viewContainerRef.createEmbeddedView(this.template, { $implicit: this.fboTarget });\n\t\t\tref.detectChanges();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(dir: NgtsFBO, ctx: unknown): ctx is { $implicit: ReturnType<typeof injectFBO> } {\n\t\treturn true;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}