angular-three-postprocessing 2.0.0-beta.4 → 2.0.0-beta.40
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.
- package/esm2022/index.mjs +4 -3
- package/esm2022/lib/effect-composer.mjs +249 -0
- package/esm2022/lib/effect.mjs +78 -0
- package/esm2022/lib/effects/bloom/bloom.mjs +33 -0
- package/esm2022/lib/effects/brightness-contrast/brightness-contrast.mjs +29 -0
- package/esm2022/lib/effects/color-depth/color-depth.mjs +29 -0
- package/esm2022/lib/effects/depth/depth.mjs +29 -0
- package/esm2022/lib/effects/dot-screen/dot-screen.mjs +29 -0
- package/esm2022/lib/effects/hue-saturation/hue-saturation.mjs +29 -0
- package/esm2022/lib/effects/index.mjs +18 -0
- package/esm2022/lib/effects/lut/lut.mjs +74 -0
- package/esm2022/lib/effects/noise/noise.mjs +33 -0
- package/esm2022/lib/effects/pixelation/pixelation.mjs +37 -0
- package/esm2022/lib/effects/scanline/scanline.mjs +33 -0
- package/esm2022/lib/effects/sepia/sepia.mjs +29 -0
- package/esm2022/lib/effects/shock-wave/shock-wave.mjs +29 -0
- package/esm2022/lib/effects/smaa/smaa.mjs +29 -0
- package/esm2022/lib/effects/ssao/ssao.mjs +217 -0
- package/esm2022/lib/effects/tilt-shift/tilt-shift.mjs +33 -0
- package/esm2022/lib/effects/tone-mapping/tone-mapping.mjs +29 -0
- package/esm2022/lib/effects/vignette/vignette.mjs +29 -0
- package/fesm2022/angular-three-postprocessing.mjs +881 -206
- package/fesm2022/angular-three-postprocessing.mjs.map +1 -1
- package/index.d.ts +3 -2
- package/lib/effect-composer.d.ts +105 -0
- package/lib/effect.d.ts +27 -0
- package/{effects → lib/effects}/bloom/bloom.d.ts +7 -2
- package/{effects → lib/effects}/brightness-contrast/brightness-contrast.d.ts +9 -1
- package/{effects → lib/effects}/color-depth/color-depth.d.ts +8 -1
- package/{effects → lib/effects}/depth/depth.d.ts +8 -1
- package/{effects → lib/effects}/dot-screen/dot-screen.d.ts +9 -1
- package/{effects → lib/effects}/hue-saturation/hue-saturation.d.ts +9 -1
- package/{effects → lib/effects}/index.d.ts +1 -0
- package/lib/effects/lut/lut.d.ts +29 -0
- package/{effects → lib/effects}/noise/noise.d.ts +8 -1
- package/lib/effects/pixelation/pixelation.d.ts +20 -0
- package/{effects → lib/effects}/scanline/scanline.d.ts +8 -1
- package/{effects → lib/effects}/sepia/sepia.d.ts +8 -1
- package/lib/effects/shock-wave/shock-wave.d.ts +17 -0
- package/lib/effects/smaa/smaa.d.ts +16 -0
- package/lib/effects/ssao/ssao.d.ts +42 -0
- package/lib/effects/tilt-shift/tilt-shift.d.ts +23 -0
- package/lib/effects/tone-mapping/tone-mapping.d.ts +22 -0
- package/lib/effects/vignette/vignette.d.ts +17 -0
- package/package.json +4 -14
- package/effect-composer.d.ts +0 -53
- package/effect.d.ts +0 -24
- package/effects/README.md +0 -3
- package/effects/lut/lut.d.ts +0 -19
- package/effects/shock-wave/shock-wave.d.ts +0 -7
- package/effects/smaa/smaa.d.ts +0 -7
- package/effects/ssao/ssao.d.ts +0 -38
- package/effects/tilt-shift/tilt-shift.d.ts +0 -8
- package/effects/tone-mapping/tone-mapping.d.ts +0 -7
- package/effects/vignette/vignette.d.ts +0 -7
- package/esm2022/effect-composer.mjs +0 -242
- package/esm2022/effect.mjs +0 -79
- package/esm2022/effects/angular-three-postprocessing-effects.mjs +0 -5
- package/esm2022/effects/bloom/bloom.mjs +0 -34
- package/esm2022/effects/brightness-contrast/brightness-contrast.mjs +0 -30
- package/esm2022/effects/color-depth/color-depth.mjs +0 -30
- package/esm2022/effects/depth/depth.mjs +0 -30
- package/esm2022/effects/dot-screen/dot-screen.mjs +0 -30
- package/esm2022/effects/hue-saturation/hue-saturation.mjs +0 -30
- package/esm2022/effects/index.mjs +0 -17
- package/esm2022/effects/lut/lut.mjs +0 -77
- package/esm2022/effects/noise/noise.mjs +0 -34
- package/esm2022/effects/scanline/scanline.mjs +0 -34
- package/esm2022/effects/sepia/sepia.mjs +0 -30
- package/esm2022/effects/shock-wave/shock-wave.mjs +0 -30
- package/esm2022/effects/smaa/smaa.mjs +0 -30
- package/esm2022/effects/ssao/ssao.mjs +0 -187
- package/esm2022/effects/tilt-shift/tilt-shift.mjs +0 -34
- package/esm2022/effects/tone-mapping/tone-mapping.mjs +0 -30
- package/esm2022/effects/vignette/vignette.mjs +0 -30
- package/fesm2022/angular-three-postprocessing-effects.mjs +0 -617
- package/fesm2022/angular-three-postprocessing-effects.mjs.map +0 -1
- package/plugin/README.md +0 -11
- package/plugin/generators.json +0 -19
- package/plugin/package.json +0 -9
- package/plugin/src/generators/init/compat.d.ts +0 -2
- package/plugin/src/generators/init/compat.js +0 -6
- package/plugin/src/generators/init/compat.js.map +0 -1
- package/plugin/src/generators/init/init.d.ts +0 -4
- package/plugin/src/generators/init/init.js +0 -22
- package/plugin/src/generators/init/init.js.map +0 -1
- package/plugin/src/generators/init/schema.json +0 -6
- package/plugin/src/index.d.ts +0 -1
- package/plugin/src/index.js +0 -6
- package/plugin/src/index.js.map +0 -1
package/esm2022/index.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export * from './effect';
|
|
2
|
-
export * from './effect-composer';
|
|
3
|
-
|
|
1
|
+
export * from './lib/effect';
|
|
2
|
+
export * from './lib/effect-composer';
|
|
3
|
+
export * from './lib/effects';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZWZmZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VmZmVjdC1jb21wb3Nlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lZmZlY3RzJztcbiJdfQ==
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component, Injector, Input, computed, effect, forwardRef, inject, } from '@angular/core';
|
|
2
|
+
import { extend, injectBeforeRender, injectNgtRef, injectNgtStore, signalStore } from 'angular-three';
|
|
3
|
+
import { createInjectionToken } from 'ngxtension/create-injection-token';
|
|
4
|
+
import { DepthDownsamplingPass, Effect, EffectComposer, EffectPass, NormalPass, Pass, RenderPass, } from 'postprocessing';
|
|
5
|
+
import * as THREE from 'three';
|
|
6
|
+
import { Group } from 'three';
|
|
7
|
+
import { isWebGL2Available } from 'three-stdlib';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
extend({ Group });
|
|
10
|
+
export const [injectNgtpEffectComposerApi, provideNgtpEffectComposerApi] = createInjectionToken((composer) => composer.api, { isRoot: false, deps: [forwardRef(() => NgtpEffectComposer)] });
|
|
11
|
+
export class NgtpEffectComposer {
|
|
12
|
+
set _enabled(enabled) {
|
|
13
|
+
this.inputs.set({ enabled });
|
|
14
|
+
}
|
|
15
|
+
set _depthBuffer(depthBuffer) {
|
|
16
|
+
this.inputs.set({ depthBuffer });
|
|
17
|
+
}
|
|
18
|
+
set _disableNormalPass(disableNormalPass) {
|
|
19
|
+
this.inputs.set({ disableNormalPass });
|
|
20
|
+
}
|
|
21
|
+
set _stencilBuffer(stencilBuffer) {
|
|
22
|
+
this.inputs.set({ stencilBuffer });
|
|
23
|
+
}
|
|
24
|
+
set _autoClear(autoClear) {
|
|
25
|
+
this.inputs.set({ autoClear });
|
|
26
|
+
}
|
|
27
|
+
set _resolutionScale(resolutionScale) {
|
|
28
|
+
this.inputs.set({ resolutionScale });
|
|
29
|
+
}
|
|
30
|
+
set _multisampling(multisampling) {
|
|
31
|
+
this.inputs.set({ multisampling });
|
|
32
|
+
}
|
|
33
|
+
set _frameBufferType(frameBufferType) {
|
|
34
|
+
this.inputs.set({ frameBufferType });
|
|
35
|
+
}
|
|
36
|
+
set _renderPriority(renderPriority) {
|
|
37
|
+
this.inputs.set({ renderPriority });
|
|
38
|
+
}
|
|
39
|
+
set _camera(camera) {
|
|
40
|
+
this.inputs.set({ camera });
|
|
41
|
+
}
|
|
42
|
+
set _scene(scene) {
|
|
43
|
+
this.inputs.set({ scene });
|
|
44
|
+
}
|
|
45
|
+
constructor() {
|
|
46
|
+
this.inputs = signalStore({
|
|
47
|
+
enabled: true,
|
|
48
|
+
renderPriority: 1,
|
|
49
|
+
autoClear: true,
|
|
50
|
+
multisampling: 8,
|
|
51
|
+
frameBufferType: THREE.HalfFloatType,
|
|
52
|
+
});
|
|
53
|
+
this.composerRef = injectNgtRef();
|
|
54
|
+
this.injector = inject(Injector);
|
|
55
|
+
this.store = injectNgtStore();
|
|
56
|
+
this.gl = this.store.select('gl');
|
|
57
|
+
this.defaultScene = this.store.select('scene');
|
|
58
|
+
this.defaultCamera = this.store.select('camera');
|
|
59
|
+
this.size = this.store.select('size');
|
|
60
|
+
this.depthBuffer = this.inputs.select('depthBuffer');
|
|
61
|
+
this.stencilBuffer = this.inputs.select('stencilBuffer');
|
|
62
|
+
this.multisampling = this.inputs.select('multisampling');
|
|
63
|
+
this.frameBufferType = this.inputs.select('frameBufferType');
|
|
64
|
+
this.scene = this.inputs.select('scene');
|
|
65
|
+
this.camera = this.inputs.select('camera');
|
|
66
|
+
this.disableNormalPass = this.inputs.select('disableNormalPass');
|
|
67
|
+
this.resolutionScale = this.inputs.select('resolutionScale');
|
|
68
|
+
this.autoClear = this.inputs.select('autoClear');
|
|
69
|
+
this.activeScene = computed(() => this.scene() || this.defaultScene());
|
|
70
|
+
this.activeCamera = computed(() => this.camera() || this.defaultCamera());
|
|
71
|
+
this.composerEntities = computed(() => {
|
|
72
|
+
const webGL2Available = isWebGL2Available();
|
|
73
|
+
const [gl, depthBuffer, stencilBuffer, multisampling, frameBufferType, scene, camera, disableNormalPass, resolutionScale,] = [
|
|
74
|
+
this.gl(),
|
|
75
|
+
this.depthBuffer(),
|
|
76
|
+
this.stencilBuffer(),
|
|
77
|
+
this.multisampling(),
|
|
78
|
+
this.frameBufferType(),
|
|
79
|
+
this.activeScene(),
|
|
80
|
+
this.activeCamera(),
|
|
81
|
+
this.disableNormalPass(),
|
|
82
|
+
this.resolutionScale(),
|
|
83
|
+
];
|
|
84
|
+
// Initialize composer
|
|
85
|
+
const effectComposer = new EffectComposer(gl, {
|
|
86
|
+
depthBuffer,
|
|
87
|
+
stencilBuffer,
|
|
88
|
+
multisampling: multisampling > 0 && webGL2Available ? multisampling : 0,
|
|
89
|
+
frameBufferType,
|
|
90
|
+
});
|
|
91
|
+
// Add render pass
|
|
92
|
+
effectComposer.addPass(new RenderPass(scene, camera));
|
|
93
|
+
// Create normal pass
|
|
94
|
+
let downSamplingPass = null;
|
|
95
|
+
let normalPass = null;
|
|
96
|
+
if (!disableNormalPass) {
|
|
97
|
+
normalPass = new NormalPass(scene, camera);
|
|
98
|
+
normalPass.enabled = false;
|
|
99
|
+
effectComposer.addPass(normalPass);
|
|
100
|
+
if (resolutionScale !== undefined && webGL2Available) {
|
|
101
|
+
downSamplingPass = new DepthDownsamplingPass({ normalBuffer: normalPass.texture, resolutionScale });
|
|
102
|
+
downSamplingPass.enabled = false;
|
|
103
|
+
effectComposer.addPass(downSamplingPass);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return { effectComposer, normalPass, downSamplingPass };
|
|
107
|
+
});
|
|
108
|
+
this.composer = computed(() => this.composerEntities().effectComposer);
|
|
109
|
+
this.api = computed(() => {
|
|
110
|
+
const [{ effectComposer: composer, normalPass, downSamplingPass }, resolutionScale, camera, scene] = [
|
|
111
|
+
this.composerEntities(),
|
|
112
|
+
this.resolutionScale(),
|
|
113
|
+
this.activeCamera(),
|
|
114
|
+
this.activeScene(),
|
|
115
|
+
];
|
|
116
|
+
return { composer, normalPass, downSamplingPass, resolutionScale, camera, scene };
|
|
117
|
+
});
|
|
118
|
+
this.setComposerSize();
|
|
119
|
+
this.updatePasses();
|
|
120
|
+
}
|
|
121
|
+
ngOnInit() {
|
|
122
|
+
this.beforeRender();
|
|
123
|
+
}
|
|
124
|
+
setComposerSize() {
|
|
125
|
+
effect(() => {
|
|
126
|
+
const [composer, size] = [this.composer(), this.size()];
|
|
127
|
+
composer.setSize(size.width, size.height);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
updatePasses() {
|
|
131
|
+
effect((onCleanup) => {
|
|
132
|
+
const [{ effectComposer: composer, normalPass, downSamplingPass }, instance, children, camera] = [
|
|
133
|
+
this.composerEntities(),
|
|
134
|
+
this.composerRef.nativeElement,
|
|
135
|
+
this.composerRef.children('nonObjects')(),
|
|
136
|
+
this.activeCamera(),
|
|
137
|
+
];
|
|
138
|
+
const passes = [];
|
|
139
|
+
if (instance && composer && children.length) {
|
|
140
|
+
for (let i = 0; i < children.length; i++) {
|
|
141
|
+
const child = children[i];
|
|
142
|
+
if (child instanceof Effect) {
|
|
143
|
+
const effects = [];
|
|
144
|
+
while (children[i] instanceof Effect)
|
|
145
|
+
effects.push(children[i++]);
|
|
146
|
+
i--;
|
|
147
|
+
const pass = new EffectPass(camera, ...effects);
|
|
148
|
+
passes.push(pass);
|
|
149
|
+
}
|
|
150
|
+
else if (child instanceof Pass) {
|
|
151
|
+
passes.push(child);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
for (const pass of passes)
|
|
155
|
+
composer.addPass(pass);
|
|
156
|
+
if (normalPass)
|
|
157
|
+
normalPass.enabled = true;
|
|
158
|
+
if (downSamplingPass)
|
|
159
|
+
downSamplingPass.enabled = true;
|
|
160
|
+
}
|
|
161
|
+
onCleanup(() => {
|
|
162
|
+
for (const pass of passes)
|
|
163
|
+
composer?.removePass(pass);
|
|
164
|
+
if (normalPass)
|
|
165
|
+
normalPass.enabled = false;
|
|
166
|
+
if (downSamplingPass)
|
|
167
|
+
downSamplingPass.enabled = false;
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
beforeRender() {
|
|
172
|
+
injectBeforeRender(({ delta }) => {
|
|
173
|
+
const [enabled, gl, autoClear, stencilBuffer, composer] = [
|
|
174
|
+
this.inputs.get('enabled'),
|
|
175
|
+
this.gl(),
|
|
176
|
+
this.autoClear(),
|
|
177
|
+
this.stencilBuffer(),
|
|
178
|
+
this.composer(),
|
|
179
|
+
];
|
|
180
|
+
if (enabled) {
|
|
181
|
+
const currentAutoClear = gl.autoClear;
|
|
182
|
+
gl.autoClear = autoClear;
|
|
183
|
+
if (stencilBuffer && !autoClear)
|
|
184
|
+
gl.clearStencil();
|
|
185
|
+
composer.render(delta);
|
|
186
|
+
gl.autoClear = currentAutoClear;
|
|
187
|
+
}
|
|
188
|
+
}, {
|
|
189
|
+
injector: this.injector,
|
|
190
|
+
priority: this.inputs.get('enabled') ? this.inputs.get('renderPriority') : 0,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpEffectComposer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
194
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtpEffectComposer, isStandalone: true, selector: "ngtp-effect-composer", inputs: { composerRef: "composerRef", _enabled: ["enabled", "_enabled"], _depthBuffer: ["depthBuffer", "_depthBuffer"], _disableNormalPass: ["disableNormalPass", "_disableNormalPass"], _stencilBuffer: ["stencilBuffer", "_stencilBuffer"], _autoClear: ["autoClear", "_autoClear"], _resolutionScale: ["resolutionScale", "_resolutionScale"], _multisampling: ["multisampling", "_multisampling"], _frameBufferType: ["frameBufferType", "_frameBufferType"], _renderPriority: ["renderPriority", "_renderPriority"], _camera: ["camera", "_camera"], _scene: ["scene", "_scene"] }, providers: [provideNgtpEffectComposerApi()], ngImport: i0, template: `
|
|
195
|
+
<ngt-group [ref]="composerRef">
|
|
196
|
+
<ng-content />
|
|
197
|
+
</ngt-group>
|
|
198
|
+
`, isInline: true }); }
|
|
199
|
+
}
|
|
200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpEffectComposer, decorators: [{
|
|
201
|
+
type: Component,
|
|
202
|
+
args: [{
|
|
203
|
+
selector: 'ngtp-effect-composer',
|
|
204
|
+
standalone: true,
|
|
205
|
+
template: `
|
|
206
|
+
<ngt-group [ref]="composerRef">
|
|
207
|
+
<ng-content />
|
|
208
|
+
</ngt-group>
|
|
209
|
+
`,
|
|
210
|
+
providers: [provideNgtpEffectComposerApi()],
|
|
211
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
212
|
+
}]
|
|
213
|
+
}], ctorParameters: function () { return []; }, propDecorators: { composerRef: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], _enabled: [{
|
|
216
|
+
type: Input,
|
|
217
|
+
args: [{ alias: 'enabled' }]
|
|
218
|
+
}], _depthBuffer: [{
|
|
219
|
+
type: Input,
|
|
220
|
+
args: [{ alias: 'depthBuffer' }]
|
|
221
|
+
}], _disableNormalPass: [{
|
|
222
|
+
type: Input,
|
|
223
|
+
args: [{ alias: 'disableNormalPass' }]
|
|
224
|
+
}], _stencilBuffer: [{
|
|
225
|
+
type: Input,
|
|
226
|
+
args: [{ alias: 'stencilBuffer' }]
|
|
227
|
+
}], _autoClear: [{
|
|
228
|
+
type: Input,
|
|
229
|
+
args: [{ alias: 'autoClear' }]
|
|
230
|
+
}], _resolutionScale: [{
|
|
231
|
+
type: Input,
|
|
232
|
+
args: [{ alias: 'resolutionScale' }]
|
|
233
|
+
}], _multisampling: [{
|
|
234
|
+
type: Input,
|
|
235
|
+
args: [{ alias: 'multisampling' }]
|
|
236
|
+
}], _frameBufferType: [{
|
|
237
|
+
type: Input,
|
|
238
|
+
args: [{ alias: 'frameBufferType' }]
|
|
239
|
+
}], _renderPriority: [{
|
|
240
|
+
type: Input,
|
|
241
|
+
args: [{ alias: 'renderPriority' }]
|
|
242
|
+
}], _camera: [{
|
|
243
|
+
type: Input,
|
|
244
|
+
args: [{ alias: 'camera' }]
|
|
245
|
+
}], _scene: [{
|
|
246
|
+
type: Input,
|
|
247
|
+
args: [{ alias: 'scene' }]
|
|
248
|
+
}] } });
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LWNvbXBvc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wb3N0cHJvY2Vzc2luZy9zcmMvbGliL2VmZmVjdC1jb21wb3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFDTixxQkFBcUIsRUFDckIsTUFBTSxFQUNOLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksRUFDSixVQUFVLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFakQsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQWdCbEIsTUFBTSxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSw0QkFBNEIsQ0FBQyxHQUFHLG9CQUFvQixDQUM5RixDQUFDLFFBQTRCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQzlDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQy9ELENBQUM7QUFhRixNQUFNLE9BQU8sa0JBQWtC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QjtzQkFBeEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtnQkFJSyxlQUFlO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO2dCQUlGLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlLLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q29tcG9uZW50LFxuXHRJbmplY3Rvcixcblx0SW5wdXQsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGZvcndhcmRSZWYsXG5cdGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0UmVmLCBpbmplY3ROZ3RTdG9yZSwgc2lnbmFsU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNyZWF0ZUluamVjdGlvblRva2VuIH0gZnJvbSAnbmd4dGVuc2lvbi9jcmVhdGUtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7XG5cdERlcHRoRG93bnNhbXBsaW5nUGFzcyxcblx0RWZmZWN0LFxuXHRFZmZlY3RDb21wb3Nlcixcblx0RWZmZWN0UGFzcyxcblx0Tm9ybWFsUGFzcyxcblx0UGFzcyxcblx0UmVuZGVyUGFzcyxcbn0gZnJvbSAncG9zdHByb2Nlc3NpbmcnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBpc1dlYkdMMkF2YWlsYWJsZSB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmV4dGVuZCh7IEdyb3VwIH0pO1xuXG5leHBvcnQgdHlwZSBOZ3RwRWZmZWN0Q29tcG9zZXJTdGF0ZSA9IHtcblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0ZGVwdGhCdWZmZXI/OiBib29sZWFuO1xuXHRkaXNhYmxlTm9ybWFsUGFzcz86IGJvb2xlYW47XG5cdHN0ZW5jaWxCdWZmZXI/OiBib29sZWFuO1xuXHRhdXRvQ2xlYXI6IGJvb2xlYW47XG5cdHJlc29sdXRpb25TY2FsZT86IG51bWJlcjtcblx0bXVsdGlzYW1wbGluZzogbnVtYmVyO1xuXHRmcmFtZUJ1ZmZlclR5cGU6IFRIUkVFLlRleHR1cmVEYXRhVHlwZTtcblx0cmVuZGVyUHJpb3JpdHk6IG51bWJlcjtcblx0Y2FtZXJhPzogVEhSRUUuQ2FtZXJhO1xuXHRzY2VuZT86IFRIUkVFLlNjZW5lO1xufTtcblxuZXhwb3J0IGNvbnN0IFtpbmplY3ROZ3RwRWZmZWN0Q29tcG9zZXJBcGksIHByb3ZpZGVOZ3RwRWZmZWN0Q29tcG9zZXJBcGldID0gY3JlYXRlSW5qZWN0aW9uVG9rZW4oXG5cdChjb21wb3NlcjogTmd0cEVmZmVjdENvbXBvc2VyKSA9PiBjb21wb3Nlci5hcGksXG5cdHsgaXNSb290OiBmYWxzZSwgZGVwczogW2ZvcndhcmRSZWYoKCkgPT4gTmd0cEVmZmVjdENvbXBvc2VyKV0gfSxcbik7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtZWZmZWN0LWNvbXBvc2VyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWdyb3VwIFtyZWZdPVwiY29tcG9zZXJSZWZcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVOZ3RwRWZmZWN0Q29tcG9zZXJBcGkoKV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cEVmZmVjdENvbXBvc2VyIHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RwRWZmZWN0Q29tcG9zZXJTdGF0ZT4oe1xuXHRcdGVuYWJsZWQ6IHRydWUsXG5cdFx0cmVuZGVyUHJpb3JpdHk6IDEsXG5cdFx0YXV0b0NsZWFyOiB0cnVlLFxuXHRcdG11bHRpc2FtcGxpbmc6IDgsXG5cdFx0ZnJhbWVCdWZmZXJUeXBlOiBUSFJFRS5IYWxmRmxvYXRUeXBlLFxuXHR9KTtcblxuXHRASW5wdXQoKSBjb21wb3NlclJlZiA9IGluamVjdE5ndFJlZjxHcm91cD4oKTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2VuYWJsZWQnIH0pIHNldCBfZW5hYmxlZChlbmFibGVkOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZW5hYmxlZCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZGVwdGhCdWZmZXInIH0pIHNldCBfZGVwdGhCdWZmZXIoZGVwdGhCdWZmZXI6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkZXB0aEJ1ZmZlciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZGlzYWJsZU5vcm1hbFBhc3MnIH0pIHNldCBfZGlzYWJsZU5vcm1hbFBhc3MoZGlzYWJsZU5vcm1hbFBhc3M6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkaXNhYmxlTm9ybWFsUGFzcyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc3RlbmNpbEJ1ZmZlcicgfSkgc2V0IF9zdGVuY2lsQnVmZmVyKHN0ZW5jaWxCdWZmZXI6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzdGVuY2lsQnVmZmVyIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdhdXRvQ2xlYXInIH0pIHNldCBfYXV0b0NsZWFyKGF1dG9DbGVhcjogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGF1dG9DbGVhciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmVzb2x1dGlvblNjYWxlJyB9KSBzZXQgX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGU6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJlc29sdXRpb25TY2FsZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbXVsdGlzYW1wbGluZycgfSkgc2V0IF9tdWx0aXNhbXBsaW5nKG11bHRpc2FtcGxpbmc6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG11bHRpc2FtcGxpbmcgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZyYW1lQnVmZmVyVHlwZScgfSkgc2V0IF9mcmFtZUJ1ZmZlclR5cGUoZnJhbWVCdWZmZXJUeXBlOiBUSFJFRS5UZXh0dXJlRGF0YVR5cGUpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmcmFtZUJ1ZmZlclR5cGUgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3JlbmRlclByaW9yaXR5JyB9KSBzZXQgX3JlbmRlclByaW9yaXR5KHJlbmRlclByaW9yaXR5OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyByZW5kZXJQcmlvcml0eSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY2FtZXJhJyB9KSBzZXQgX2NhbWVyYShjYW1lcmE6IFRIUkVFLkNhbWVyYSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGNhbWVyYSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc2NlbmUnIH0pIHNldCBfc2NlbmUoc2NlbmU6IFRIUkVFLlNjZW5lKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgc2NlbmUgfSk7XG5cdH1cblxuXHRwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0cHJpdmF0ZSBnbCA9IHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcpO1xuXHRwcml2YXRlIGRlZmF1bHRTY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRwcml2YXRlIGRlZmF1bHRDYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdHByaXZhdGUgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cblx0cHJpdmF0ZSBkZXB0aEJ1ZmZlciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGVwdGhCdWZmZXInKTtcblx0cHJpdmF0ZSBzdGVuY2lsQnVmZmVyID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzdGVuY2lsQnVmZmVyJyk7XG5cdHByaXZhdGUgbXVsdGlzYW1wbGluZyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnbXVsdGlzYW1wbGluZycpO1xuXHRwcml2YXRlIGZyYW1lQnVmZmVyVHlwZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZnJhbWVCdWZmZXJUeXBlJyk7XG5cdHByaXZhdGUgc2NlbmUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3NjZW5lJyk7XG5cdHByaXZhdGUgY2FtZXJhID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBkaXNhYmxlTm9ybWFsUGFzcyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGlzYWJsZU5vcm1hbFBhc3MnKTtcblx0cHJpdmF0ZSByZXNvbHV0aW9uU2NhbGUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3Jlc29sdXRpb25TY2FsZScpO1xuXHRwcml2YXRlIGF1dG9DbGVhciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYXV0b0NsZWFyJyk7XG5cblx0cHJpdmF0ZSBhY3RpdmVTY2VuZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2NlbmUoKSB8fCB0aGlzLmRlZmF1bHRTY2VuZSgpKTtcblx0cHJpdmF0ZSBhY3RpdmVDYW1lcmEgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbWVyYSgpIHx8IHRoaXMuZGVmYXVsdENhbWVyYSgpKTtcblxuXHRwcml2YXRlIGNvbXBvc2VyRW50aXRpZXMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3Qgd2ViR0wyQXZhaWxhYmxlID0gaXNXZWJHTDJBdmFpbGFibGUoKTtcblx0XHRjb25zdCBbXG5cdFx0XHRnbCxcblx0XHRcdGRlcHRoQnVmZmVyLFxuXHRcdFx0c3RlbmNpbEJ1ZmZlcixcblx0XHRcdG11bHRpc2FtcGxpbmcsXG5cdFx0XHRmcmFtZUJ1ZmZlclR5cGUsXG5cdFx0XHRzY2VuZSxcblx0XHRcdGNhbWVyYSxcblx0XHRcdGRpc2FibGVOb3JtYWxQYXNzLFxuXHRcdFx0cmVzb2x1dGlvblNjYWxlLFxuXHRcdF0gPSBbXG5cdFx0XHR0aGlzLmdsKCksXG5cdFx0XHR0aGlzLmRlcHRoQnVmZmVyKCksXG5cdFx0XHR0aGlzLnN0ZW5jaWxCdWZmZXIoKSxcblx0XHRcdHRoaXMubXVsdGlzYW1wbGluZygpLFxuXHRcdFx0dGhpcy5mcmFtZUJ1ZmZlclR5cGUoKSxcblx0XHRcdHRoaXMuYWN0aXZlU2NlbmUoKSxcblx0XHRcdHRoaXMuYWN0aXZlQ2FtZXJhKCksXG5cdFx0XHR0aGlzLmRpc2FibGVOb3JtYWxQYXNzKCksXG5cdFx0XHR0aGlzLnJlc29sdXRpb25TY2FsZSgpLFxuXHRcdF07XG5cblx0XHQvLyBJbml0aWFsaXplIGNvbXBvc2VyXG5cdFx0Y29uc3QgZWZmZWN0Q29tcG9zZXIgPSBuZXcgRWZmZWN0Q29tcG9zZXIoZ2wsIHtcblx0XHRcdGRlcHRoQnVmZmVyLFxuXHRcdFx0c3RlbmNpbEJ1ZmZlcixcblx0XHRcdG11bHRpc2FtcGxpbmc6IG11bHRpc2FtcGxpbmcgPiAwICYmIHdlYkdMMkF2YWlsYWJsZSA/IG11bHRpc2FtcGxpbmcgOiAwLFxuXHRcdFx0ZnJhbWVCdWZmZXJUeXBlLFxuXHRcdH0pO1xuXG5cdFx0Ly8gQWRkIHJlbmRlciBwYXNzXG5cdFx0ZWZmZWN0Q29tcG9zZXIuYWRkUGFzcyhuZXcgUmVuZGVyUGFzcyhzY2VuZSwgY2FtZXJhKSk7XG5cblx0XHQvLyBDcmVhdGUgbm9ybWFsIHBhc3Ncblx0XHRsZXQgZG93blNhbXBsaW5nUGFzcyA9IG51bGw7XG5cdFx0bGV0IG5vcm1hbFBhc3MgPSBudWxsO1xuXHRcdGlmICghZGlzYWJsZU5vcm1hbFBhc3MpIHtcblx0XHRcdG5vcm1hbFBhc3MgPSBuZXcgTm9ybWFsUGFzcyhzY2VuZSwgY2FtZXJhKTtcblx0XHRcdG5vcm1hbFBhc3MuZW5hYmxlZCA9IGZhbHNlO1xuXHRcdFx0ZWZmZWN0Q29tcG9zZXIuYWRkUGFzcyhub3JtYWxQYXNzKTtcblx0XHRcdGlmIChyZXNvbHV0aW9uU2NhbGUgIT09IHVuZGVmaW5lZCAmJiB3ZWJHTDJBdmFpbGFibGUpIHtcblx0XHRcdFx0ZG93blNhbXBsaW5nUGFzcyA9IG5ldyBEZXB0aERvd25zYW1wbGluZ1Bhc3MoeyBub3JtYWxCdWZmZXI6IG5vcm1hbFBhc3MudGV4dHVyZSwgcmVzb2x1dGlvblNjYWxlIH0pO1xuXHRcdFx0XHRkb3duU2FtcGxpbmdQYXNzLmVuYWJsZWQgPSBmYWxzZTtcblx0XHRcdFx0ZWZmZWN0Q29tcG9zZXIuYWRkUGFzcyhkb3duU2FtcGxpbmdQYXNzKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4geyBlZmZlY3RDb21wb3Nlciwgbm9ybWFsUGFzcywgZG93blNhbXBsaW5nUGFzcyB9O1xuXHR9KTtcblxuXHRwcml2YXRlIGNvbXBvc2VyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb21wb3NlckVudGl0aWVzKCkuZWZmZWN0Q29tcG9zZXIpO1xuXG5cdGFwaSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbeyBlZmZlY3RDb21wb3NlcjogY29tcG9zZXIsIG5vcm1hbFBhc3MsIGRvd25TYW1wbGluZ1Bhc3MgfSwgcmVzb2x1dGlvblNjYWxlLCBjYW1lcmEsIHNjZW5lXSA9IFtcblx0XHRcdHRoaXMuY29tcG9zZXJFbnRpdGllcygpLFxuXHRcdFx0dGhpcy5yZXNvbHV0aW9uU2NhbGUoKSxcblx0XHRcdHRoaXMuYWN0aXZlQ2FtZXJhKCksXG5cdFx0XHR0aGlzLmFjdGl2ZVNjZW5lKCksXG5cdFx0XTtcblx0XHRyZXR1cm4geyBjb21wb3Nlciwgbm9ybWFsUGFzcywgZG93blNhbXBsaW5nUGFzcywgcmVzb2x1dGlvblNjYWxlLCBjYW1lcmEsIHNjZW5lIH07XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuc2V0Q29tcG9zZXJTaXplKCk7XG5cdFx0dGhpcy51cGRhdGVQYXNzZXMoKTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdH1cblxuXHRwcml2YXRlIHNldENvbXBvc2VyU2l6ZSgpIHtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW2NvbXBvc2VyLCBzaXplXSA9IFt0aGlzLmNvbXBvc2VyKCksIHRoaXMuc2l6ZSgpXTtcblx0XHRcdGNvbXBvc2VyLnNldFNpemUoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVQYXNzZXMoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFt7IGVmZmVjdENvbXBvc2VyOiBjb21wb3Nlciwgbm9ybWFsUGFzcywgZG93blNhbXBsaW5nUGFzcyB9LCBpbnN0YW5jZSwgY2hpbGRyZW4sIGNhbWVyYV0gPSBbXG5cdFx0XHRcdHRoaXMuY29tcG9zZXJFbnRpdGllcygpLFxuXHRcdFx0XHR0aGlzLmNvbXBvc2VyUmVmLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuY29tcG9zZXJSZWYuY2hpbGRyZW4oJ25vbk9iamVjdHMnKSgpLFxuXHRcdFx0XHR0aGlzLmFjdGl2ZUNhbWVyYSgpLFxuXHRcdFx0XTtcblxuXHRcdFx0Y29uc3QgcGFzc2VzOiBQYXNzW10gPSBbXTtcblxuXHRcdFx0aWYgKGluc3RhbmNlICYmIGNvbXBvc2VyICYmIGNoaWxkcmVuLmxlbmd0aCkge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcblx0XHRcdFx0XHRpZiAoY2hpbGQgaW5zdGFuY2VvZiBFZmZlY3QpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGVmZmVjdHM6IEVmZmVjdFtdID0gW107XG5cblx0XHRcdFx0XHRcdHdoaWxlIChjaGlsZHJlbltpXSBpbnN0YW5jZW9mIEVmZmVjdCkgZWZmZWN0cy5wdXNoKGNoaWxkcmVuW2krK10gYXMgRWZmZWN0KTtcblx0XHRcdFx0XHRcdGktLTtcblxuXHRcdFx0XHRcdFx0Y29uc3QgcGFzcyA9IG5ldyBFZmZlY3RQYXNzKGNhbWVyYSwgLi4uZWZmZWN0cyk7XG5cdFx0XHRcdFx0XHRwYXNzZXMucHVzaChwYXNzKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGNoaWxkIGluc3RhbmNlb2YgUGFzcykge1xuXHRcdFx0XHRcdFx0cGFzc2VzLnB1c2goY2hpbGQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAoY29uc3QgcGFzcyBvZiBwYXNzZXMpIGNvbXBvc2VyLmFkZFBhc3MocGFzcyk7XG5cdFx0XHRcdGlmIChub3JtYWxQYXNzKSBub3JtYWxQYXNzLmVuYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHRpZiAoZG93blNhbXBsaW5nUGFzcykgZG93blNhbXBsaW5nUGFzcy5lbmFibGVkID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0Zm9yIChjb25zdCBwYXNzIG9mIHBhc3NlcykgY29tcG9zZXI/LnJlbW92ZVBhc3MocGFzcyk7XG5cdFx0XHRcdGlmIChub3JtYWxQYXNzKSBub3JtYWxQYXNzLmVuYWJsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYgKGRvd25TYW1wbGluZ1Bhc3MpIGRvd25TYW1wbGluZ1Bhc3MuZW5hYmxlZCA9IGZhbHNlO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoXG5cdFx0XHQoeyBkZWx0YSB9KSA9PiB7XG5cdFx0XHRcdGNvbnN0IFtlbmFibGVkLCBnbCwgYXV0b0NsZWFyLCBzdGVuY2lsQnVmZmVyLCBjb21wb3Nlcl0gPSBbXG5cdFx0XHRcdFx0dGhpcy5pbnB1dHMuZ2V0KCdlbmFibGVkJyksXG5cdFx0XHRcdFx0dGhpcy5nbCgpLFxuXHRcdFx0XHRcdHRoaXMuYXV0b0NsZWFyKCksXG5cdFx0XHRcdFx0dGhpcy5zdGVuY2lsQnVmZmVyKCksXG5cdFx0XHRcdFx0dGhpcy5jb21wb3NlcigpLFxuXHRcdFx0XHRdO1xuXHRcdFx0XHRpZiAoZW5hYmxlZCkge1xuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRBdXRvQ2xlYXIgPSBnbC5hdXRvQ2xlYXI7XG5cdFx0XHRcdFx0Z2wuYXV0b0NsZWFyID0gYXV0b0NsZWFyO1xuXHRcdFx0XHRcdGlmIChzdGVuY2lsQnVmZmVyICYmICFhdXRvQ2xlYXIpIGdsLmNsZWFyU3RlbmNpbCgpO1xuXHRcdFx0XHRcdGNvbXBvc2VyLnJlbmRlcihkZWx0YSk7XG5cdFx0XHRcdFx0Z2wuYXV0b0NsZWFyID0gY3VycmVudEF1dG9DbGVhcjtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXG5cdFx0XHRcdHByaW9yaXR5OiB0aGlzLmlucHV0cy5nZXQoJ2VuYWJsZWQnKSA/IHRoaXMuaW5wdXRzLmdldCgncmVuZGVyUHJpb3JpdHknKSA6IDAsXG5cdFx0XHR9LFxuXHRcdCk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Directive, Input, computed, effect } from '@angular/core';
|
|
2
|
+
import { getLocalState, injectNgtRef, injectNgtStore, is, signalStore } from 'angular-three';
|
|
3
|
+
import { BlendFunction, Effect } from 'postprocessing';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NgtpEffect {
|
|
6
|
+
set _blendFunction(blendFunction) {
|
|
7
|
+
this.inputs.set({ blendFunction });
|
|
8
|
+
}
|
|
9
|
+
set _opacity(opacity) {
|
|
10
|
+
this.inputs.set({ opacity });
|
|
11
|
+
}
|
|
12
|
+
constructor() {
|
|
13
|
+
this.inputs = signalStore();
|
|
14
|
+
this.effectRef = injectNgtRef();
|
|
15
|
+
this.defaultBlendFunction = BlendFunction.NORMAL;
|
|
16
|
+
this.nativeArgs = () => [];
|
|
17
|
+
this.blendFunction = this.inputs.select('blendFunction');
|
|
18
|
+
this.opacity = this.inputs.select('opacity');
|
|
19
|
+
this.store = injectNgtStore();
|
|
20
|
+
this.camera = this.store.select('camera');
|
|
21
|
+
this.invalidate = this.store.select('invalidate');
|
|
22
|
+
this.nativeInputs = computed(() => {
|
|
23
|
+
const effect = this.effectRef.nativeElement;
|
|
24
|
+
if (!effect)
|
|
25
|
+
return this.previousInputs || null;
|
|
26
|
+
const localState = getLocalState(effect);
|
|
27
|
+
if (!localState)
|
|
28
|
+
return this.previousInputs || null;
|
|
29
|
+
const nativeProps = localState.nativeProps.state();
|
|
30
|
+
delete nativeProps['__ngt_dummy_state__'];
|
|
31
|
+
if ('camera' in nativeProps) {
|
|
32
|
+
delete nativeProps['camera'];
|
|
33
|
+
}
|
|
34
|
+
if (!Object.keys(nativeProps).length)
|
|
35
|
+
return this.previousInputs || null;
|
|
36
|
+
return (this.previousInputs = nativeProps);
|
|
37
|
+
}, { equal: (a, b) => is.equ(a, b, { objects: 'shallow' }) });
|
|
38
|
+
this.args = computed(() => {
|
|
39
|
+
const [nativeInputs, nativeArgs] = [this.nativeInputs(), this.nativeArgs()];
|
|
40
|
+
if (nativeInputs) {
|
|
41
|
+
nativeArgs.push(nativeInputs);
|
|
42
|
+
}
|
|
43
|
+
return nativeArgs;
|
|
44
|
+
});
|
|
45
|
+
this.setBlendMode();
|
|
46
|
+
}
|
|
47
|
+
setBlendMode() {
|
|
48
|
+
effect(() => {
|
|
49
|
+
const [blendFunction, opacity, effect, invalidate] = [
|
|
50
|
+
this.blendFunction(),
|
|
51
|
+
this.opacity(),
|
|
52
|
+
this.effectRef.nativeElement,
|
|
53
|
+
this.invalidate(),
|
|
54
|
+
];
|
|
55
|
+
if (!effect)
|
|
56
|
+
return;
|
|
57
|
+
effect.blendMode.blendFunction =
|
|
58
|
+
!blendFunction && blendFunction !== 0 ? this.defaultBlendFunction : blendFunction;
|
|
59
|
+
if (opacity !== undefined)
|
|
60
|
+
effect.blendMode.opacity.value = opacity;
|
|
61
|
+
invalidate();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpEffect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
65
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: NgtpEffect, inputs: { effectRef: "effectRef", _blendFunction: ["blendFunction", "_blendFunction"], _opacity: ["opacity", "_opacity"] }, ngImport: i0 }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpEffect, decorators: [{
|
|
68
|
+
type: Directive
|
|
69
|
+
}], ctorParameters: function () { return []; }, propDecorators: { effectRef: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], _blendFunction: [{
|
|
72
|
+
type: Input,
|
|
73
|
+
args: [{ alias: 'blendFunction' }]
|
|
74
|
+
}], _opacity: [{
|
|
75
|
+
type: Input,
|
|
76
|
+
args: [{ alias: 'opacity' }]
|
|
77
|
+
}] } });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wb3N0cHJvY2Vzc2luZy9zcmMvbGliL2VmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVF2RCxNQUFNLE9BQWdCLFVBQVU7SUFLL0IsSUFBdUMsY0FBYyxDQUFDLGFBQTRCO1FBQ2pGLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBaUMsUUFBUSxDQUFDLE9BQWU7UUFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUF3Q0Q7UUFsREEsV0FBTSxHQUFHLFdBQVcsRUFBbUIsQ0FBQztRQUUvQixjQUFTLEdBQUcsWUFBWSxFQUFXLENBQUM7UUFVbkMseUJBQW9CLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUM1QyxlQUFVLEdBQXlCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUV0RCxrQkFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BELFlBQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU5QixVQUFLLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDekIsV0FBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENB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bnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgaW5qZWN0Tmd0UmVmLCBpbmplY3ROZ3RTdG9yZSwgaXMsIHNpZ25hbFN0b3JlLCB0eXBlIE5ndEFueVJlY29yZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgQmxlbmRGdW5jdGlvbiwgRWZmZWN0IH0gZnJvbSAncG9zdHByb2Nlc3NpbmcnO1xuXG5leHBvcnQgdHlwZSBOZ3RwRWZmZWN0U3RhdGUgPSB7XG5cdGJsZW5kRnVuY3Rpb24/OiBCbGVuZEZ1bmN0aW9uO1xuXHRvcGFjaXR5PzogbnVtYmVyO1xufTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmd0cEVmZmVjdDxURWZmZWN0IGV4dGVuZHMgRWZmZWN0PiB7XG5cdGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHBFZmZlY3RTdGF0ZT4oKTtcblxuXHRASW5wdXQoKSBlZmZlY3RSZWYgPSBpbmplY3ROZ3RSZWY8VEVmZmVjdD4oKTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2JsZW5kRnVuY3Rpb24nIH0pIHNldCBfYmxlbmRGdW5jdGlvbihibGVuZEZ1bmN0aW9uOiBCbGVuZEZ1bmN0aW9uKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgYmxlbmRGdW5jdGlvbiB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnb3BhY2l0eScgfSkgc2V0IF9vcGFjaXR5KG9wYWNpdHk6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG9wYWNpdHkgfSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZGVmYXVsdEJsZW5kRnVuY3Rpb24gPSBCbGVuZEZ1bmN0aW9uLk5PUk1BTDtcblx0cHJvdGVjdGVkIG5hdGl2ZUFyZ3M6ICgpID0+IE5ndEFueVJlY29yZFtdID0gKCkgPT4gW107XG5cblx0YmxlbmRGdW5jdGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYmxlbmRGdW5jdGlvbicpO1xuXHRvcGFjaXR5ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdvcGFjaXR5Jyk7XG5cblx0cHJvdGVjdGVkIHN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0cHJvdGVjdGVkIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblxuXHRwcml2YXRlIHByZXZpb3VzSW5wdXRzPzogTmd0QW55UmVjb3JkO1xuXG5cdHByaXZhdGUgbmF0aXZlSW5wdXRzID0gY29tcHV0ZWQoXG5cdFx0KCkgPT4ge1xuXHRcdFx0Y29uc3QgZWZmZWN0ID0gdGhpcy5lZmZlY3RSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghZWZmZWN0KSByZXR1cm4gdGhpcy5wcmV2aW91c0lucHV0cyB8fCBudWxsO1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZWZmZWN0KTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuIHRoaXMucHJldmlvdXNJbnB1dHMgfHwgbnVsbDtcblx0XHRcdGNvbnN0IG5hdGl2ZVByb3BzID0gbG9jYWxTdGF0ZS5uYXRpdmVQcm9wcy5zdGF0ZSgpO1xuXHRcdFx0ZGVsZXRlIG5hdGl2ZVByb3BzWydfX25ndF9kdW1teV9zdGF0ZV9fJ107XG5cdFx0XHRpZiAoJ2NhbWVyYScgaW4gbmF0aXZlUHJvcHMpIHtcblx0XHRcdFx0ZGVsZXRlIG5hdGl2ZVByb3BzWydjYW1lcmEnXTtcblx0XHRcdH1cblx0XHRcdGlmICghT2JqZWN0LmtleXMobmF0aXZlUHJvcHMpLmxlbmd0aCkgcmV0dXJuIHRoaXMucHJldmlvdXNJbnB1dHMgfHwgbnVsbDtcblx0XHRcdHJldHVybiAodGhpcy5wcmV2aW91c0lucHV0cyA9IG5hdGl2ZVByb3BzKTtcblx0XHR9LFxuXHRcdHsgZXF1YWw6IChhLCBiKSA9PiBpcy5lcXUoYSwgYiwgeyBvYmplY3RzOiAnc2hhbGxvdycgfSkgfSxcblx0KTtcblxuXHRhcmdzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtuYXRpdmVJbnB1dHMsIG5hdGl2ZUFyZ3NdID0gW3RoaXMubmF0aXZlSW5wdXRzKCksIHRoaXMubmF0aXZlQXJncygpXTtcblx0XHRpZiAobmF0aXZlSW5wdXRzKSB7XG5cdFx0XHRuYXRpdmVBcmdzLnB1c2gobmF0aXZlSW5wdXRzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmF0aXZlQXJncztcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5zZXRCbGVuZE1vZGUoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0QmxlbmRNb2RlKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbYmxlbmRGdW5jdGlvbiwgb3BhY2l0eSwgZWZmZWN0LCBpbnZhbGlkYXRlXSA9IFtcblx0XHRcdFx0dGhpcy5ibGVuZEZ1bmN0aW9uKCksXG5cdFx0XHRcdHRoaXMub3BhY2l0eSgpLFxuXHRcdFx0XHR0aGlzLmVmZmVjdFJlZi5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdF07XG5cblx0XHRcdGlmICghZWZmZWN0KSByZXR1cm47XG5cdFx0XHRlZmZlY3QuYmxlbmRNb2RlLmJsZW5kRnVuY3Rpb24gPVxuXHRcdFx0XHQhYmxlbmRGdW5jdGlvbiAmJiBibGVuZEZ1bmN0aW9uICE9PSAwID8gdGhpcy5kZWZhdWx0QmxlbmRGdW5jdGlvbiA6IGJsZW5kRnVuY3Rpb247XG5cdFx0XHRpZiAob3BhY2l0eSAhPT0gdW5kZWZpbmVkKSBlZmZlY3QuYmxlbmRNb2RlLm9wYWNpdHkudmFsdWUgPSBvcGFjaXR5O1xuXHRcdFx0aW52YWxpZGF0ZSgpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
|
|
2
|
+
import { NgtArgs, extend } from 'angular-three';
|
|
3
|
+
import { BlendFunction, BloomEffect } from 'postprocessing';
|
|
4
|
+
import { NgtpEffect } from '../../effect';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ BloomEffect });
|
|
7
|
+
export class NgtpBloom extends NgtpEffect {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.defaultBlendFunction = BlendFunction.ADD;
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpBloom, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtpBloom, isStandalone: true, selector: "ngtp-bloom", usesInheritance: true, ngImport: i0, template: `
|
|
14
|
+
<ngt-bloom-effect ngtCompound *args="args()" [ref]="effectRef" [camera]="camera()">
|
|
15
|
+
<ng-content />
|
|
16
|
+
</ngt-bloom-effect>
|
|
17
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpBloom, decorators: [{
|
|
20
|
+
type: Component,
|
|
21
|
+
args: [{
|
|
22
|
+
selector: 'ngtp-bloom',
|
|
23
|
+
standalone: true,
|
|
24
|
+
template: `
|
|
25
|
+
<ngt-bloom-effect ngtCompound *args="args()" [ref]="effectRef" [camera]="camera()">
|
|
26
|
+
<ng-content />
|
|
27
|
+
</ngt-bloom-effect>
|
|
28
|
+
`,
|
|
29
|
+
imports: [NgtArgs],
|
|
30
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
31
|
+
}]
|
|
32
|
+
}] });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvb20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9ibG9vbS9ibG9vbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUEyQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQXdCLE1BQU0sY0FBYyxDQUFDOztBQUVoRSxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBbUJ4QixNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQXVCO0lBWHREOztRQVlVLHlCQUFvQixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7S0FDbEQ7OEdBRlksU0FBUztrR0FBVCxTQUFTLDZGQVJYOzs7O0VBSVQsNERBQ1MsT0FBTzs7MkZBR0wsU0FBUztrQkFYckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBleHRlbmQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEJsZW5kRnVuY3Rpb24sIEJsb29tRWZmZWN0LCB0eXBlIEJsb29tRWZmZWN0T3B0aW9ucyB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIHR5cGUgTmd0cEVmZmVjdFN0YXRlIH0gZnJvbSAnLi4vLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgQmxvb21FZmZlY3QgfSk7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0J25ndHAtYmxvb20nOiBCbG9vbUVmZmVjdE9wdGlvbnMgJiBOZ3RwRWZmZWN0U3RhdGU7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1ibG9vbScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ibG9vbS1lZmZlY3Qgbmd0Q29tcG91bmQgKmFyZ3M9XCJhcmdzKClcIiBbcmVmXT1cImVmZmVjdFJlZlwiIFtjYW1lcmFdPVwiY2FtZXJhKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtYmxvb20tZWZmZWN0PlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cEJsb29tIGV4dGVuZHMgTmd0cEVmZmVjdDxCbG9vbUVmZmVjdD4ge1xuXHRvdmVycmlkZSBkZWZhdWx0QmxlbmRGdW5jdGlvbiA9IEJsZW5kRnVuY3Rpb24uQUREO1xufVxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
|
|
2
|
+
import { NgtArgs, extend } from 'angular-three';
|
|
3
|
+
import { BrightnessContrastEffect } from 'postprocessing';
|
|
4
|
+
import { NgtpEffect } from '../../effect';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ BrightnessContrastEffect });
|
|
7
|
+
export class NgtpBrightnessContrast extends NgtpEffect {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpBrightnessContrast, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtpBrightnessContrast, isStandalone: true, selector: "ngtp-brightness-contrast", usesInheritance: true, ngImport: i0, template: `
|
|
10
|
+
<ngt-brightness-contrast-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</ngt-brightness-contrast-effect>
|
|
13
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpBrightnessContrast, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{
|
|
18
|
+
selector: 'ngtp-brightness-contrast',
|
|
19
|
+
standalone: true,
|
|
20
|
+
template: `
|
|
21
|
+
<ngt-brightness-contrast-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
22
|
+
<ng-content />
|
|
23
|
+
</ngt-brightness-contrast-effect>
|
|
24
|
+
`,
|
|
25
|
+
imports: [NgtArgs],
|
|
26
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZ2h0bmVzcy1jb250cmFzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2JyaWdodG5lc3MtY29udHJhc3QvYnJpZ2h0bmVzcy1jb250cmFzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQXdCLE1BQU0sY0FBYyxDQUFDOztBQUVoRSxNQUFNLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7QUFtQnJDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxVQUFvQzs4R0FBbkUsc0JBQXNCO2tHQUF0QixzQkFBc0IsMkdBUnhCOzs7O0VBSVQsNERBQ1MsT0FBTzs7MkZBR0wsc0JBQXNCO2tCQVhsQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBCcmlnaHRuZXNzQ29udHJhc3RFZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBOZ3RwRWZmZWN0LCB0eXBlIE5ndHBFZmZlY3RTdGF0ZSB9IGZyb20gJy4uLy4uL2VmZmVjdCc7XG5cbmV4dGVuZCh7IEJyaWdodG5lc3NDb250cmFzdEVmZmVjdCB9KTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQnbmd0cC1icmlnaHRuZXNzLWNvbnRyYXN0JzogeyBicmlnaHRuZXNzPzogbnVtYmVyOyBjb250cmFzdD86IG51bWJlciB9ICYgTmd0cEVmZmVjdFN0YXRlO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtYnJpZ2h0bmVzcy1jb250cmFzdCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1icmlnaHRuZXNzLWNvbnRyYXN0LWVmZmVjdCBuZ3RDb21wb3VuZCAqYXJncz1cImFyZ3MoKVwiIFtjYW1lcmFdPVwiY2FtZXJhKClcIiBbcmVmXT1cImVmZmVjdFJlZlwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1icmlnaHRuZXNzLWNvbnRyYXN0LWVmZmVjdD5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBCcmlnaHRuZXNzQ29udHJhc3QgZXh0ZW5kcyBOZ3RwRWZmZWN0PEJyaWdodG5lc3NDb250cmFzdEVmZmVjdD4ge31cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
|
|
2
|
+
import { NgtArgs, extend } from 'angular-three';
|
|
3
|
+
import { ColorDepthEffect } from 'postprocessing';
|
|
4
|
+
import { NgtpEffect } from '../../effect';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ ColorDepthEffect });
|
|
7
|
+
export class NgtpColorDepth extends NgtpEffect {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpColorDepth, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtpColorDepth, isStandalone: true, selector: "ngtp-color-depth", usesInheritance: true, ngImport: i0, template: `
|
|
10
|
+
<ngt-color-depth-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</ngt-color-depth-effect>
|
|
13
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpColorDepth, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{
|
|
18
|
+
selector: 'ngtp-color-depth',
|
|
19
|
+
standalone: true,
|
|
20
|
+
template: `
|
|
21
|
+
<ngt-color-depth-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
22
|
+
<ng-content />
|
|
23
|
+
</ngt-color-depth-effect>
|
|
24
|
+
`,
|
|
25
|
+
imports: [NgtArgs],
|
|
26
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItZGVwdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9jb2xvci1kZXB0aC9jb2xvci1kZXB0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQXdCLE1BQU0sY0FBYyxDQUFDOztBQUVoRSxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7QUFtQjdCLE1BQU0sT0FBTyxjQUFlLFNBQVEsVUFBNEI7OEdBQW5ELGNBQWM7a0dBQWQsY0FBYyxtR0FSaEI7Ozs7RUFJVCw0REFDUyxPQUFPOzsyRkFHTCxjQUFjO2tCQVgxQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBDb2xvckRlcHRoRWZmZWN0IH0gZnJvbSAncG9zdHByb2Nlc3NpbmcnO1xuaW1wb3J0IHsgTmd0cEVmZmVjdCwgdHlwZSBOZ3RwRWZmZWN0U3RhdGUgfSBmcm9tICcuLi8uLi9lZmZlY3QnO1xuXG5leHRlbmQoeyBDb2xvckRlcHRoRWZmZWN0IH0pO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdCduZ3RwLWNvbG9yLWRlcHRoJzogeyBiaXRzPzogbnVtYmVyIH0gJiBOZ3RwRWZmZWN0U3RhdGU7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1jb2xvci1kZXB0aCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1jb2xvci1kZXB0aC1lZmZlY3Qgbmd0Q29tcG91bmQgKmFyZ3M9XCJhcmdzKClcIiBbY2FtZXJhXT1cImNhbWVyYSgpXCIgW3JlZl09XCJlZmZlY3RSZWZcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtY29sb3ItZGVwdGgtZWZmZWN0PlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cENvbG9yRGVwdGggZXh0ZW5kcyBOZ3RwRWZmZWN0PENvbG9yRGVwdGhFZmZlY3Q+IHt9XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
|
|
2
|
+
import { NgtArgs, extend } from 'angular-three';
|
|
3
|
+
import { DepthEffect } from 'postprocessing';
|
|
4
|
+
import { NgtpEffect } from '../../effect';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ DepthEffect });
|
|
7
|
+
export class NgtpDepth extends NgtpEffect {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpDepth, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtpDepth, isStandalone: true, selector: "ngtp-depth", usesInheritance: true, ngImport: i0, template: `
|
|
10
|
+
<ngt-depth-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</ngt-depth-effect>
|
|
13
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpDepth, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{
|
|
18
|
+
selector: 'ngtp-depth',
|
|
19
|
+
standalone: true,
|
|
20
|
+
template: `
|
|
21
|
+
<ngt-depth-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
22
|
+
<ng-content />
|
|
23
|
+
</ngt-depth-effect>
|
|
24
|
+
`,
|
|
25
|
+
imports: [NgtArgs],
|
|
26
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9kZXB0aC9kZXB0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUF3QixNQUFNLGNBQWMsQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQW1CeEIsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUF1Qjs4R0FBekMsU0FBUztrR0FBVCxTQUFTLDZGQVJYOzs7O0VBSVQsNERBQ1MsT0FBTzs7MkZBR0wsU0FBUztrQkFYckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBleHRlbmQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IERlcHRoRWZmZWN0IH0gZnJvbSAncG9zdHByb2Nlc3NpbmcnO1xuaW1wb3J0IHsgTmd0cEVmZmVjdCwgdHlwZSBOZ3RwRWZmZWN0U3RhdGUgfSBmcm9tICcuLi8uLi9lZmZlY3QnO1xuXG5leHRlbmQoeyBEZXB0aEVmZmVjdCB9KTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQnbmd0cC1kZXB0aCc6IHsgaW52ZXJ0ZWQ/OiBib29sZWFuIH0gJiBOZ3RwRWZmZWN0U3RhdGU7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1kZXB0aCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1kZXB0aC1lZmZlY3Qgbmd0Q29tcG91bmQgKmFyZ3M9XCJhcmdzKClcIiBbY2FtZXJhXT1cImNhbWVyYSgpXCIgW3JlZl09XCJlZmZlY3RSZWZcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZGVwdGgtZWZmZWN0PlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cERlcHRoIGV4dGVuZHMgTmd0cEVmZmVjdDxEZXB0aEVmZmVjdD4ge31cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
|
|
2
|
+
import { NgtArgs, extend } from 'angular-three';
|
|
3
|
+
import { DotScreenEffect } from 'postprocessing';
|
|
4
|
+
import { NgtpEffect } from '../../effect';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ DotScreenEffect });
|
|
7
|
+
export class NgtpDotScreen extends NgtpEffect {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpDotScreen, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtpDotScreen, isStandalone: true, selector: "ngtp-dot-screen", usesInheritance: true, ngImport: i0, template: `
|
|
10
|
+
<ngt-dot-screen-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</ngt-dot-screen-effect>
|
|
13
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpDotScreen, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{
|
|
18
|
+
selector: 'ngtp-dot-screen',
|
|
19
|
+
standalone: true,
|
|
20
|
+
template: `
|
|
21
|
+
<ngt-dot-screen-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
22
|
+
<ng-content />
|
|
23
|
+
</ngt-dot-screen-effect>
|
|
24
|
+
`,
|
|
25
|
+
imports: [NgtArgs],
|
|
26
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90LXNjcmVlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2RvdC1zY3JlZW4vZG90LXNjcmVlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUF3QixNQUFNLGNBQWMsQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztBQW1CNUIsTUFBTSxPQUFPLGFBQWMsU0FBUSxVQUEyQjs4R0FBakQsYUFBYTtrR0FBYixhQUFhLGtHQVJmOzs7O0VBSVQsNERBQ1MsT0FBTzs7MkZBR0wsYUFBYTtrQkFYekIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGV4dGVuZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgRG90U2NyZWVuRWZmZWN0IH0gZnJvbSAncG9zdHByb2Nlc3NpbmcnO1xuaW1wb3J0IHsgTmd0cEVmZmVjdCwgdHlwZSBOZ3RwRWZmZWN0U3RhdGUgfSBmcm9tICcuLi8uLi9lZmZlY3QnO1xuXG5leHRlbmQoeyBEb3RTY3JlZW5FZmZlY3QgfSk7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0J25ndHAtZG90LXNjcmVlbic6IHsgYW5nbGU/OiBudW1iZXI7IHNjYWxlPzogbnVtYmVyIH0gJiBOZ3RwRWZmZWN0U3RhdGU7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1kb3Qtc2NyZWVuJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWRvdC1zY3JlZW4tZWZmZWN0IG5ndENvbXBvdW5kICphcmdzPVwiYXJncygpXCIgW2NhbWVyYV09XCJjYW1lcmEoKVwiIFtyZWZdPVwiZWZmZWN0UmVmXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWRvdC1zY3JlZW4tZWZmZWN0PlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cERvdFNjcmVlbiBleHRlbmRzIE5ndHBFZmZlY3Q8RG90U2NyZWVuRWZmZWN0PiB7fVxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
|
|
2
|
+
import { NgtArgs, extend } from 'angular-three';
|
|
3
|
+
import { HueSaturationEffect } from 'postprocessing';
|
|
4
|
+
import { NgtpEffect } from '../../effect';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ HueSaturationEffect });
|
|
7
|
+
export class NgtpHueSaturation extends NgtpEffect {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpHueSaturation, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtpHueSaturation, isStandalone: true, selector: "ngtp-hue-saturation", usesInheritance: true, ngImport: i0, template: `
|
|
10
|
+
<ngt-hue-saturation-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
11
|
+
<ng-content />
|
|
12
|
+
</ngt-hue-saturation-effect>
|
|
13
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtpHueSaturation, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{
|
|
18
|
+
selector: 'ngtp-hue-saturation',
|
|
19
|
+
standalone: true,
|
|
20
|
+
template: `
|
|
21
|
+
<ngt-hue-saturation-effect ngtCompound *args="args()" [camera]="camera()" [ref]="effectRef">
|
|
22
|
+
<ng-content />
|
|
23
|
+
</ngt-hue-saturation-effect>
|
|
24
|
+
`,
|
|
25
|
+
imports: [NgtArgs],
|
|
26
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVlLXNhdHVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9odWUtc2F0dXJhdGlvbi9odWUtc2F0dXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQXdCLE1BQU0sY0FBYyxDQUFDOztBQUVoRSxNQUFNLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFtQmhDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxVQUErQjs4R0FBekQsaUJBQWlCO2tHQUFqQixpQkFBaUIsc0dBUm5COzs7O0VBSVQsNERBQ1MsT0FBTzs7MkZBR0wsaUJBQWlCO2tCQVg3QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBIdWVTYXR1cmF0aW9uRWZmZWN0IH0gZnJvbSAncG9zdHByb2Nlc3NpbmcnO1xuaW1wb3J0IHsgTmd0cEVmZmVjdCwgdHlwZSBOZ3RwRWZmZWN0U3RhdGUgfSBmcm9tICcuLi8uLi9lZmZlY3QnO1xuXG5leHRlbmQoeyBIdWVTYXR1cmF0aW9uRWZmZWN0IH0pO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdCduZ3RwLWh1ZS1zYXR1cmF0aW9uJzogeyBodWU/OiBudW1iZXI7IHNhdHVyYXRpb24/OiBudW1iZXIgfSAmIE5ndHBFZmZlY3RTdGF0ZTtcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RwLWh1ZS1zYXR1cmF0aW9uJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWh1ZS1zYXR1cmF0aW9uLWVmZmVjdCBuZ3RDb21wb3VuZCAqYXJncz1cImFyZ3MoKVwiIFtjYW1lcmFdPVwiY2FtZXJhKClcIiBbcmVmXT1cImVmZmVjdFJlZlwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1odWUtc2F0dXJhdGlvbi1lZmZlY3Q+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RwSHVlU2F0dXJhdGlvbiBleHRlbmRzIE5ndHBFZmZlY3Q8SHVlU2F0dXJhdGlvbkVmZmVjdD4ge31cbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from './bloom/bloom';
|
|
2
|
+
export * from './brightness-contrast/brightness-contrast';
|
|
3
|
+
export * from './color-depth/color-depth';
|
|
4
|
+
export * from './depth/depth';
|
|
5
|
+
export * from './dot-screen/dot-screen';
|
|
6
|
+
export * from './hue-saturation/hue-saturation';
|
|
7
|
+
export * from './lut/lut';
|
|
8
|
+
export * from './noise/noise';
|
|
9
|
+
export * from './pixelation/pixelation';
|
|
10
|
+
export * from './scanline/scanline';
|
|
11
|
+
export * from './sepia/sepia';
|
|
12
|
+
export * from './shock-wave/shock-wave';
|
|
13
|
+
export * from './smaa/smaa';
|
|
14
|
+
export * from './ssao/ssao';
|
|
15
|
+
export * from './tilt-shift/tilt-shift';
|
|
16
|
+
export * from './tone-mapping/tone-mapping';
|
|
17
|
+
export * from './vignette/vignette';
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ibG9vbS9ibG9vbSc7XG5leHBvcnQgKiBmcm9tICcuL2JyaWdodG5lc3MtY29udHJhc3QvYnJpZ2h0bmVzcy1jb250cmFzdCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbG9yLWRlcHRoL2NvbG9yLWRlcHRoJztcbmV4cG9ydCAqIGZyb20gJy4vZGVwdGgvZGVwdGgnO1xuZXhwb3J0ICogZnJvbSAnLi9kb3Qtc2NyZWVuL2RvdC1zY3JlZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9odWUtc2F0dXJhdGlvbi9odWUtc2F0dXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2x1dC9sdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9ub2lzZS9ub2lzZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpeGVsYXRpb24vcGl4ZWxhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3NjYW5saW5lL3NjYW5saW5lJztcbmV4cG9ydCAqIGZyb20gJy4vc2VwaWEvc2VwaWEnO1xuZXhwb3J0ICogZnJvbSAnLi9zaG9jay13YXZlL3Nob2NrLXdhdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFhL3NtYWEnO1xuZXhwb3J0ICogZnJvbSAnLi9zc2FvL3NzYW8nO1xuZXhwb3J0ICogZnJvbSAnLi90aWx0LXNoaWZ0L3RpbHQtc2hpZnQnO1xuZXhwb3J0ICogZnJvbSAnLi90b25lLW1hcHBpbmcvdG9uZS1tYXBwaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vdmlnbmV0dGUvdmlnbmV0dGUnO1xuIl19
|