angular-three-postprocessing 2.13.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/angular-three-postprocessing-n8ao.mjs +3 -4
- package/fesm2022/angular-three-postprocessing-n8ao.mjs.map +1 -1
- package/fesm2022/angular-three-postprocessing.mjs +93 -121
- package/fesm2022/angular-three-postprocessing.mjs.map +1 -1
- package/package.json +4 -8
- package/esm2022/angular-three-postprocessing.mjs +0 -5
- package/esm2022/index.mjs +0 -4
- package/esm2022/lib/effect-composer.mjs +0 -187
- package/esm2022/lib/effect.mjs +0 -49
- package/esm2022/lib/effects/ascii.mjs +0 -124
- package/esm2022/lib/effects/bloom.mjs +0 -39
- package/esm2022/lib/effects/brightness-contrast.mjs +0 -38
- package/esm2022/lib/effects/chromatic-abberation.mjs +0 -38
- package/esm2022/lib/effects/color-average.mjs +0 -33
- package/esm2022/lib/effects/color-depth.mjs +0 -38
- package/esm2022/lib/effects/depth-of-field.mjs +0 -50
- package/esm2022/lib/effects/depth.mjs +0 -38
- package/esm2022/lib/effects/dot-screen.mjs +0 -38
- package/esm2022/lib/effects/fxaa.mjs +0 -38
- package/esm2022/lib/effects/glitch.mjs +0 -59
- package/esm2022/lib/effects/god-rays.mjs +0 -41
- package/esm2022/lib/effects/grid.mjs +0 -42
- package/esm2022/lib/effects/hue-saturation.mjs +0 -38
- package/esm2022/lib/effects/index.mjs +0 -29
- package/esm2022/lib/effects/lens-flare.mjs +0 -195
- package/esm2022/lib/effects/lut.mjs +0 -50
- package/esm2022/lib/effects/noise.mjs +0 -39
- package/esm2022/lib/effects/outline.mjs +0 -146
- package/esm2022/lib/effects/pixelation.mjs +0 -34
- package/esm2022/lib/effects/scanline.mjs +0 -43
- package/esm2022/lib/effects/sepia.mjs +0 -38
- package/esm2022/lib/effects/shock-wave.mjs +0 -38
- package/esm2022/lib/effects/smaa.mjs +0 -38
- package/esm2022/lib/effects/tilt-shift-2.mjs +0 -121
- package/esm2022/lib/effects/tilt-shift.mjs +0 -39
- package/esm2022/lib/effects/tone-mapping.mjs +0 -81
- package/esm2022/lib/effects/vignette.mjs +0 -38
- package/esm2022/lib/effects/water.mjs +0 -64
- package/esm2022/n8ao/angular-three-postprocessing-n8ao.mjs +0 -5
- package/esm2022/n8ao/index.mjs +0 -2
- package/esm2022/n8ao/lib/n8ao.mjs +0 -82
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "angular-three-postprocessing",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
],
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@angular/common": ">=
|
|
26
|
-
"@angular/core": ">=
|
|
25
|
+
"@angular/common": ">=19.0.0 <20.0.0",
|
|
26
|
+
"@angular/core": ">=19.0.0 <20.0.0",
|
|
27
27
|
"maath": ">=0.10.0 <0.11.0",
|
|
28
28
|
"n8ao": "^1.9.0",
|
|
29
29
|
"postprocessing": "^6.0.0",
|
|
30
|
-
"three": ">=0.148.0 <0.
|
|
30
|
+
"three": ">=0.148.0 <0.172.0",
|
|
31
31
|
"three-stdlib": "^2.0.0"
|
|
32
32
|
},
|
|
33
33
|
"peerDependenciesMeta": {
|
|
@@ -51,14 +51,10 @@
|
|
|
51
51
|
},
|
|
52
52
|
".": {
|
|
53
53
|
"types": "./index.d.ts",
|
|
54
|
-
"esm2022": "./esm2022/angular-three-postprocessing.mjs",
|
|
55
|
-
"esm": "./esm2022/angular-three-postprocessing.mjs",
|
|
56
54
|
"default": "./fesm2022/angular-three-postprocessing.mjs"
|
|
57
55
|
},
|
|
58
56
|
"./n8ao": {
|
|
59
57
|
"types": "./n8ao/index.d.ts",
|
|
60
|
-
"esm2022": "./esm2022/n8ao/angular-three-postprocessing-n8ao.mjs",
|
|
61
|
-
"esm": "./esm2022/n8ao/angular-three-postprocessing-n8ao.mjs",
|
|
62
58
|
"default": "./fesm2022/angular-three-postprocessing-n8ao.mjs"
|
|
63
59
|
}
|
|
64
60
|
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1wb3N0cHJvY2Vzc2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2FuZ3VsYXItdGhyZWUtcG9zdHByb2Nlc3NpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
package/esm2022/index.mjs
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './lib/effect';
|
|
2
|
-
export * from './lib/effect-composer';
|
|
3
|
-
export * from './lib/effects';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZWZmZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VmZmVjdC1jb21wb3Nlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lZmZlY3RzJztcbiJdfQ==
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, Injector, computed, effect, inject, input, viewChild, } from '@angular/core';
|
|
2
|
-
import { extend, getLocalState, injectBeforeRender, injectStore, pick } from 'angular-three';
|
|
3
|
-
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
4
|
-
import { DepthDownsamplingPass, Effect, EffectAttribute, EffectComposer, EffectPass, NormalPass, Pass, RenderPass, } from 'postprocessing';
|
|
5
|
-
import { Group, HalfFloatType, NoToneMapping } from 'three';
|
|
6
|
-
import { isWebGL2Available } from 'three-stdlib';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
const defaultOptions = {
|
|
9
|
-
enabled: true,
|
|
10
|
-
renderPriority: 1,
|
|
11
|
-
autoClear: true,
|
|
12
|
-
multisampling: 8,
|
|
13
|
-
frameBufferType: HalfFloatType,
|
|
14
|
-
};
|
|
15
|
-
function isConvolution(effect) {
|
|
16
|
-
return (effect.getAttributes() & EffectAttribute.CONVOLUTION) === EffectAttribute.CONVOLUTION;
|
|
17
|
-
}
|
|
18
|
-
export class NgtpEffectComposer {
|
|
19
|
-
constructor() {
|
|
20
|
-
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
21
|
-
this.injector = inject(Injector);
|
|
22
|
-
this.store = injectStore();
|
|
23
|
-
this.size = this.store.select('size');
|
|
24
|
-
this.gl = this.store.select('gl');
|
|
25
|
-
this.defaultScene = this.store.select('scene');
|
|
26
|
-
this.defaultCamera = this.store.select('camera');
|
|
27
|
-
this.depthBuffer = pick(this.options, 'depthBuffer');
|
|
28
|
-
this.stencilBuffer = pick(this.options, 'stencilBuffer');
|
|
29
|
-
this.multisampling = pick(this.options, 'multisampling');
|
|
30
|
-
this.frameBufferType = pick(this.options, 'frameBufferType');
|
|
31
|
-
this.enableNormalPass = pick(this.options, 'enableNormalPass');
|
|
32
|
-
this.resolutionScale = pick(this.options, 'resolutionScale');
|
|
33
|
-
this.enabled = pick(this.options, 'enabled');
|
|
34
|
-
this.renderPriority = pick(this.options, 'renderPriority');
|
|
35
|
-
this.scene = computed(() => this.options().scene ?? this.defaultScene());
|
|
36
|
-
this.camera = computed(() => this.options().camera ?? this.defaultCamera());
|
|
37
|
-
this.groupRef = viewChild.required('group');
|
|
38
|
-
this.priority = computed(() => {
|
|
39
|
-
const enabled = this.enabled();
|
|
40
|
-
if (!enabled)
|
|
41
|
-
return 0;
|
|
42
|
-
return this.renderPriority();
|
|
43
|
-
});
|
|
44
|
-
this.composerData = computed(() => {
|
|
45
|
-
const webGL2Available = isWebGL2Available();
|
|
46
|
-
const [gl, scene, camera, depthBuffer, stencilBuffer, multisampling, frameBufferType, enableNormalPass, resolutionScale,] = [
|
|
47
|
-
this.gl(),
|
|
48
|
-
this.scene(),
|
|
49
|
-
this.camera(),
|
|
50
|
-
this.depthBuffer(),
|
|
51
|
-
this.stencilBuffer(),
|
|
52
|
-
this.multisampling(),
|
|
53
|
-
this.frameBufferType(),
|
|
54
|
-
this.enableNormalPass(),
|
|
55
|
-
this.resolutionScale(),
|
|
56
|
-
];
|
|
57
|
-
// initialize composer
|
|
58
|
-
const composer = new EffectComposer(gl, {
|
|
59
|
-
depthBuffer,
|
|
60
|
-
stencilBuffer,
|
|
61
|
-
multisampling: multisampling > 0 && webGL2Available ? multisampling : 0,
|
|
62
|
-
frameBufferType,
|
|
63
|
-
});
|
|
64
|
-
// add render pass
|
|
65
|
-
composer.addPass(new RenderPass(scene, camera));
|
|
66
|
-
// create normal pass
|
|
67
|
-
let downSamplingPass = null;
|
|
68
|
-
let normalPass = null;
|
|
69
|
-
if (enableNormalPass) {
|
|
70
|
-
normalPass = new NormalPass(scene, camera);
|
|
71
|
-
normalPass.enabled = false;
|
|
72
|
-
composer.addPass(normalPass);
|
|
73
|
-
if (resolutionScale !== undefined && webGL2Available) {
|
|
74
|
-
downSamplingPass = new DepthDownsamplingPass({ normalBuffer: normalPass.texture, resolutionScale });
|
|
75
|
-
downSamplingPass.enabled = false;
|
|
76
|
-
composer.addPass(downSamplingPass);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return { composer, normalPass, downSamplingPass };
|
|
80
|
-
});
|
|
81
|
-
extend({ Group });
|
|
82
|
-
// NOTE: Disable tone mapping because threejs disallows tonemapping on render targets
|
|
83
|
-
effect((onCleanup) => {
|
|
84
|
-
const gl = this.gl();
|
|
85
|
-
const currentTonemapping = gl.toneMapping;
|
|
86
|
-
gl.toneMapping = NoToneMapping;
|
|
87
|
-
onCleanup(() => {
|
|
88
|
-
gl.toneMapping = currentTonemapping;
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
effect(() => {
|
|
92
|
-
const [{ composer }, { width, height }] = [this.composerData(), this.size()];
|
|
93
|
-
if (composer) {
|
|
94
|
-
composer.setSize(width, height);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
effect((onCleanup) => {
|
|
98
|
-
const [group, { composer, normalPass, downSamplingPass }, camera] = [
|
|
99
|
-
this.groupRef().nativeElement,
|
|
100
|
-
this.composerData(),
|
|
101
|
-
this.camera(),
|
|
102
|
-
];
|
|
103
|
-
const passes = [];
|
|
104
|
-
if (composer) {
|
|
105
|
-
const localState = getLocalState(group);
|
|
106
|
-
if (!localState)
|
|
107
|
-
return;
|
|
108
|
-
const children = localState.nonObjects();
|
|
109
|
-
for (let i = 0; i < children.length; i++) {
|
|
110
|
-
const child = children[i];
|
|
111
|
-
if (child instanceof Effect) {
|
|
112
|
-
const effects = [child];
|
|
113
|
-
if (!isConvolution(child)) {
|
|
114
|
-
let next = null;
|
|
115
|
-
while ((next = children[i + 1]) instanceof Effect) {
|
|
116
|
-
if (isConvolution(next))
|
|
117
|
-
break;
|
|
118
|
-
effects.push(next);
|
|
119
|
-
i++;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
const pass = new EffectPass(camera, ...effects);
|
|
123
|
-
passes.push(pass);
|
|
124
|
-
}
|
|
125
|
-
else if (child instanceof Pass) {
|
|
126
|
-
passes.push(child);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
for (const pass of passes) {
|
|
130
|
-
composer.addPass(pass);
|
|
131
|
-
}
|
|
132
|
-
if (normalPass)
|
|
133
|
-
normalPass.enabled = true;
|
|
134
|
-
if (downSamplingPass)
|
|
135
|
-
downSamplingPass.enabled = true;
|
|
136
|
-
}
|
|
137
|
-
onCleanup(() => {
|
|
138
|
-
for (const pass of passes)
|
|
139
|
-
composer?.removePass(pass);
|
|
140
|
-
if (normalPass)
|
|
141
|
-
normalPass.enabled = false;
|
|
142
|
-
if (downSamplingPass)
|
|
143
|
-
downSamplingPass.enabled = false;
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
effect((onCleanup) => {
|
|
147
|
-
const priority = this.priority();
|
|
148
|
-
const sub = injectBeforeRender(({ delta }) => {
|
|
149
|
-
const [{ composer }, { enabled, autoClear, stencilBuffer }, gl] = [
|
|
150
|
-
this.composerData(),
|
|
151
|
-
this.options(),
|
|
152
|
-
this.gl(),
|
|
153
|
-
];
|
|
154
|
-
if (enabled) {
|
|
155
|
-
const currentAutoClear = gl.autoClear;
|
|
156
|
-
gl.autoClear = autoClear;
|
|
157
|
-
if (stencilBuffer && !autoClear)
|
|
158
|
-
gl.clearStencil();
|
|
159
|
-
composer.render(delta);
|
|
160
|
-
gl.autoClear = currentAutoClear;
|
|
161
|
-
}
|
|
162
|
-
}, { injector: this.injector, priority });
|
|
163
|
-
onCleanup(() => sub());
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpEffectComposer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: NgtpEffectComposer, isStandalone: true, selector: "ngtp-effect-composer", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
168
|
-
<ngt-group #group>
|
|
169
|
-
<ng-content />
|
|
170
|
-
</ngt-group>
|
|
171
|
-
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
172
|
-
}
|
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpEffectComposer, decorators: [{
|
|
174
|
-
type: Component,
|
|
175
|
-
args: [{
|
|
176
|
-
selector: 'ngtp-effect-composer',
|
|
177
|
-
standalone: true,
|
|
178
|
-
template: `
|
|
179
|
-
<ngt-group #group>
|
|
180
|
-
<ng-content />
|
|
181
|
-
</ngt-group>
|
|
182
|
-
`,
|
|
183
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
184
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
185
|
-
}]
|
|
186
|
-
}], ctorParameters: () => [] });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LWNvbXBvc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wb3N0cHJvY2Vzc2luZy9zcmMvbGliL2VmZmVjdC1jb21wb3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUNOLHFCQUFxQixFQUNyQixNQUFNLEVBQ04sZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksRUFDSixVQUFVLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQVUsS0FBSyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQTBCLE1BQU0sT0FBTyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFpQmpELE1BQU0sY0FBYyxHQUE4QjtJQUNqRCxPQUFPLEVBQUUsSUFBSTtJQUNiLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLFNBQVMsRUFBRSxJQUFJO0lBQ2YsYUFBYSxFQUFFLENBQUM7SUFDaEIsZUFBZSxFQUFFLGFBQWE7Q0FDOUIsQ0FBQztBQUVGLFNBQVMsYUFBYSxDQUFDLE1BQWM7SUFDcEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUMvRixDQUFDO0FBYUQsTUFBTSxP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QUNGLENBQUMsRUFDRCxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUNyQyxDQUFDO1lBRUYsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOytHQWhMVyxrQkFBa0I7bUdBQWxCLGtCQUFrQiw2VUFScEI7Ozs7RUFJVDs7NEZBSVcsa0JBQWtCO2tCQVg5QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RWxlbWVudFJlZixcblx0SW5qZWN0b3IsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7XG5cdERlcHRoRG93bnNhbXBsaW5nUGFzcyxcblx0RWZmZWN0LFxuXHRFZmZlY3RBdHRyaWJ1dGUsXG5cdEVmZmVjdENvbXBvc2VyLFxuXHRFZmZlY3RQYXNzLFxuXHROb3JtYWxQYXNzLFxuXHRQYXNzLFxuXHRSZW5kZXJQYXNzLFxufSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBDYW1lcmEsIEdyb3VwLCBIYWxmRmxvYXRUeXBlLCBOb1RvbmVNYXBwaW5nLCBTY2VuZSwgVGV4dHVyZURhdGFUeXBlIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgaXNXZWJHTDJBdmFpbGFibGUgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHBFZmZlY3RDb21wb3Nlck9wdGlvbnMge1xuXHRlbmFibGVkOiBib29sZWFuO1xuXHRkZXB0aEJ1ZmZlcj86IGJvb2xlYW47XG5cdC8qKiBPbmx5IHVzZWQgZm9yIFNTR0kgY3VycmVudGx5LCBsZWF2ZSBpdCBkaXNhYmxlZCBmb3IgZXZlcnl0aGluZyBlbHNlIHVubGVzcyBpdCdzIG5lZWRlZCAqL1xuXHRlbmFibGVOb3JtYWxQYXNzPzogYm9vbGVhbjtcblx0c3RlbmNpbEJ1ZmZlcj86IGJvb2xlYW47XG5cdGF1dG9DbGVhcjogYm9vbGVhbjtcblx0cmVzb2x1dGlvblNjYWxlPzogbnVtYmVyO1xuXHRtdWx0aXNhbXBsaW5nOiBudW1iZXI7XG5cdGZyYW1lQnVmZmVyVHlwZTogVGV4dHVyZURhdGFUeXBlO1xuXHRyZW5kZXJQcmlvcml0eTogbnVtYmVyO1xuXHRjYW1lcmE/OiBDYW1lcmE7XG5cdHNjZW5lPzogU2NlbmU7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RwRWZmZWN0Q29tcG9zZXJPcHRpb25zID0ge1xuXHRlbmFibGVkOiB0cnVlLFxuXHRyZW5kZXJQcmlvcml0eTogMSxcblx0YXV0b0NsZWFyOiB0cnVlLFxuXHRtdWx0aXNhbXBsaW5nOiA4LFxuXHRmcmFtZUJ1ZmZlclR5cGU6IEhhbGZGbG9hdFR5cGUsXG59O1xuXG5mdW5jdGlvbiBpc0NvbnZvbHV0aW9uKGVmZmVjdDogRWZmZWN0KSB7XG5cdHJldHVybiAoZWZmZWN0LmdldEF0dHJpYnV0ZXMoKSAmIEVmZmVjdEF0dHJpYnV0ZS5DT05WT0xVVElPTikgPT09IEVmZmVjdEF0dHJpYnV0ZS5DT05WT0xVVElPTjtcbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1lZmZlY3QtY29tcG9zZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgI2dyb3VwPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cEVmZmVjdENvbXBvc2VyIHtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblx0cHJpdmF0ZSBnbCA9IHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcpO1xuXHRwcml2YXRlIGRlZmF1bHRTY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRwcml2YXRlIGRlZmF1bHRDYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cblx0cHJpdmF0ZSBkZXB0aEJ1ZmZlciA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVwdGhCdWZmZXInKTtcblx0cHJpdmF0ZSBzdGVuY2lsQnVmZmVyID0gcGljayh0aGlzLm9wdGlvbnMsICdzdGVuY2lsQnVmZmVyJyk7XG5cdHByaXZhdGUgbXVsdGlzYW1wbGluZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnbXVsdGlzYW1wbGluZycpO1xuXHRwcml2YXRlIGZyYW1lQnVmZmVyVHlwZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZnJhbWVCdWZmZXJUeXBlJyk7XG5cdHByaXZhdGUgZW5hYmxlTm9ybWFsUGFzcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZW5hYmxlTm9ybWFsUGFzcycpO1xuXHRwcml2YXRlIHJlc29sdXRpb25TY2FsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVzb2x1dGlvblNjYWxlJyk7XG5cdHByaXZhdGUgZW5hYmxlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZW5hYmxlZCcpO1xuXHRwcml2YXRlIHJlbmRlclByaW9yaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdyZW5kZXJQcmlvcml0eScpO1xuXG5cdHNjZW5lID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuc2NlbmUgPz8gdGhpcy5kZWZhdWx0U2NlbmUoKSk7XG5cdGNhbWVyYSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmNhbWVyYSA/PyB0aGlzLmRlZmF1bHRDYW1lcmEoKSk7XG5cblx0cHJpdmF0ZSBncm91cFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dyb3VwJyk7XG5cblx0cHJpdmF0ZSBwcmlvcml0eSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBlbmFibGVkID0gdGhpcy5lbmFibGVkKCk7XG5cdFx0aWYgKCFlbmFibGVkKSByZXR1cm4gMDtcblx0XHRyZXR1cm4gdGhpcy5yZW5kZXJQcmlvcml0eSgpO1xuXHR9KTtcblxuXHRwcml2YXRlIGNvbXBvc2VyRGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB3ZWJHTDJBdmFpbGFibGUgPSBpc1dlYkdMMkF2YWlsYWJsZSgpO1xuXHRcdGNvbnN0IFtcblx0XHRcdGdsLFxuXHRcdFx0c2NlbmUsXG5cdFx0XHRjYW1lcmEsXG5cdFx0XHRkZXB0aEJ1ZmZlcixcblx0XHRcdHN0ZW5jaWxCdWZmZXIsXG5cdFx0XHRtdWx0aXNhbXBsaW5nLFxuXHRcdFx0ZnJhbWVCdWZmZXJUeXBlLFxuXHRcdFx0ZW5hYmxlTm9ybWFsUGFzcyxcblx0XHRcdHJlc29sdXRpb25TY2FsZSxcblx0XHRdID0gW1xuXHRcdFx0dGhpcy5nbCgpLFxuXHRcdFx0dGhpcy5zY2VuZSgpLFxuXHRcdFx0dGhpcy5jYW1lcmEoKSxcblx0XHRcdHRoaXMuZGVwdGhCdWZmZXIoKSxcblx0XHRcdHRoaXMuc3RlbmNpbEJ1ZmZlcigpLFxuXHRcdFx0dGhpcy5tdWx0aXNhbXBsaW5nKCksXG5cdFx0XHR0aGlzLmZyYW1lQnVmZmVyVHlwZSgpLFxuXHRcdFx0dGhpcy5lbmFibGVOb3JtYWxQYXNzKCksXG5cdFx0XHR0aGlzLnJlc29sdXRpb25TY2FsZSgpLFxuXHRcdF07XG5cblx0XHQvLyBpbml0aWFsaXplIGNvbXBvc2VyXG5cdFx0Y29uc3QgY29tcG9zZXIgPSBuZXcgRWZmZWN0Q29tcG9zZXIoZ2wsIHtcblx0XHRcdGRlcHRoQnVmZmVyLFxuXHRcdFx0c3RlbmNpbEJ1ZmZlcixcblx0XHRcdG11bHRpc2FtcGxpbmc6IG11bHRpc2FtcGxpbmcgPiAwICYmIHdlYkdMMkF2YWlsYWJsZSA/IG11bHRpc2FtcGxpbmcgOiAwLFxuXHRcdFx0ZnJhbWVCdWZmZXJUeXBlLFxuXHRcdH0pO1xuXG5cdFx0Ly8gYWRkIHJlbmRlciBwYXNzXG5cdFx0Y29tcG9zZXIuYWRkUGFzcyhuZXcgUmVuZGVyUGFzcyhzY2VuZSwgY2FtZXJhKSk7XG5cblx0XHQvLyBjcmVhdGUgbm9ybWFsIHBhc3Ncblx0XHRsZXQgZG93blNhbXBsaW5nUGFzcyA9IG51bGw7XG5cdFx0bGV0IG5vcm1hbFBhc3MgPSBudWxsO1xuXHRcdGlmIChlbmFibGVOb3JtYWxQYXNzKSB7XG5cdFx0XHRub3JtYWxQYXNzID0gbmV3IE5vcm1hbFBhc3Moc2NlbmUsIGNhbWVyYSk7XG5cdFx0XHRub3JtYWxQYXNzLmVuYWJsZWQgPSBmYWxzZTtcblx0XHRcdGNvbXBvc2VyLmFkZFBhc3Mobm9ybWFsUGFzcyk7XG5cdFx0XHRpZiAocmVzb2x1dGlvblNjYWxlICE9PSB1bmRlZmluZWQgJiYgd2ViR0wyQXZhaWxhYmxlKSB7XG5cdFx0XHRcdGRvd25TYW1wbGluZ1Bhc3MgPSBuZXcgRGVwdGhEb3duc2FtcGxpbmdQYXNzKHsgbm9ybWFsQnVmZmVyOiBub3JtYWxQYXNzLnRleHR1cmUsIHJlc29sdXRpb25TY2FsZSB9KTtcblx0XHRcdFx0ZG93blNhbXBsaW5nUGFzcy5lbmFibGVkID0gZmFsc2U7XG5cdFx0XHRcdGNvbXBvc2VyLmFkZFBhc3MoZG93blNhbXBsaW5nUGFzcyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHsgY29tcG9zZXIsIG5vcm1hbFBhc3MsIGRvd25TYW1wbGluZ1Bhc3MgfTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgR3JvdXAgfSk7XG5cblx0XHQvLyBOT1RFOiBEaXNhYmxlIHRvbmUgbWFwcGluZyBiZWNhdXNlIHRocmVlanMgZGlzYWxsb3dzIHRvbmVtYXBwaW5nIG9uIHJlbmRlciB0YXJnZXRzXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGdsID0gdGhpcy5nbCgpO1xuXHRcdFx0Y29uc3QgY3VycmVudFRvbmVtYXBwaW5nID0gZ2wudG9uZU1hcHBpbmc7XG5cdFx0XHRnbC50b25lTWFwcGluZyA9IE5vVG9uZU1hcHBpbmc7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRnbC50b25lTWFwcGluZyA9IGN1cnJlbnRUb25lbWFwcGluZztcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFt7IGNvbXBvc2VyIH0sIHsgd2lkdGgsIGhlaWdodCB9XSA9IFt0aGlzLmNvbXBvc2VyRGF0YSgpLCB0aGlzLnNpemUoKV07XG5cdFx0XHRpZiAoY29tcG9zZXIpIHtcblx0XHRcdFx0Y29tcG9zZXIuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBbZ3JvdXAsIHsgY29tcG9zZXIsIG5vcm1hbFBhc3MsIGRvd25TYW1wbGluZ1Bhc3MgfSwgY2FtZXJhXSA9IFtcblx0XHRcdFx0dGhpcy5ncm91cFJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuY29tcG9zZXJEYXRhKCksXG5cdFx0XHRcdHRoaXMuY2FtZXJhKCksXG5cdFx0XHRdO1xuXG5cdFx0XHRjb25zdCBwYXNzZXM6IFBhc3NbXSA9IFtdO1xuXG5cdFx0XHRpZiAoY29tcG9zZXIpIHtcblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZ3JvdXApO1xuXHRcdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBjaGlsZHJlbiA9IGxvY2FsU3RhdGUubm9uT2JqZWN0cygpO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcblx0XHRcdFx0XHRpZiAoY2hpbGQgaW5zdGFuY2VvZiBFZmZlY3QpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGVmZmVjdHM6IEVmZmVjdFtdID0gW2NoaWxkXTtcblxuXHRcdFx0XHRcdFx0aWYgKCFpc0NvbnZvbHV0aW9uKGNoaWxkKSkge1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV4dDogdW5rbm93biA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICgobmV4dCA9IGNoaWxkcmVuW2kgKyAxXSkgaW5zdGFuY2VvZiBFZmZlY3QpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoaXNDb252b2x1dGlvbihuZXh0KSkgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0ZWZmZWN0cy5wdXNoKG5leHQgYXMgRWZmZWN0KTtcblx0XHRcdFx0XHRcdFx0XHRpKys7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3QgcGFzcyA9IG5ldyBFZmZlY3RQYXNzKGNhbWVyYSwgLi4uZWZmZWN0cyk7XG5cdFx0XHRcdFx0XHRwYXNzZXMucHVzaChwYXNzKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGNoaWxkIGluc3RhbmNlb2YgUGFzcykge1xuXHRcdFx0XHRcdFx0cGFzc2VzLnB1c2goY2hpbGQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAoY29uc3QgcGFzcyBvZiBwYXNzZXMpIHtcblx0XHRcdFx0XHRjb21wb3Nlci5hZGRQYXNzKHBhc3MpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKG5vcm1hbFBhc3MpIG5vcm1hbFBhc3MuZW5hYmxlZCA9IHRydWU7XG5cdFx0XHRcdGlmIChkb3duU2FtcGxpbmdQYXNzKSBkb3duU2FtcGxpbmdQYXNzLmVuYWJsZWQgPSB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHBhc3Mgb2YgcGFzc2VzKSBjb21wb3Nlcj8ucmVtb3ZlUGFzcyhwYXNzKTtcblx0XHRcdFx0aWYgKG5vcm1hbFBhc3MpIG5vcm1hbFBhc3MuZW5hYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHRpZiAoZG93blNhbXBsaW5nUGFzcykgZG93blNhbXBsaW5nUGFzcy5lbmFibGVkID0gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBwcmlvcml0eSA9IHRoaXMucHJpb3JpdHkoKTtcblxuXHRcdFx0Y29uc3Qgc3ViID0gaW5qZWN0QmVmb3JlUmVuZGVyKFxuXHRcdFx0XHQoeyBkZWx0YSB9KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgW3sgY29tcG9zZXIgfSwgeyBlbmFibGVkLCBhdXRvQ2xlYXIsIHN0ZW5jaWxCdWZmZXIgfSwgZ2xdID0gW1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlckRhdGEoKSxcblx0XHRcdFx0XHRcdHRoaXMub3B0aW9ucygpLFxuXHRcdFx0XHRcdFx0dGhpcy5nbCgpLFxuXHRcdFx0XHRcdF07XG5cblx0XHRcdFx0XHRpZiAoZW5hYmxlZCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY3VycmVudEF1dG9DbGVhciA9IGdsLmF1dG9DbGVhcjtcblx0XHRcdFx0XHRcdGdsLmF1dG9DbGVhciA9IGF1dG9DbGVhcjtcblx0XHRcdFx0XHRcdGlmIChzdGVuY2lsQnVmZmVyICYmICFhdXRvQ2xlYXIpIGdsLmNsZWFyU3RlbmNpbCgpO1xuXHRcdFx0XHRcdFx0Y29tcG9zZXIucmVuZGVyKGRlbHRhKTtcblx0XHRcdFx0XHRcdGdsLmF1dG9DbGVhciA9IGN1cnJlbnRBdXRvQ2xlYXI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7IGluamVjdG9yOiB0aGlzLmluamVjdG9yLCBwcmlvcml0eSB9LFxuXHRcdFx0KTtcblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHN1YigpKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
package/esm2022/lib/effect.mjs
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, Directive, inject, input } from '@angular/core';
|
|
2
|
-
import { injectStore } from 'angular-three';
|
|
3
|
-
import { createNoopInjectionToken } from 'ngxtension/create-injection-token';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export const [injectDefaultEffectOptions, provideDefaultEffectOptions] = createNoopInjectionToken('Default Effect options');
|
|
6
|
-
export class NgtpEffectBlendMode {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.effect = inject(NgtpEffect, { optional: true });
|
|
9
|
-
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpEffectBlendMode, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: NgtpEffectBlendMode, isStandalone: true, selector: "ngtp-effect-blend-mode", ngImport: i0, template: `
|
|
12
|
-
@if (effect) {
|
|
13
|
-
<ngt-value [rawValue]="effect.blendFunction()" attach="blendMode.blendFunction" />
|
|
14
|
-
<ngt-value [rawValue]="effect.opacity()" attach="blendMode.opacity.value" />
|
|
15
|
-
}
|
|
16
|
-
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
17
|
-
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpEffectBlendMode, decorators: [{
|
|
19
|
-
type: Component,
|
|
20
|
-
args: [{
|
|
21
|
-
selector: 'ngtp-effect-blend-mode',
|
|
22
|
-
standalone: true,
|
|
23
|
-
template: `
|
|
24
|
-
@if (effect) {
|
|
25
|
-
<ngt-value [rawValue]="effect.blendFunction()" attach="blendMode.blendFunction" />
|
|
26
|
-
<ngt-value [rawValue]="effect.opacity()" attach="blendMode.opacity.value" />
|
|
27
|
-
}
|
|
28
|
-
`,
|
|
29
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
30
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
31
|
-
}]
|
|
32
|
-
}] });
|
|
33
|
-
export class NgtpEffect {
|
|
34
|
-
constructor() {
|
|
35
|
-
this.defaultEffectOptions = injectDefaultEffectOptions({ optional: true });
|
|
36
|
-
this.blendFunction = input(this.defaultEffectOptions?.blendFunction);
|
|
37
|
-
this.opacity = input(this.defaultEffectOptions?.opacity);
|
|
38
|
-
this.store = injectStore();
|
|
39
|
-
this.camera = this.store.select('camera');
|
|
40
|
-
this.invalidate = this.store.select('invalidate');
|
|
41
|
-
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpEffect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
43
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtpEffect, isStandalone: true, inputs: { blendFunction: { classPropertyName: "blendFunction", publicName: "blendFunction", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
44
|
-
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpEffect, decorators: [{
|
|
46
|
-
type: Directive,
|
|
47
|
-
args: [{ standalone: true }]
|
|
48
|
-
}] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wb3N0cHJvY2Vzc2luZy9zcmMvbGliL2VmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBRzdFLE1BQU0sQ0FBQyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsMkJBQTJCLENBQUMsR0FBRyx3QkFBd0IsQ0FHOUYsd0JBQXdCLENBQUMsQ0FBQztBQWM3QixNQUFNLE9BQU8sbUJBQW1CO0lBWmhDO1FBYUMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNoRDsrR0FGWSxtQkFBbUI7bUdBQW5CLG1CQUFtQixrRkFUckI7Ozs7O0VBS1Q7OzRGQUlXLG1CQUFtQjtrQkFaL0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7OztFQUtUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0M7O0FBTUQsTUFBTSxPQUFPLFVBQVU7SUFEdkI7UUFFQyx5QkFBb0IsR0FBRywwQkFBMEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRFLGtCQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNoRSxZQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU1QyxVQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDOUIsV0FBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUM3QzsrR0FUWSxVQUFVO21HQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBRHRCLFNBQVM7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGlyZWN0aXZlLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY3JlYXRlTm9vcEluamVjdGlvblRva2VuIH0gZnJvbSAnbmd4dGVuc2lvbi9jcmVhdGUtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IEJsZW5kRnVuY3Rpb24gfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5cbmV4cG9ydCBjb25zdCBbaW5qZWN0RGVmYXVsdEVmZmVjdE9wdGlvbnMsIHByb3ZpZGVEZWZhdWx0RWZmZWN0T3B0aW9uc10gPSBjcmVhdGVOb29wSW5qZWN0aW9uVG9rZW48e1xuXHRibGVuZEZ1bmN0aW9uPzogQmxlbmRGdW5jdGlvbjtcblx0b3BhY2l0eT86IG51bWJlcjtcbn0+KCdEZWZhdWx0IEVmZmVjdCBvcHRpb25zJyk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtZWZmZWN0LWJsZW5kLW1vZGUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdEBpZiAoZWZmZWN0KSB7XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJlZmZlY3QuYmxlbmRGdW5jdGlvbigpXCIgYXR0YWNoPVwiYmxlbmRNb2RlLmJsZW5kRnVuY3Rpb25cIiAvPlxuXHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZWZmZWN0Lm9wYWNpdHkoKVwiIGF0dGFjaD1cImJsZW5kTW9kZS5vcGFjaXR5LnZhbHVlXCIgLz5cblx0XHR9XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBFZmZlY3RCbGVuZE1vZGUge1xuXHRlZmZlY3QgPSBpbmplY3QoTmd0cEVmZmVjdCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RwRWZmZWN0IHtcblx0ZGVmYXVsdEVmZmVjdE9wdGlvbnMgPSBpbmplY3REZWZhdWx0RWZmZWN0T3B0aW9ucyh7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG5cdGJsZW5kRnVuY3Rpb24gPSBpbnB1dCh0aGlzLmRlZmF1bHRFZmZlY3RPcHRpb25zPy5ibGVuZEZ1bmN0aW9uKTtcblx0b3BhY2l0eSA9IGlucHV0KHRoaXMuZGVmYXVsdEVmZmVjdE9wdGlvbnM/Lm9wYWNpdHkpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRjYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdGludmFsaWRhdGUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnaW52YWxpZGF0ZScpO1xufVxuIl19
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';
|
|
2
|
-
import { NgtArgs } from 'angular-three';
|
|
3
|
-
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
4
|
-
import { Effect } from 'postprocessing';
|
|
5
|
-
import { CanvasTexture, Color, NearestFilter, RepeatWrapping, Texture, Uniform } from 'three';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
const fragment = /* language=glsl glsl */ `
|
|
8
|
-
uniform sampler2D uCharacters;
|
|
9
|
-
uniform float uCharactersCount;
|
|
10
|
-
uniform float uCellSize;
|
|
11
|
-
uniform bool uInvert;
|
|
12
|
-
uniform vec3 uColor;
|
|
13
|
-
|
|
14
|
-
const vec2 SIZE = vec2(16.);
|
|
15
|
-
|
|
16
|
-
vec3 greyscale(vec3 color, float strength) {
|
|
17
|
-
float g = dot(color, vec3(0.299, 0.587, 0.114));
|
|
18
|
-
return mix(color, vec3(g), strength);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
vec3 greyscale(vec3 color) {
|
|
22
|
-
return greyscale(color, 1.0);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {
|
|
26
|
-
vec2 cell = resolution / uCellSize;
|
|
27
|
-
vec2 grid = 1.0 / cell;
|
|
28
|
-
vec2 pixelizedUV = grid * (0.5 + floor(uv / grid));
|
|
29
|
-
vec4 pixelized = texture2D(inputBuffer, pixelizedUV);
|
|
30
|
-
float greyscaled = greyscale(pixelized.rgb).r;
|
|
31
|
-
|
|
32
|
-
if (uInvert) {
|
|
33
|
-
greyscaled = 1.0 - greyscaled;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
float characterIndex = floor((uCharactersCount - 1.0) * greyscaled);
|
|
37
|
-
vec2 characterPosition = vec2(mod(characterIndex, SIZE.x), floor(characterIndex / SIZE.y));
|
|
38
|
-
vec2 offset = vec2(characterPosition.x, -characterPosition.y) / SIZE;
|
|
39
|
-
vec2 charUV = mod(uv * (cell / SIZE), 1.0 / SIZE) - vec2(0., 1.0 / SIZE) + offset;
|
|
40
|
-
vec4 asciiCharacter = texture2D(uCharacters, charUV);
|
|
41
|
-
|
|
42
|
-
asciiCharacter.rgb = uColor * asciiCharacter.r;
|
|
43
|
-
asciiCharacter.a = pixelized.a;
|
|
44
|
-
outputColor = asciiCharacter;
|
|
45
|
-
}
|
|
46
|
-
`;
|
|
47
|
-
export class ASCIIEffect extends Effect {
|
|
48
|
-
constructor({ font = 'arial', characters = ` .:,'-^=*+?!|0#X%WM@`, fontSize = 54, cellSize = 16, color = '#ffffff', invert = false, } = {}) {
|
|
49
|
-
const uniforms = new Map([
|
|
50
|
-
['uCharacters', new Uniform(new Texture())],
|
|
51
|
-
['uCellSize', new Uniform(cellSize)],
|
|
52
|
-
['uCharactersCount', new Uniform(characters.length)],
|
|
53
|
-
['uColor', new Uniform(new Color(color))],
|
|
54
|
-
['uInvert', new Uniform(invert)],
|
|
55
|
-
]);
|
|
56
|
-
super('ASCIIEffect', fragment, { uniforms });
|
|
57
|
-
const charactersTextureUniform = this.uniforms.get('uCharacters');
|
|
58
|
-
if (charactersTextureUniform) {
|
|
59
|
-
charactersTextureUniform.value = this.createCharactersTexture(characters, font, fontSize);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/** Draws the characters on a Canvas and returns a texture */
|
|
63
|
-
createCharactersTexture(characters, font, fontSize) {
|
|
64
|
-
const canvas = document.createElement('canvas');
|
|
65
|
-
const SIZE = 1024;
|
|
66
|
-
const MAX_PER_ROW = 16;
|
|
67
|
-
const CELL = SIZE / MAX_PER_ROW;
|
|
68
|
-
canvas.width = canvas.height = SIZE;
|
|
69
|
-
const texture = new CanvasTexture(canvas, undefined, RepeatWrapping, RepeatWrapping, NearestFilter, NearestFilter);
|
|
70
|
-
const context = canvas.getContext('2d');
|
|
71
|
-
if (!context) {
|
|
72
|
-
throw new Error('Context not available');
|
|
73
|
-
}
|
|
74
|
-
context.clearRect(0, 0, SIZE, SIZE);
|
|
75
|
-
context.font = `${fontSize}px ${font}`;
|
|
76
|
-
context.textAlign = 'center';
|
|
77
|
-
context.textBaseline = 'middle';
|
|
78
|
-
context.fillStyle = '#fff';
|
|
79
|
-
for (let i = 0; i < characters.length; i++) {
|
|
80
|
-
const char = characters[i];
|
|
81
|
-
const x = i % MAX_PER_ROW;
|
|
82
|
-
const y = Math.floor(i / MAX_PER_ROW);
|
|
83
|
-
context.fillText(char, x * CELL + CELL / 2, y * CELL + CELL / 2);
|
|
84
|
-
}
|
|
85
|
-
texture.needsUpdate = true;
|
|
86
|
-
return texture;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const defaultOptions = {
|
|
90
|
-
font: 'arial',
|
|
91
|
-
characters: ` .:,'-^=*+?!|0#X%WM@`,
|
|
92
|
-
fontSize: 54,
|
|
93
|
-
cellSize: 16,
|
|
94
|
-
color: '#ffffff',
|
|
95
|
-
invert: false,
|
|
96
|
-
};
|
|
97
|
-
export class NgtpASCII {
|
|
98
|
-
constructor() {
|
|
99
|
-
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
100
|
-
this.effect = computed(() => new ASCIIEffect(this.options()));
|
|
101
|
-
effect((onCleanup) => {
|
|
102
|
-
const effect = this.effect();
|
|
103
|
-
onCleanup(() => effect.dispose());
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpASCII, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
107
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpASCII, isStandalone: true, selector: "ngtp-ascii", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
108
|
-
<ngt-primitive *args="[effect()]" />
|
|
109
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
110
|
-
}
|
|
111
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpASCII, decorators: [{
|
|
112
|
-
type: Component,
|
|
113
|
-
args: [{
|
|
114
|
-
selector: 'ngtp-ascii',
|
|
115
|
-
standalone: true,
|
|
116
|
-
template: `
|
|
117
|
-
<ngt-primitive *args="[effect()]" />
|
|
118
|
-
`,
|
|
119
|
-
imports: [NgtArgs],
|
|
120
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
121
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
122
|
-
}]
|
|
123
|
-
}], ctorParameters: () => [] });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNjaWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9hc2NpaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRTlGLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F1Q3pDLENBQUM7QUFXRixNQUFNLE9BQU8sV0FBWSxTQUFRLE1BQU07SUFDdEMsWUFBWSxFQUNYLElBQUksR0FBRyxPQUFPLEVBQ2QsVUFBVSxHQUFHLHNCQUFzQixFQUNuQyxRQUFRLEdBQUcsRUFBRSxFQUNiLFFBQVEsR0FBRyxFQUFFLEVBQ2IsS0FBSyxHQUFHLFNBQVMsRUFDakIsTUFBTSxHQUFHLEtBQUssTUFDUyxFQUFFO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFrQjtZQUN6QyxDQUFDLGFBQWEsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDM0MsQ0FBQyxXQUFXLEVBQUUsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLE9BQU8s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QjtRQUhBLFlBQU8sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUUsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBR3hELE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOytHQVRXLFNBQVM7bUdBQVQsU0FBUyxnTkFQWDs7RUFFVCw0REFDUyxPQUFPOzs0RkFJTCxTQUFTO2tCQVZyQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOztFQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBFZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBDYW52YXNUZXh0dXJlLCBDb2xvciwgTmVhcmVzdEZpbHRlciwgUmVwZWF0V3JhcHBpbmcsIFRleHR1cmUsIFVuaWZvcm0gfSBmcm9tICd0aHJlZSc7XG5cbmNvbnN0IGZyYWdtZW50ID0gLyogbGFuZ3VhZ2U9Z2xzbCBnbHNsICovIGBcbnVuaWZvcm0gc2FtcGxlcjJEIHVDaGFyYWN0ZXJzO1xudW5pZm9ybSBmbG9hdCB1Q2hhcmFjdGVyc0NvdW50O1xudW5pZm9ybSBmbG9hdCB1Q2VsbFNpemU7XG51bmlmb3JtIGJvb2wgdUludmVydDtcbnVuaWZvcm0gdmVjMyB1Q29sb3I7XG5cbmNvbnN0IHZlYzIgU0laRSA9IHZlYzIoMTYuKTtcblxudmVjMyBncmV5c2NhbGUodmVjMyBjb2xvciwgZmxvYXQgc3RyZW5ndGgpIHtcbiAgICBmbG9hdCBnID0gZG90KGNvbG9yLCB2ZWMzKDAuMjk5LCAwLjU4NywgMC4xMTQpKTtcbiAgICByZXR1cm4gbWl4KGNvbG9yLCB2ZWMzKGcpLCBzdHJlbmd0aCk7XG59XG5cbnZlYzMgZ3JleXNjYWxlKHZlYzMgY29sb3IpIHtcbiAgICByZXR1cm4gZ3JleXNjYWxlKGNvbG9yLCAxLjApO1xufVxuXG52b2lkIG1haW5JbWFnZShjb25zdCBpbiB2ZWM0IGlucHV0Q29sb3IsIGNvbnN0IGluIHZlYzIgdXYsIG91dCB2ZWM0IG91dHB1dENvbG9yKSB7XG4gICAgdmVjMiBjZWxsID0gcmVzb2x1dGlvbiAvIHVDZWxsU2l6ZTtcbiAgICB2ZWMyIGdyaWQgPSAxLjAgLyBjZWxsO1xuICAgIHZlYzIgcGl4ZWxpemVkVVYgPSBncmlkICogKDAuNSArIGZsb29yKHV2IC8gZ3JpZCkpO1xuICAgIHZlYzQgcGl4ZWxpemVkID0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBwaXhlbGl6ZWRVVik7XG4gICAgZmxvYXQgZ3JleXNjYWxlZCA9IGdyZXlzY2FsZShwaXhlbGl6ZWQucmdiKS5yO1xuXG4gICAgaWYgKHVJbnZlcnQpIHtcbiAgICAgICAgZ3JleXNjYWxlZCA9IDEuMCAtIGdyZXlzY2FsZWQ7XG4gICAgfVxuXG4gICAgZmxvYXQgY2hhcmFjdGVySW5kZXggPSBmbG9vcigodUNoYXJhY3RlcnNDb3VudCAtIDEuMCkgKiBncmV5c2NhbGVkKTtcbiAgICB2ZWMyIGNoYXJhY3RlclBvc2l0aW9uID0gdmVjMihtb2QoY2hhcmFjdGVySW5kZXgsIFNJWkUueCksIGZsb29yKGNoYXJhY3RlckluZGV4IC8gU0laRS55KSk7XG4gICAgdmVjMiBvZmZzZXQgPSB2ZWMyKGNoYXJhY3RlclBvc2l0aW9uLngsIC1jaGFyYWN0ZXJQb3NpdGlvbi55KSAvIFNJWkU7XG4gICAgdmVjMiBjaGFyVVYgPSBtb2QodXYgKiAoY2VsbCAvIFNJWkUpLCAxLjAgLyBTSVpFKSAtIHZlYzIoMC4sIDEuMCAvIFNJWkUpICsgb2Zmc2V0O1xuICAgIHZlYzQgYXNjaWlDaGFyYWN0ZXIgPSB0ZXh0dXJlMkQodUNoYXJhY3RlcnMsIGNoYXJVVik7XG5cbiAgICBhc2NpaUNoYXJhY3Rlci5yZ2IgPSB1Q29sb3IgKiBhc2NpaUNoYXJhY3Rlci5yO1xuICAgIGFzY2lpQ2hhcmFjdGVyLmEgPSBwaXhlbGl6ZWQuYTtcbiAgICBvdXRwdXRDb2xvciA9IGFzY2lpQ2hhcmFjdGVyO1xufVxuYDtcblxuaW50ZXJmYWNlIEFTQ0lJRWZmZWN0T3B0aW9ucyB7XG5cdGZvbnQ/OiBzdHJpbmc7XG5cdGNoYXJhY3RlcnM/OiBzdHJpbmc7XG5cdGZvbnRTaXplPzogbnVtYmVyO1xuXHRjZWxsU2l6ZT86IG51bWJlcjtcblx0Y29sb3I/OiBzdHJpbmc7XG5cdGludmVydD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBBU0NJSUVmZmVjdCBleHRlbmRzIEVmZmVjdCB7XG5cdGNvbnN0cnVjdG9yKHtcblx0XHRmb250ID0gJ2FyaWFsJyxcblx0XHRjaGFyYWN0ZXJzID0gYCAuOiwnLV49Kis/IXwwI1glV01AYCxcblx0XHRmb250U2l6ZSA9IDU0LFxuXHRcdGNlbGxTaXplID0gMTYsXG5cdFx0Y29sb3IgPSAnI2ZmZmZmZicsXG5cdFx0aW52ZXJ0ID0gZmFsc2UsXG5cdH06IEFTQ0lJRWZmZWN0T3B0aW9ucyA9IHt9KSB7XG5cdFx0Y29uc3QgdW5pZm9ybXMgPSBuZXcgTWFwPHN0cmluZywgVW5pZm9ybT4oW1xuXHRcdFx0Wyd1Q2hhcmFjdGVycycsIG5ldyBVbmlmb3JtKG5ldyBUZXh0dXJlKCkpXSxcblx0XHRcdFsndUNlbGxTaXplJywgbmV3IFVuaWZvcm0oY2VsbFNpemUpXSxcblx0XHRcdFsndUNoYXJhY3RlcnNDb3VudCcsIG5ldyBVbmlmb3JtKGNoYXJhY3RlcnMubGVuZ3RoKV0sXG5cdFx0XHRbJ3VDb2xvcicsIG5ldyBVbmlmb3JtKG5ldyBDb2xvcihjb2xvcikpXSxcblx0XHRcdFsndUludmVydCcsIG5ldyBVbmlmb3JtKGludmVydCldLFxuXHRcdF0pO1xuXG5cdFx0c3VwZXIoJ0FTQ0lJRWZmZWN0JywgZnJhZ21lbnQsIHsgdW5pZm9ybXMgfSk7XG5cblx0XHRjb25zdCBjaGFyYWN0ZXJzVGV4dHVyZVVuaWZvcm0gPSB0aGlzLnVuaWZvcm1zLmdldCgndUNoYXJhY3RlcnMnKTtcblxuXHRcdGlmIChjaGFyYWN0ZXJzVGV4dHVyZVVuaWZvcm0pIHtcblx0XHRcdGNoYXJhY3RlcnNUZXh0dXJlVW5pZm9ybS52YWx1ZSA9IHRoaXMuY3JlYXRlQ2hhcmFjdGVyc1RleHR1cmUoY2hhcmFjdGVycywgZm9udCwgZm9udFNpemUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBEcmF3cyB0aGUgY2hhcmFjdGVycyBvbiBhIENhbnZhcyBhbmQgcmV0dXJucyBhIHRleHR1cmUgKi9cblx0cHVibGljIGNyZWF0ZUNoYXJhY3RlcnNUZXh0dXJlKGNoYXJhY3RlcnM6IHN0cmluZywgZm9udDogc3RyaW5nLCBmb250U2l6ZTogbnVtYmVyKTogVGV4dHVyZSB7XG5cdFx0Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG5cdFx0Y29uc3QgU0laRSA9IDEwMjQ7XG5cdFx0Y29uc3QgTUFYX1BFUl9ST1cgPSAxNjtcblx0XHRjb25zdCBDRUxMID0gU0laRSAvIE1BWF9QRVJfUk9XO1xuXG5cdFx0Y2FudmFzLndpZHRoID0gY2FudmFzLmhlaWdodCA9IFNJWkU7XG5cdFx0Y29uc3QgdGV4dHVyZSA9IG5ldyBDYW52YXNUZXh0dXJlKGNhbnZhcywgdW5kZWZpbmVkLCBSZXBlYXRXcmFwcGluZywgUmVwZWF0V3JhcHBpbmcsIE5lYXJlc3RGaWx0ZXIsIE5lYXJlc3RGaWx0ZXIpO1xuXHRcdGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuXHRcdGlmICghY29udGV4dCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDb250ZXh0IG5vdCBhdmFpbGFibGUnKTtcblx0XHR9XG5cblx0XHRjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBTSVpFLCBTSVpFKTtcblx0XHRjb250ZXh0LmZvbnQgPSBgJHtmb250U2l6ZX1weCAke2ZvbnR9YDtcblx0XHRjb250ZXh0LnRleHRBbGlnbiA9ICdjZW50ZXInO1xuXHRcdGNvbnRleHQudGV4dEJhc2VsaW5lID0gJ21pZGRsZSc7XG5cdFx0Y29udGV4dC5maWxsU3R5bGUgPSAnI2ZmZic7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGNoYXIgPSBjaGFyYWN0ZXJzW2ldO1xuXHRcdFx0Y29uc3QgeCA9IGkgJSBNQVhfUEVSX1JPVztcblx0XHRcdGNvbnN0IHkgPSBNYXRoLmZsb29yKGkgLyBNQVhfUEVSX1JPVyk7XG5cdFx0XHRjb250ZXh0LmZpbGxUZXh0KGNoYXIsIHggKiBDRUxMICsgQ0VMTCAvIDIsIHkgKiBDRUxMICsgQ0VMTCAvIDIpO1xuXHRcdH1cblxuXHRcdHRleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdHJldHVybiB0ZXh0dXJlO1xuXHR9XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBBU0NJSUVmZmVjdE9wdGlvbnMgPSB7XG5cdGZvbnQ6ICdhcmlhbCcsXG5cdGNoYXJhY3RlcnM6IGAgLjosJy1ePSorPyF8MCNYJVdNQGAsXG5cdGZvbnRTaXplOiA1NCxcblx0Y2VsbFNpemU6IDE2LFxuXHRjb2xvcjogJyNmZmZmZmYnLFxuXHRpbnZlcnQ6IGZhbHNlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1hc2NpaScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbZWZmZWN0KCldXCIgLz5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RwQVNDSUkge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdGVmZmVjdCA9IGNvbXB1dGVkKCgpID0+IG5ldyBBU0NJSUVmZmVjdCh0aGlzLm9wdGlvbnMoKSkpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBlZmZlY3QgPSB0aGlzLmVmZmVjdCgpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IGVmZmVjdC5kaXNwb3NlKCkpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
|
|
2
|
-
import { NgtArgs, extend } from 'angular-three';
|
|
3
|
-
import { BlendFunction, BloomEffect } from 'postprocessing';
|
|
4
|
-
import { NgtpEffect, NgtpEffectBlendMode, provideDefaultEffectOptions } from '../effect';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../effect";
|
|
7
|
-
extend({ BloomEffect });
|
|
8
|
-
export class NgtpBloom {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.effect = inject(NgtpEffect, { host: true });
|
|
11
|
-
this.options = input({});
|
|
12
|
-
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpBloom, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpBloom, isStandalone: true, selector: "ngtp-bloom", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })], hostDirectives: [{ directive: i1.NgtpEffect, inputs: ["blendFunction", "blendFunction", "opacity", "opacity"] }], ngImport: i0, template: `
|
|
15
|
-
<ngt-bloom-effect *args="[options()]" [camera]="effect.camera()">
|
|
16
|
-
<ngtp-effect-blend-mode />
|
|
17
|
-
<ng-content />
|
|
18
|
-
</ngt-bloom-effect>
|
|
19
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtpEffectBlendMode, selector: "ngtp-effect-blend-mode" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpBloom, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{
|
|
24
|
-
selector: 'ngtp-bloom',
|
|
25
|
-
standalone: true,
|
|
26
|
-
template: `
|
|
27
|
-
<ngt-bloom-effect *args="[options()]" [camera]="effect.camera()">
|
|
28
|
-
<ngtp-effect-blend-mode />
|
|
29
|
-
<ng-content />
|
|
30
|
-
</ngt-bloom-effect>
|
|
31
|
-
`,
|
|
32
|
-
imports: [NgtArgs, NgtpEffectBlendMode],
|
|
33
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
34
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
35
|
-
hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
|
|
36
|
-
providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],
|
|
37
|
-
}]
|
|
38
|
-
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvb20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9ibG9vbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRXpGLE1BQU0sQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFpQnhCLE1BQU0sT0FBTyxTQUFTO0lBZnRCO1FBZ0JDLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUErQyxDQUFDLENBQUM7S0FDakU7K0dBSFksU0FBUzttR0FBVCxTQUFTLG1NQUZWLENBQUMsMkJBQTJCLENBQUMsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsNElBVnBFOzs7OztFQUtULDREQUNTLE9BQU8sZ0ZBQUUsbUJBQW1COzs0RkFNMUIsU0FBUztrQkFmckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7RUFLVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsY0FBYyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUNqRixTQUFTLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDOUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBleHRlbmQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEJsZW5kRnVuY3Rpb24sIEJsb29tRWZmZWN0LCBCbG9vbUVmZmVjdE9wdGlvbnMgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBOZ3RwRWZmZWN0LCBOZ3RwRWZmZWN0QmxlbmRNb2RlLCBwcm92aWRlRGVmYXVsdEVmZmVjdE9wdGlvbnMgfSBmcm9tICcuLi9lZmZlY3QnO1xuXG5leHRlbmQoeyBCbG9vbUVmZmVjdCB9KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1ibG9vbScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ibG9vbS1lZmZlY3QgKmFyZ3M9XCJbb3B0aW9ucygpXVwiIFtjYW1lcmFdPVwiZWZmZWN0LmNhbWVyYSgpXCI+XG5cdFx0XHQ8bmd0cC1lZmZlY3QtYmxlbmQtbW9kZSAvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1ibG9vbS1lZmZlY3Q+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RwRWZmZWN0QmxlbmRNb2RlXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aG9zdERpcmVjdGl2ZXM6IFt7IGRpcmVjdGl2ZTogTmd0cEVmZmVjdCwgaW5wdXRzOiBbJ2JsZW5kRnVuY3Rpb24nLCAnb3BhY2l0eSddIH1dLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlRGVmYXVsdEVmZmVjdE9wdGlvbnMoeyBibGVuZEZ1bmN0aW9uOiBCbGVuZEZ1bmN0aW9uLkFERCB9KV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBCbG9vbSB7XG5cdGVmZmVjdCA9IGluamVjdChOZ3RwRWZmZWN0LCB7IGhvc3Q6IHRydWUgfSk7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBPbWl0PEJsb29tRWZmZWN0T3B0aW9ucywgJ2JsZW5kRnVuY3Rpb24nPik7XG59XG4iXX0=
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
|
|
2
|
-
import { NgtArgs, extend } from 'angular-three';
|
|
3
|
-
import { BrightnessContrastEffect } from 'postprocessing';
|
|
4
|
-
import { NgtpEffect, NgtpEffectBlendMode } from '../effect';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../effect";
|
|
7
|
-
extend({ BrightnessContrastEffect });
|
|
8
|
-
export class NgtpBrightnessContrast {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.effect = inject(NgtpEffect, { host: true });
|
|
11
|
-
this.options = input({});
|
|
12
|
-
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpBrightnessContrast, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpBrightnessContrast, isStandalone: true, selector: "ngtp-brightness-contrast", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtpEffect, inputs: ["blendFunction", "blendFunction", "opacity", "opacity"] }], ngImport: i0, template: `
|
|
15
|
-
<ngt-brightness-contrast-effect *args="[options()]" [camera]="effect.camera()">
|
|
16
|
-
<ngtp-effect-blend-mode />
|
|
17
|
-
<ng-content />
|
|
18
|
-
</ngt-brightness-contrast-effect>
|
|
19
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtpEffectBlendMode, selector: "ngtp-effect-blend-mode" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpBrightnessContrast, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{
|
|
24
|
-
selector: 'ngtp-brightness-contrast',
|
|
25
|
-
standalone: true,
|
|
26
|
-
template: `
|
|
27
|
-
<ngt-brightness-contrast-effect *args="[options()]" [camera]="effect.camera()">
|
|
28
|
-
<ngtp-effect-blend-mode />
|
|
29
|
-
<ng-content />
|
|
30
|
-
</ngt-brightness-contrast-effect>
|
|
31
|
-
`,
|
|
32
|
-
imports: [NgtArgs, NgtpEffectBlendMode],
|
|
33
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
34
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
35
|
-
hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
|
|
36
|
-
}]
|
|
37
|
-
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZ2h0bmVzcy1jb250cmFzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2JyaWdodG5lc3MtY29udHJhc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUU1RCxNQUFNLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7QUFrQnJDLE1BQU0sT0FBTyxzQkFBc0I7SUFkbkM7UUFlQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBb0QsQ0FBQyxDQUFDO0tBQ3RFOytHQUhZLHNCQUFzQjttR0FBdEIsc0JBQXNCLGdWQVh4Qjs7Ozs7RUFLVCw0REFDUyxPQUFPLGdGQUFFLG1CQUFtQjs7NEZBSzFCLHNCQUFzQjtrQkFkbEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7OztFQUtUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQztvQkFDdkMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7aUJBQ2pGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBCcmlnaHRuZXNzQ29udHJhc3RFZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBOZ3RwRWZmZWN0LCBOZ3RwRWZmZWN0QmxlbmRNb2RlIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgQnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IH0pO1xuXG5leHBvcnQgdHlwZSBCcmlnaHRuZXNzRWZmZWN0T3B0aW9ucyA9IE5vbk51bGxhYmxlPENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgQnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0PlswXT47XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtYnJpZ2h0bmVzcy1jb250cmFzdCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1icmlnaHRuZXNzLWNvbnRyYXN0LWVmZmVjdCAqYXJncz1cIltvcHRpb25zKCldXCIgW2NhbWVyYV09XCJlZmZlY3QuY2FtZXJhKClcIj5cblx0XHRcdDxuZ3RwLWVmZmVjdC1ibGVuZC1tb2RlIC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWJyaWdodG5lc3MtY29udHJhc3QtZWZmZWN0PlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJncywgTmd0cEVmZmVjdEJsZW5kTW9kZV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGhvc3REaXJlY3RpdmVzOiBbeyBkaXJlY3RpdmU6IE5ndHBFZmZlY3QsIGlucHV0czogWydibGVuZEZ1bmN0aW9uJywgJ29wYWNpdHknXSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cEJyaWdodG5lc3NDb250cmFzdCB7XG5cdGVmZmVjdCA9IGluamVjdChOZ3RwRWZmZWN0LCB7IGhvc3Q6IHRydWUgfSk7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBPbWl0PEJyaWdodG5lc3NFZmZlY3RPcHRpb25zLCAnYmxlbmRGdW5jdGlvbic+KTtcbn1cbiJdfQ==
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
|
|
2
|
-
import { NgtArgs, extend } from 'angular-three';
|
|
3
|
-
import { ChromaticAberrationEffect } from 'postprocessing';
|
|
4
|
-
import { NgtpEffect, NgtpEffectBlendMode } from '../effect';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../effect";
|
|
7
|
-
extend({ ChromaticAberrationEffect });
|
|
8
|
-
export class NgtpChromaticAberration {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.effect = inject(NgtpEffect, { host: true });
|
|
11
|
-
this.options = input({});
|
|
12
|
-
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpChromaticAberration, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpChromaticAberration, isStandalone: true, selector: "ngtp-chromatic-aberration", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtpEffect, inputs: ["blendFunction", "blendFunction", "opacity", "opacity"] }], ngImport: i0, template: `
|
|
15
|
-
<ngt-chromatic-aberration-effect *args="[options()]" [camera]="effect.camera()">
|
|
16
|
-
<ngtp-effect-blend-mode />
|
|
17
|
-
<ng-content />
|
|
18
|
-
</ngt-chromatic-aberration-effect>
|
|
19
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtpEffectBlendMode, selector: "ngtp-effect-blend-mode" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpChromaticAberration, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{
|
|
24
|
-
selector: 'ngtp-chromatic-aberration',
|
|
25
|
-
template: `
|
|
26
|
-
<ngt-chromatic-aberration-effect *args="[options()]" [camera]="effect.camera()">
|
|
27
|
-
<ngtp-effect-blend-mode />
|
|
28
|
-
<ng-content />
|
|
29
|
-
</ngt-chromatic-aberration-effect>
|
|
30
|
-
`,
|
|
31
|
-
standalone: true,
|
|
32
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
33
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
34
|
-
imports: [NgtArgs, NgtpEffectBlendMode],
|
|
35
|
-
hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
|
|
36
|
-
}]
|
|
37
|
-
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyb21hdGljLWFiYmVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9jaHJvbWF0aWMtYWJiZXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRTVELE1BQU0sQ0FBQyxFQUFFLHlCQUF5QixFQUFFLENBQUMsQ0FBQztBQW9CdEMsTUFBTSxPQUFPLHVCQUF1QjtJQWRwQztRQWVDLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUE2RCxDQUFDLENBQUM7S0FDL0U7K0dBSFksdUJBQXVCO21HQUF2Qix1QkFBdUIsaVZBWnpCOzs7OztFQUtULDREQUlTLE9BQU8sZ0ZBQUUsbUJBQW1COzs0RkFHMUIsdUJBQXVCO2tCQWRuQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7RUFLVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZDLGNBQWMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztpQkFDakYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBleHRlbmQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IENocm9tYXRpY0FiZXJyYXRpb25FZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBOZ3RwRWZmZWN0LCBOZ3RwRWZmZWN0QmxlbmRNb2RlIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgQ2hyb21hdGljQWJlcnJhdGlvbkVmZmVjdCB9KTtcblxuZXhwb3J0IHR5cGUgQ2hyb21hdGljQWJlcnJhdGlvbkVmZmVjdE9wdGlvbnMgPSBQYXJ0aWFsPFxuXHROb25OdWxsYWJsZTxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIENocm9tYXRpY0FiZXJyYXRpb25FZmZlY3Q+WzBdPlxuPjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1jaHJvbWF0aWMtYWJlcnJhdGlvbicsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1jaHJvbWF0aWMtYWJlcnJhdGlvbi1lZmZlY3QgKmFyZ3M9XCJbb3B0aW9ucygpXVwiIFtjYW1lcmFdPVwiZWZmZWN0LmNhbWVyYSgpXCI+XG5cdFx0XHQ8bmd0cC1lZmZlY3QtYmxlbmQtbW9kZSAvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1jaHJvbWF0aWMtYWJlcnJhdGlvbi1lZmZlY3Q+XG5cdGAsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RwRWZmZWN0QmxlbmRNb2RlXSxcblx0aG9zdERpcmVjdGl2ZXM6IFt7IGRpcmVjdGl2ZTogTmd0cEVmZmVjdCwgaW5wdXRzOiBbJ2JsZW5kRnVuY3Rpb24nLCAnb3BhY2l0eSddIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RwQ2hyb21hdGljQWJlcnJhdGlvbiB7XG5cdGVmZmVjdCA9IGluamVjdChOZ3RwRWZmZWN0LCB7IGhvc3Q6IHRydWUgfSk7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBPbWl0PENocm9tYXRpY0FiZXJyYXRpb25FZmZlY3RPcHRpb25zLCAnYmxlbmRGdW5jdGlvbic+KTtcbn1cbiJdfQ==
|