angular-three-postprocessing 2.0.0-beta.25 → 2.0.0-beta.250

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/esm2022/lib/effect-composer.mjs +118 -167
  2. package/esm2022/lib/effect.mjs +43 -71
  3. package/esm2022/lib/effects/ascii.mjs +120 -0
  4. package/esm2022/lib/effects/bloom.mjs +39 -0
  5. package/esm2022/lib/effects/brightness-contrast.mjs +38 -0
  6. package/esm2022/lib/effects/chromatic-abberation.mjs +38 -0
  7. package/esm2022/lib/effects/color-average.mjs +33 -0
  8. package/esm2022/lib/effects/color-depth.mjs +38 -0
  9. package/esm2022/lib/effects/depth-of-field.mjs +56 -0
  10. package/esm2022/lib/effects/depth.mjs +38 -0
  11. package/esm2022/lib/effects/dot-screen.mjs +38 -0
  12. package/esm2022/lib/effects/fxaa.mjs +38 -0
  13. package/esm2022/lib/effects/glitch.mjs +63 -0
  14. package/esm2022/lib/effects/god-rays.mjs +41 -0
  15. package/esm2022/lib/effects/grid.mjs +44 -0
  16. package/esm2022/lib/effects/hue-saturation.mjs +38 -0
  17. package/esm2022/lib/effects/index.mjs +27 -18
  18. package/esm2022/lib/effects/lens-flare.mjs +194 -0
  19. package/esm2022/lib/effects/lut.mjs +50 -0
  20. package/esm2022/lib/effects/noise.mjs +39 -0
  21. package/esm2022/lib/effects/pixelation.mjs +30 -0
  22. package/esm2022/lib/effects/scanline.mjs +43 -0
  23. package/esm2022/lib/effects/sepia.mjs +38 -0
  24. package/esm2022/lib/effects/shock-wave.mjs +38 -0
  25. package/esm2022/lib/effects/smaa.mjs +38 -0
  26. package/esm2022/lib/effects/tilt-shift-2.mjs +121 -0
  27. package/esm2022/lib/effects/tilt-shift.mjs +39 -0
  28. package/esm2022/lib/effects/vignette.mjs +38 -0
  29. package/esm2022/lib/effects/water.mjs +64 -0
  30. package/fesm2022/angular-three-postprocessing.mjs +1147 -654
  31. package/fesm2022/angular-three-postprocessing.mjs.map +1 -1
  32. package/lib/effect-composer.d.ts +63 -66
  33. package/lib/effect.d.ts +54 -25
  34. package/lib/effects/ascii.d.ts +23 -0
  35. package/lib/effects/bloom.d.ts +10 -0
  36. package/lib/effects/brightness-contrast.d.ts +15 -0
  37. package/lib/effects/chromatic-abberation.d.ts +16 -0
  38. package/lib/effects/color-average.d.ts +11 -0
  39. package/lib/effects/color-depth.d.ts +14 -0
  40. package/lib/effects/depth-of-field.d.ts +29 -0
  41. package/lib/effects/depth.d.ts +14 -0
  42. package/lib/effects/dot-screen.d.ts +15 -0
  43. package/lib/effects/fxaa.d.ts +13 -0
  44. package/lib/effects/glitch.d.ts +29 -0
  45. package/lib/effects/god-rays.d.ts +37 -0
  46. package/lib/effects/grid.d.ts +23 -0
  47. package/lib/effects/hue-saturation.d.ts +15 -0
  48. package/lib/effects/index.d.ts +26 -17
  49. package/lib/effects/lens-flare.d.ts +110 -0
  50. package/lib/effects/lut.d.ts +19 -0
  51. package/lib/effects/noise.d.ts +14 -0
  52. package/lib/effects/pixelation.d.ts +16 -0
  53. package/lib/effects/scanline.d.ts +17 -0
  54. package/lib/effects/sepia.d.ts +14 -0
  55. package/lib/effects/shock-wave.d.ts +11 -0
  56. package/lib/effects/smaa.d.ts +15 -0
  57. package/lib/effects/tilt-shift-2.d.ts +35 -0
  58. package/lib/effects/tilt-shift.d.ts +22 -0
  59. package/lib/effects/vignette.d.ts +17 -0
  60. package/lib/effects/water.d.ts +20 -0
  61. package/package.json +13 -6
  62. package/esm2022/lib/effects/bloom/bloom.mjs +0 -33
  63. package/esm2022/lib/effects/brightness-contrast/brightness-contrast.mjs +0 -29
  64. package/esm2022/lib/effects/color-depth/color-depth.mjs +0 -29
  65. package/esm2022/lib/effects/depth/depth.mjs +0 -29
  66. package/esm2022/lib/effects/dot-screen/dot-screen.mjs +0 -29
  67. package/esm2022/lib/effects/hue-saturation/hue-saturation.mjs +0 -29
  68. package/esm2022/lib/effects/lut/lut.mjs +0 -74
  69. package/esm2022/lib/effects/noise/noise.mjs +0 -33
  70. package/esm2022/lib/effects/pixelation/pixelation.mjs +0 -37
  71. package/esm2022/lib/effects/scanline/scanline.mjs +0 -33
  72. package/esm2022/lib/effects/sepia/sepia.mjs +0 -29
  73. package/esm2022/lib/effects/shock-wave/shock-wave.mjs +0 -29
  74. package/esm2022/lib/effects/smaa/smaa.mjs +0 -29
  75. package/esm2022/lib/effects/ssao/ssao.mjs +0 -217
  76. package/esm2022/lib/effects/tilt-shift/tilt-shift.mjs +0 -33
  77. package/esm2022/lib/effects/tone-mapping/tone-mapping.mjs +0 -29
  78. package/esm2022/lib/effects/vignette/vignette.mjs +0 -29
  79. package/lib/effects/bloom/bloom.d.ts +0 -13
  80. package/lib/effects/brightness-contrast/brightness-contrast.d.ts +0 -15
  81. package/lib/effects/color-depth/color-depth.d.ts +0 -14
  82. package/lib/effects/depth/depth.d.ts +0 -14
  83. package/lib/effects/dot-screen/dot-screen.d.ts +0 -15
  84. package/lib/effects/hue-saturation/hue-saturation.d.ts +0 -15
  85. package/lib/effects/lut/lut.d.ts +0 -29
  86. package/lib/effects/noise/noise.d.ts +0 -15
  87. package/lib/effects/pixelation/pixelation.d.ts +0 -20
  88. package/lib/effects/scanline/scanline.d.ts +0 -15
  89. package/lib/effects/sepia/sepia.d.ts +0 -14
  90. package/lib/effects/shock-wave/shock-wave.d.ts +0 -17
  91. package/lib/effects/smaa/smaa.d.ts +0 -16
  92. package/lib/effects/ssao/ssao.d.ts +0 -42
  93. package/lib/effects/tilt-shift/tilt-shift.d.ts +0 -23
  94. package/lib/effects/tone-mapping/tone-mapping.d.ts +0 -22
  95. package/lib/effects/vignette/vignette.d.ts +0 -17
@@ -0,0 +1,120 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, 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 = `
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
+ }
102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtpASCII, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
103
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: NgtpASCII, isStandalone: true, selector: "ngtp-ascii", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
104
+ <ngt-primitive *args="[effect()]" />
105
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtpASCII, decorators: [{
108
+ type: Component,
109
+ args: [{
110
+ selector: 'ngtp-ascii',
111
+ standalone: true,
112
+ template: `
113
+ <ngt-primitive *args="[effect()]" />
114
+ `,
115
+ imports: [NgtArgs],
116
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
117
+ changeDetection: ChangeDetectionStrategy.OnPush,
118
+ }]
119
+ }] });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNjaWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9hc2NpaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFOUYsTUFBTSxRQUFRLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXVDaEIsQ0FBQztBQVdGLE1BQU0sT0FBTyxXQUFZLFNBQVEsTUFBTTtJQUN0QyxZQUFZLEVBQ1gsSUFBSSxHQUFHLE9BQU8sRUFDZCxVQUFVLEdBQUcsc0JBQXNCLEVBQ25DLFFBQVEsR0FBRyxFQUFFLEVBQ2IsUUFBUSxHQUFHLEVBQUUsRUFDYixLQUFLLEdBQUcsU0FBUyxFQUNqQixNQUFNLEdBQUcsS0FBSyxNQUNTLEVBQUU7UUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQWtCO1lBQ3pDLENBQUMsYUFBYSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDLFdBQVcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxDQUFDLGtCQUFrQixFQUFFLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxDQUFDLFFBQVEsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2hDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUU3QyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxFLElBQUksd0JBQXdCLEVBQUUsQ0FBQztZQUM5Qix3QkFBd0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNGLENBQUM7SUFFRCw2REFBNkQ7SUFDdEQsdUJBQXVCLENBQUMsVUFBa0IsRUFBRSxJQUFZLEVBQUUsUUFBZ0I7UUFDaEYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxXQUFXLENBQUM7UUFFaEMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25ILE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsR0FBRyxRQUFRLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDdkMsT0FBTyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDN0IsT0FBTyxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7UUFDaEMsT0FBTyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFFM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1QyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUMxQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUN0QyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE9BQU8sT0FBTyxDQUFDO0lBQ2hCLENBQUM7Q0FDRDtBQUVELE1BQU0sY0FBYyxHQUF1QjtJQUMxQyxJQUFJLEVBQUUsT0FBTztJQUNiLFVBQVUsRUFBRSxzQkFBc0I7SUFDbEMsUUFBUSxFQUFFLEVBQUU7SUFDWixRQUFRLEVBQUUsRUFBRTtJQUNaLEtBQUssRUFBRSxTQUFTO0lBQ2hCLE1BQU0sRUFBRSxLQUFLO0NBQ2IsQ0FBQztBQVlGLE1BQU0sT0FBTyxTQUFTO0lBVnRCO1FBV0MsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDekQ7OEdBSFksU0FBUztrR0FBVCxTQUFTLGdOQVBYOztFQUVULDREQUNTLE9BQU87OzJGQUlMLFNBQVM7a0JBVnJCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7O0VBRVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBFZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBDYW52YXNUZXh0dXJlLCBDb2xvciwgTmVhcmVzdEZpbHRlciwgUmVwZWF0V3JhcHBpbmcsIFRleHR1cmUsIFVuaWZvcm0gfSBmcm9tICd0aHJlZSc7XG5cbmNvbnN0IGZyYWdtZW50ID0gYFxudW5pZm9ybSBzYW1wbGVyMkQgdUNoYXJhY3RlcnM7XG51bmlmb3JtIGZsb2F0IHVDaGFyYWN0ZXJzQ291bnQ7XG51bmlmb3JtIGZsb2F0IHVDZWxsU2l6ZTtcbnVuaWZvcm0gYm9vbCB1SW52ZXJ0O1xudW5pZm9ybSB2ZWMzIHVDb2xvcjtcblxuY29uc3QgdmVjMiBTSVpFID0gdmVjMigxNi4pO1xuXG52ZWMzIGdyZXlzY2FsZSh2ZWMzIGNvbG9yLCBmbG9hdCBzdHJlbmd0aCkge1xuICAgIGZsb2F0IGcgPSBkb3QoY29sb3IsIHZlYzMoMC4yOTksIDAuNTg3LCAwLjExNCkpO1xuICAgIHJldHVybiBtaXgoY29sb3IsIHZlYzMoZyksIHN0cmVuZ3RoKTtcbn1cblxudmVjMyBncmV5c2NhbGUodmVjMyBjb2xvcikge1xuICAgIHJldHVybiBncmV5c2NhbGUoY29sb3IsIDEuMCk7XG59XG5cbnZvaWQgbWFpbkltYWdlKGNvbnN0IGluIHZlYzQgaW5wdXRDb2xvciwgY29uc3QgaW4gdmVjMiB1diwgb3V0IHZlYzQgb3V0cHV0Q29sb3IpIHtcbiAgICB2ZWMyIGNlbGwgPSByZXNvbHV0aW9uIC8gdUNlbGxTaXplO1xuICAgIHZlYzIgZ3JpZCA9IDEuMCAvIGNlbGw7XG4gICAgdmVjMiBwaXhlbGl6ZWRVViA9IGdyaWQgKiAoMC41ICsgZmxvb3IodXYgLyBncmlkKSk7XG4gICAgdmVjNCBwaXhlbGl6ZWQgPSB0ZXh0dXJlMkQoaW5wdXRCdWZmZXIsIHBpeGVsaXplZFVWKTtcbiAgICBmbG9hdCBncmV5c2NhbGVkID0gZ3JleXNjYWxlKHBpeGVsaXplZC5yZ2IpLnI7XG5cbiAgICBpZiAodUludmVydCkge1xuICAgICAgICBncmV5c2NhbGVkID0gMS4wIC0gZ3JleXNjYWxlZDtcbiAgICB9XG5cbiAgICBmbG9hdCBjaGFyYWN0ZXJJbmRleCA9IGZsb29yKCh1Q2hhcmFjdGVyc0NvdW50IC0gMS4wKSAqIGdyZXlzY2FsZWQpO1xuICAgIHZlYzIgY2hhcmFjdGVyUG9zaXRpb24gPSB2ZWMyKG1vZChjaGFyYWN0ZXJJbmRleCwgU0laRS54KSwgZmxvb3IoY2hhcmFjdGVySW5kZXggLyBTSVpFLnkpKTtcbiAgICB2ZWMyIG9mZnNldCA9IHZlYzIoY2hhcmFjdGVyUG9zaXRpb24ueCwgLWNoYXJhY3RlclBvc2l0aW9uLnkpIC8gU0laRTtcbiAgICB2ZWMyIGNoYXJVViA9IG1vZCh1diAqIChjZWxsIC8gU0laRSksIDEuMCAvIFNJWkUpIC0gdmVjMigwLiwgMS4wIC8gU0laRSkgKyBvZmZzZXQ7XG4gICAgdmVjNCBhc2NpaUNoYXJhY3RlciA9IHRleHR1cmUyRCh1Q2hhcmFjdGVycywgY2hhclVWKTtcblxuICAgIGFzY2lpQ2hhcmFjdGVyLnJnYiA9IHVDb2xvciAqIGFzY2lpQ2hhcmFjdGVyLnI7XG4gICAgYXNjaWlDaGFyYWN0ZXIuYSA9IHBpeGVsaXplZC5hO1xuICAgIG91dHB1dENvbG9yID0gYXNjaWlDaGFyYWN0ZXI7XG59XG5gO1xuXG5pbnRlcmZhY2UgQVNDSUlFZmZlY3RPcHRpb25zIHtcblx0Zm9udD86IHN0cmluZztcblx0Y2hhcmFjdGVycz86IHN0cmluZztcblx0Zm9udFNpemU/OiBudW1iZXI7XG5cdGNlbGxTaXplPzogbnVtYmVyO1xuXHRjb2xvcj86IHN0cmluZztcblx0aW52ZXJ0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEFTQ0lJRWZmZWN0IGV4dGVuZHMgRWZmZWN0IHtcblx0Y29uc3RydWN0b3Ioe1xuXHRcdGZvbnQgPSAnYXJpYWwnLFxuXHRcdGNoYXJhY3RlcnMgPSBgIC46LCctXj0qKz8hfDAjWCVXTUBgLFxuXHRcdGZvbnRTaXplID0gNTQsXG5cdFx0Y2VsbFNpemUgPSAxNixcblx0XHRjb2xvciA9ICcjZmZmZmZmJyxcblx0XHRpbnZlcnQgPSBmYWxzZSxcblx0fTogQVNDSUlFZmZlY3RPcHRpb25zID0ge30pIHtcblx0XHRjb25zdCB1bmlmb3JtcyA9IG5ldyBNYXA8c3RyaW5nLCBVbmlmb3JtPihbXG5cdFx0XHRbJ3VDaGFyYWN0ZXJzJywgbmV3IFVuaWZvcm0obmV3IFRleHR1cmUoKSldLFxuXHRcdFx0Wyd1Q2VsbFNpemUnLCBuZXcgVW5pZm9ybShjZWxsU2l6ZSldLFxuXHRcdFx0Wyd1Q2hhcmFjdGVyc0NvdW50JywgbmV3IFVuaWZvcm0oY2hhcmFjdGVycy5sZW5ndGgpXSxcblx0XHRcdFsndUNvbG9yJywgbmV3IFVuaWZvcm0obmV3IENvbG9yKGNvbG9yKSldLFxuXHRcdFx0Wyd1SW52ZXJ0JywgbmV3IFVuaWZvcm0oaW52ZXJ0KV0sXG5cdFx0XSk7XG5cblx0XHRzdXBlcignQVNDSUlFZmZlY3QnLCBmcmFnbWVudCwgeyB1bmlmb3JtcyB9KTtcblxuXHRcdGNvbnN0IGNoYXJhY3RlcnNUZXh0dXJlVW5pZm9ybSA9IHRoaXMudW5pZm9ybXMuZ2V0KCd1Q2hhcmFjdGVycycpO1xuXG5cdFx0aWYgKGNoYXJhY3RlcnNUZXh0dXJlVW5pZm9ybSkge1xuXHRcdFx0Y2hhcmFjdGVyc1RleHR1cmVVbmlmb3JtLnZhbHVlID0gdGhpcy5jcmVhdGVDaGFyYWN0ZXJzVGV4dHVyZShjaGFyYWN0ZXJzLCBmb250LCBmb250U2l6ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIERyYXdzIHRoZSBjaGFyYWN0ZXJzIG9uIGEgQ2FudmFzIGFuZCByZXR1cm5zIGEgdGV4dHVyZSAqL1xuXHRwdWJsaWMgY3JlYXRlQ2hhcmFjdGVyc1RleHR1cmUoY2hhcmFjdGVyczogc3RyaW5nLCBmb250OiBzdHJpbmcsIGZvbnRTaXplOiBudW1iZXIpOiBUZXh0dXJlIHtcblx0XHRjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcblx0XHRjb25zdCBTSVpFID0gMTAyNDtcblx0XHRjb25zdCBNQVhfUEVSX1JPVyA9IDE2O1xuXHRcdGNvbnN0IENFTEwgPSBTSVpFIC8gTUFYX1BFUl9ST1c7XG5cblx0XHRjYW52YXMud2lkdGggPSBjYW52YXMuaGVpZ2h0ID0gU0laRTtcblx0XHRjb25zdCB0ZXh0dXJlID0gbmV3IENhbnZhc1RleHR1cmUoY2FudmFzLCB1bmRlZmluZWQsIFJlcGVhdFdyYXBwaW5nLCBSZXBlYXRXcmFwcGluZywgTmVhcmVzdEZpbHRlciwgTmVhcmVzdEZpbHRlcik7XG5cdFx0Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG5cdFx0aWYgKCFjb250ZXh0KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NvbnRleHQgbm90IGF2YWlsYWJsZScpO1xuXHRcdH1cblxuXHRcdGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIFNJWkUsIFNJWkUpO1xuXHRcdGNvbnRleHQuZm9udCA9IGAke2ZvbnRTaXplfXB4ICR7Zm9udH1gO1xuXHRcdGNvbnRleHQudGV4dEFsaWduID0gJ2NlbnRlcic7XG5cdFx0Y29udGV4dC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcblx0XHRjb250ZXh0LmZpbGxTdHlsZSA9ICcjZmZmJztcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgY2hhciA9IGNoYXJhY3RlcnNbaV07XG5cdFx0XHRjb25zdCB4ID0gaSAlIE1BWF9QRVJfUk9XO1xuXHRcdFx0Y29uc3QgeSA9IE1hdGguZmxvb3IoaSAvIE1BWF9QRVJfUk9XKTtcblx0XHRcdGNvbnRleHQuZmlsbFRleHQoY2hhciwgeCAqIENFTEwgKyBDRUxMIC8gMiwgeSAqIENFTEwgKyBDRUxMIC8gMik7XG5cdFx0fVxuXG5cdFx0dGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XG5cdFx0cmV0dXJuIHRleHR1cmU7XG5cdH1cbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IEFTQ0lJRWZmZWN0T3B0aW9ucyA9IHtcblx0Zm9udDogJ2FyaWFsJyxcblx0Y2hhcmFjdGVyczogYCAuOiwnLV49Kis/IXwwI1glV01AYCxcblx0Zm9udFNpemU6IDU0LFxuXHRjZWxsU2l6ZTogMTYsXG5cdGNvbG9yOiAnI2ZmZmZmZicsXG5cdGludmVydDogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RwLWFzY2lpJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltlZmZlY3QoKV1cIiAvPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBBU0NJSSB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0ZWZmZWN0ID0gY29tcHV0ZWQoKCkgPT4gbmV3IEFTQ0lJRWZmZWN0KHRoaXMub3B0aW9ucygpKSk7XG59XG4iXX0=
@@ -0,0 +1,39 @@
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, NgtpEffectHostDirective, 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.0.6", ngImport: i0, type: NgtpBloom, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", 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.0.6", 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: [NgtpEffectHostDirective],
36
+ providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],
37
+ }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvb20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9ibG9vbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRWxILE1BQU0sQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFpQnhCLE1BQU0sT0FBTyxTQUFTO0lBZnRCO1FBZ0JDLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUErQyxDQUFDLENBQUM7S0FDakU7OEdBSFksU0FBUztrR0FBVCxTQUFTLG1NQUZWLENBQUMsMkJBQTJCLENBQUMsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsNElBVnBFOzs7OztFQUtULDREQUNTLE9BQU8sZ0ZBQUUsbUJBQW1COzsyRkFNMUIsU0FBUztrQkFmckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7RUFLVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsY0FBYyxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2lCQUM5RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGV4dGVuZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgQmxlbmRGdW5jdGlvbiwgQmxvb21FZmZlY3QsIEJsb29tRWZmZWN0T3B0aW9ucyB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIE5ndHBFZmZlY3RCbGVuZE1vZGUsIE5ndHBFZmZlY3RIb3N0RGlyZWN0aXZlLCBwcm92aWRlRGVmYXVsdEVmZmVjdE9wdGlvbnMgfSBmcm9tICcuLi9lZmZlY3QnO1xuXG5leHRlbmQoeyBCbG9vbUVmZmVjdCB9KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1ibG9vbScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ibG9vbS1lZmZlY3QgKmFyZ3M9XCJbb3B0aW9ucygpXVwiIFtjYW1lcmFdPVwiZWZmZWN0LmNhbWVyYSgpXCI+XG5cdFx0XHQ8bmd0cC1lZmZlY3QtYmxlbmQtbW9kZSAvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1ibG9vbS1lZmZlY3Q+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RwRWZmZWN0QmxlbmRNb2RlXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aG9zdERpcmVjdGl2ZXM6IFtOZ3RwRWZmZWN0SG9zdERpcmVjdGl2ZV0sXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVEZWZhdWx0RWZmZWN0T3B0aW9ucyh7IGJsZW5kRnVuY3Rpb246IEJsZW5kRnVuY3Rpb24uQUREIH0pXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cEJsb29tIHtcblx0ZWZmZWN0ID0gaW5qZWN0KE5ndHBFZmZlY3QsIHsgaG9zdDogdHJ1ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIE9taXQ8Qmxvb21FZmZlY3RPcHRpb25zLCAnYmxlbmRGdW5jdGlvbic+KTtcbn1cbiJdfQ==
@@ -0,0 +1,38 @@
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, NgtpEffectHostDirective } 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.0.6", ngImport: i0, type: NgtpBrightnessContrast, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", 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.0.6", 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: [NgtpEffectHostDirective],
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZ2h0bmVzcy1jb250cmFzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2JyaWdodG5lc3MtY29udHJhc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUVyRixNQUFNLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7QUFrQnJDLE1BQU0sT0FBTyxzQkFBc0I7SUFkbkM7UUFlQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBb0QsQ0FBQyxDQUFDO0tBQ3RFOzhHQUhZLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGdWQVh4Qjs7Ozs7RUFLVCw0REFDUyxPQUFPLGdGQUFFLG1CQUFtQjs7MkZBSzFCLHNCQUFzQjtrQkFkbEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7OztFQUtUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQztvQkFDdkMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxjQUFjLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBleHRlbmQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEJyaWdodG5lc3NDb250cmFzdEVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIE5ndHBFZmZlY3RCbGVuZE1vZGUsIE5ndHBFZmZlY3RIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgQnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IH0pO1xuXG5leHBvcnQgdHlwZSBCcmlnaHRuZXNzRWZmZWN0T3B0aW9ucyA9IE5vbk51bGxhYmxlPENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgQnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0PlswXT47XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtYnJpZ2h0bmVzcy1jb250cmFzdCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1icmlnaHRuZXNzLWNvbnRyYXN0LWVmZmVjdCAqYXJncz1cIltvcHRpb25zKCldXCIgW2NhbWVyYV09XCJlZmZlY3QuY2FtZXJhKClcIj5cblx0XHRcdDxuZ3RwLWVmZmVjdC1ibGVuZC1tb2RlIC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWJyaWdodG5lc3MtY29udHJhc3QtZWZmZWN0PlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJncywgTmd0cEVmZmVjdEJsZW5kTW9kZV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGhvc3REaXJlY3RpdmVzOiBbTmd0cEVmZmVjdEhvc3REaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RwQnJpZ2h0bmVzc0NvbnRyYXN0IHtcblx0ZWZmZWN0ID0gaW5qZWN0KE5ndHBFZmZlY3QsIHsgaG9zdDogdHJ1ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIE9taXQ8QnJpZ2h0bmVzc0VmZmVjdE9wdGlvbnMsICdibGVuZEZ1bmN0aW9uJz4pO1xufVxuIl19
@@ -0,0 +1,38 @@
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, NgtpEffectHostDirective } 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.0.6", ngImport: i0, type: NgtpChromaticAberration, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", 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.0.6", 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: [NgtpEffectHostDirective],
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyb21hdGljLWFiYmVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9jaHJvbWF0aWMtYWJiZXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRXJGLE1BQU0sQ0FBQyxFQUFFLHlCQUF5QixFQUFFLENBQUMsQ0FBQztBQW9CdEMsTUFBTSxPQUFPLHVCQUF1QjtJQWRwQztRQWVDLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUE2RCxDQUFDLENBQUM7S0FDL0U7OEdBSFksdUJBQXVCO2tHQUF2Qix1QkFBdUIsaVZBWnpCOzs7OztFQUtULDREQUlTLE9BQU8sZ0ZBQUUsbUJBQW1COzsyRkFHMUIsdUJBQXVCO2tCQWRuQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7RUFLVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZDLGNBQWMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGV4dGVuZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgQ2hyb21hdGljQWJlcnJhdGlvbkVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIE5ndHBFZmZlY3RCbGVuZE1vZGUsIE5ndHBFZmZlY3RIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgQ2hyb21hdGljQWJlcnJhdGlvbkVmZmVjdCB9KTtcblxuZXhwb3J0IHR5cGUgQ2hyb21hdGljQWJlcnJhdGlvbkVmZmVjdE9wdGlvbnMgPSBQYXJ0aWFsPFxuXHROb25OdWxsYWJsZTxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIENocm9tYXRpY0FiZXJyYXRpb25FZmZlY3Q+WzBdPlxuPjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1jaHJvbWF0aWMtYWJlcnJhdGlvbicsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1jaHJvbWF0aWMtYWJlcnJhdGlvbi1lZmZlY3QgKmFyZ3M9XCJbb3B0aW9ucygpXVwiIFtjYW1lcmFdPVwiZWZmZWN0LmNhbWVyYSgpXCI+XG5cdFx0XHQ8bmd0cC1lZmZlY3QtYmxlbmQtbW9kZSAvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1jaHJvbWF0aWMtYWJlcnJhdGlvbi1lZmZlY3Q+XG5cdGAsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RwRWZmZWN0QmxlbmRNb2RlXSxcblx0aG9zdERpcmVjdGl2ZXM6IFtOZ3RwRWZmZWN0SG9zdERpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBDaHJvbWF0aWNBYmVycmF0aW9uIHtcblx0ZWZmZWN0ID0gaW5qZWN0KE5ndHBFZmZlY3QsIHsgaG9zdDogdHJ1ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIE9taXQ8Q2hyb21hdGljQWJlcnJhdGlvbkVmZmVjdE9wdGlvbnMsICdibGVuZEZ1bmN0aW9uJz4pO1xufVxuIl19
@@ -0,0 +1,33 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import { NgtArgs, extend } from 'angular-three';
3
+ import { mergeInputs } from 'ngxtension/inject-inputs';
4
+ import { BlendFunction, ColorAverageEffect } from 'postprocessing';
5
+ import * as i0 from "@angular/core";
6
+ extend({ ColorAverageEffect });
7
+ export class NgtpColorAverage {
8
+ constructor() {
9
+ this.options = input({ blendFunction: BlendFunction.NORMAL }, { transform: mergeInputs({ blendFunction: BlendFunction.NORMAL }) });
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtpColorAverage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: NgtpColorAverage, isStandalone: true, selector: "ngtp-color-average", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
13
+ <ngt-color-average-effect *args="[options().blendFunction]">
14
+ <ng-content />
15
+ </ngt-color-average-effect>
16
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtpColorAverage, decorators: [{
19
+ type: Component,
20
+ args: [{
21
+ selector: 'ngtp-color-average',
22
+ standalone: true,
23
+ template: `
24
+ <ngt-color-average-effect *args="[options().blendFunction]">
25
+ <ng-content />
26
+ </ngt-color-average-effect>
27
+ `,
28
+ imports: [NgtArgs],
29
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
30
+ changeDetection: ChangeDetectionStrategy.OnPush,
31
+ }]
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItYXZlcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2NvbG9yLWF2ZXJhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFbkUsTUFBTSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBYy9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFaN0I7UUFhQyxZQUFPLEdBQUcsS0FBSyxDQUNkLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsRUFDdkMsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQ25FLENBQUM7S0FDRjs4R0FMWSxnQkFBZ0I7a0dBQWhCLGdCQUFnQix3TkFUbEI7Ozs7RUFJVCw0REFDUyxPQUFPOzsyRkFJTCxnQkFBZ0I7a0JBWjVCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBleHRlbmQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEJsZW5kRnVuY3Rpb24sIENvbG9yQXZlcmFnZUVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcblxuZXh0ZW5kKHsgQ29sb3JBdmVyYWdlRWZmZWN0IH0pO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RwLWNvbG9yLWF2ZXJhZ2UnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtY29sb3ItYXZlcmFnZS1lZmZlY3QgKmFyZ3M9XCJbb3B0aW9ucygpLmJsZW5kRnVuY3Rpb25dXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWNvbG9yLWF2ZXJhZ2UtZWZmZWN0PlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBDb2xvckF2ZXJhZ2Uge1xuXHRvcHRpb25zID0gaW5wdXQoXG5cdFx0eyBibGVuZEZ1bmN0aW9uOiBCbGVuZEZ1bmN0aW9uLk5PUk1BTCB9LFxuXHRcdHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyh7IGJsZW5kRnVuY3Rpb246IEJsZW5kRnVuY3Rpb24uTk9STUFMIH0pIH0sXG5cdCk7XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
2
+ import { NgtArgs, extend } from 'angular-three';
3
+ import { ColorDepthEffect } from 'postprocessing';
4
+ import { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../effect";
7
+ extend({ ColorDepthEffect });
8
+ export class NgtpColorDepth {
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.0.6", ngImport: i0, type: NgtpColorDepth, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: NgtpColorDepth, isStandalone: true, selector: "ngtp-color-depth", 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-color-depth-effect *args="[options()]" [camera]="effect.camera()">
16
+ <ngtp-effect-blend-mode />
17
+ <ng-content />
18
+ </ngt-color-depth-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.0.6", ngImport: i0, type: NgtpColorDepth, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'ngtp-color-depth',
25
+ template: `
26
+ <ngt-color-depth-effect *args="[options()]" [camera]="effect.camera()">
27
+ <ngtp-effect-blend-mode />
28
+ <ng-content />
29
+ </ngt-color-depth-effect>
30
+ `,
31
+ standalone: true,
32
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
33
+ changeDetection: ChangeDetectionStrategy.OnPush,
34
+ imports: [NgtArgs, NgtpEffectBlendMode],
35
+ hostDirectives: [NgtpEffectHostDirective],
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItZGVwdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9jb2xvci1kZXB0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRXJGLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQWtCN0IsTUFBTSxPQUFPLGNBQWM7SUFkM0I7UUFlQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBb0QsQ0FBQyxDQUFDO0tBQ3RFOzhHQUhZLGNBQWM7a0dBQWQsY0FBYyx3VUFaaEI7Ozs7O0VBS1QsNERBSVMsT0FBTyxnRkFBRSxtQkFBbUI7OzJGQUcxQixjQUFjO2tCQWQxQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRTs7Ozs7RUFLVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZDLGNBQWMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGV4dGVuZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgQ29sb3JEZXB0aEVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIE5ndHBFZmZlY3RCbGVuZE1vZGUsIE5ndHBFZmZlY3RIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgQ29sb3JEZXB0aEVmZmVjdCB9KTtcblxuZXhwb3J0IHR5cGUgQ29sb3JEZXB0aEVmZmVjdE9wdGlvbnMgPSBQYXJ0aWFsPE5vbk51bGxhYmxlPENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgQ29sb3JEZXB0aEVmZmVjdD5bMF0+PjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1jb2xvci1kZXB0aCcsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1jb2xvci1kZXB0aC1lZmZlY3QgKmFyZ3M9XCJbb3B0aW9ucygpXVwiIFtjYW1lcmFdPVwiZWZmZWN0LmNhbWVyYSgpXCI+XG5cdFx0XHQ8bmd0cC1lZmZlY3QtYmxlbmQtbW9kZSAvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1jb2xvci1kZXB0aC1lZmZlY3Q+XG5cdGAsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RwRWZmZWN0QmxlbmRNb2RlXSxcblx0aG9zdERpcmVjdGl2ZXM6IFtOZ3RwRWZmZWN0SG9zdERpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBDb2xvckRlcHRoIHtcblx0ZWZmZWN0ID0gaW5qZWN0KE5ndHBFZmZlY3QsIHsgaG9zdDogdHJ1ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIE9taXQ8Q29sb3JEZXB0aEVmZmVjdE9wdGlvbnMsICdibGVuZEZ1bmN0aW9uJz4pO1xufVxuIl19
@@ -0,0 +1,56 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, afterNextRender, computed, input, } from '@angular/core';
2
+ import { NgtArgs } from 'angular-three';
3
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
4
+ import { DepthOfFieldEffect, MaskFunction } from 'postprocessing';
5
+ import { Vector3 } from 'three';
6
+ import { injectEffectComposerApi } from '../effect-composer';
7
+ import * as i0 from "@angular/core";
8
+ export class NgtpDepthOfField {
9
+ constructor() {
10
+ this.autoEffect = injectAutoEffect();
11
+ this.composerApi = injectEffectComposerApi();
12
+ this.options = input({});
13
+ this.autoFocus = computed(() => this.options().target != null);
14
+ this.effect = computed(() => {
15
+ const [{ camera }, options, autoFocus] = [this.composerApi(), this.options(), this.autoFocus()];
16
+ const effect = new DepthOfFieldEffect(camera, options);
17
+ // Creating a target enables autofocus, R3F will set via props
18
+ if (autoFocus)
19
+ effect.target = new Vector3();
20
+ // Depth texture for depth picking with optional packing strategy
21
+ if (options.depthTexture) {
22
+ effect.setDepthTexture(options.depthTexture.texture, options.depthTexture.packing);
23
+ }
24
+ // Temporary fix that restores DOF 6.21.3 behavior, everything since then lets shapes leak through the blur
25
+ const maskPass = effect.maskPass;
26
+ maskPass.maskFunction = MaskFunction.MULTIPLY_RGB_SET_ALPHA;
27
+ return effect;
28
+ });
29
+ afterNextRender(() => {
30
+ this.autoEffect(() => {
31
+ const effect = this.effect();
32
+ return () => {
33
+ effect.dispose();
34
+ };
35
+ });
36
+ });
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtpDepthOfField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: NgtpDepthOfField, isStandalone: true, selector: "ngtp-depth-of-field", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
40
+ <ngt-primitive *args="[effect()]" />
41
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtpDepthOfField, decorators: [{
44
+ type: Component,
45
+ args: [{
46
+ selector: 'ngtp-depth-of-field',
47
+ standalone: true,
48
+ template: `
49
+ <ngt-primitive *args="[effect()]" />
50
+ `,
51
+ imports: [NgtArgs],
52
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
53
+ changeDetection: ChangeDetectionStrategy.OnPush,
54
+ }]
55
+ }], ctorParameters: () => [] });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGgtb2YtZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9kZXB0aC1vZi1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFFBQVEsRUFDUixLQUFLLEdBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFtQyxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBc0I3RCxNQUFNLE9BQU8sZ0JBQWdCO0lBMEI1QjtRQXpCQSxlQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFFeEMsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUFnQixDQUFDLENBQUM7UUFFbEMsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBRTFELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFFaEcsTUFBTSxNQUFNLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFdkQsOERBQThEO1lBQzlELElBQUksU0FBUztnQkFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0MsaUVBQWlFO1lBQ2pFLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMxQixNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBaUMsQ0FBQyxDQUFDO1lBQzlHLENBQUM7WUFDRCwyR0FBMkc7WUFDM0csTUFBTSxRQUFRLEdBQUksTUFBYyxDQUFDLFFBQVEsQ0FBQztZQUMxQyxRQUFRLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQztZQUU1RCxPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBR0YsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixPQUFPLEdBQUcsRUFBRTtvQkFDWCxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQW5DVyxnQkFBZ0I7a0dBQWhCLGdCQUFnQix5TkFQbEI7O0VBRVQsNERBQ1MsT0FBTzs7MkZBSUwsZ0JBQWdCO2tCQVY1QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7O0VBRVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRjb21wdXRlZCxcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0VmVjdG9yMyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgRGVwdGhPZkZpZWxkRWZmZWN0LCBNYXNrRnVuY3Rpb24gfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBEZXB0aFBhY2tpbmdTdHJhdGVnaWVzLCBUZXh0dXJlLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0RWZmZWN0Q29tcG9zZXJBcGkgfSBmcm9tICcuLi9lZmZlY3QtY29tcG9zZXInO1xuXG50eXBlIERPRk9wdGlvbnMgPSBOb25OdWxsYWJsZTxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIERlcHRoT2ZGaWVsZEVmZmVjdD5bMV0+ICZcblx0UGFydGlhbDx7XG5cdFx0dGFyZ2V0OiBOZ3RWZWN0b3IzO1xuXHRcdGRlcHRoVGV4dHVyZToge1xuXHRcdFx0dGV4dHVyZTogVGV4dHVyZTtcblx0XHRcdC8vIFRPRE86IG5hcnJvdyB0byBEZXB0aFBhY2tpbmdTdHJhdGVnaWVzXG5cdFx0XHRwYWNraW5nOiBudW1iZXI7XG5cdFx0fTtcblx0fT47XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtZGVwdGgtb2YtZmllbGQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2VmZmVjdCgpXVwiIC8+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cERlcHRoT2ZGaWVsZCB7XG5cdGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdGNvbXBvc2VyQXBpID0gaW5qZWN0RWZmZWN0Q29tcG9zZXJBcGkoKTtcblxuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgRE9GT3B0aW9ucyk7XG5cblx0YXV0b0ZvY3VzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkudGFyZ2V0ICE9IG51bGwpO1xuXG5cdGVmZmVjdCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbeyBjYW1lcmEgfSwgb3B0aW9ucywgYXV0b0ZvY3VzXSA9IFt0aGlzLmNvbXBvc2VyQXBpKCksIHRoaXMub3B0aW9ucygpLCB0aGlzLmF1dG9Gb2N1cygpXTtcblxuXHRcdGNvbnN0IGVmZmVjdCA9IG5ldyBEZXB0aE9mRmllbGRFZmZlY3QoY2FtZXJhLCBvcHRpb25zKTtcblxuXHRcdC8vIENyZWF0aW5nIGEgdGFyZ2V0IGVuYWJsZXMgYXV0b2ZvY3VzLCBSM0Ygd2lsbCBzZXQgdmlhIHByb3BzXG5cdFx0aWYgKGF1dG9Gb2N1cykgZWZmZWN0LnRhcmdldCA9IG5ldyBWZWN0b3IzKCk7XG5cdFx0Ly8gRGVwdGggdGV4dHVyZSBmb3IgZGVwdGggcGlja2luZyB3aXRoIG9wdGlvbmFsIHBhY2tpbmcgc3RyYXRlZ3lcblx0XHRpZiAob3B0aW9ucy5kZXB0aFRleHR1cmUpIHtcblx0XHRcdGVmZmVjdC5zZXREZXB0aFRleHR1cmUob3B0aW9ucy5kZXB0aFRleHR1cmUudGV4dHVyZSwgb3B0aW9ucy5kZXB0aFRleHR1cmUucGFja2luZyBhcyBEZXB0aFBhY2tpbmdTdHJhdGVnaWVzKTtcblx0XHR9XG5cdFx0Ly8gVGVtcG9yYXJ5IGZpeCB0aGF0IHJlc3RvcmVzIERPRiA2LjIxLjMgYmVoYXZpb3IsIGV2ZXJ5dGhpbmcgc2luY2UgdGhlbiBsZXRzIHNoYXBlcyBsZWFrIHRocm91Z2ggdGhlIGJsdXJcblx0XHRjb25zdCBtYXNrUGFzcyA9IChlZmZlY3QgYXMgYW55KS5tYXNrUGFzcztcblx0XHRtYXNrUGFzcy5tYXNrRnVuY3Rpb24gPSBNYXNrRnVuY3Rpb24uTVVMVElQTFlfUkdCX1NFVF9BTFBIQTtcblxuXHRcdHJldHVybiBlZmZlY3Q7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLmF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBlZmZlY3QgPSB0aGlzLmVmZmVjdCgpO1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdGVmZmVjdC5kaXNwb3NlKCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -0,0 +1,38 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
2
+ import { NgtArgs, extend } from 'angular-three';
3
+ import { DepthEffect } from 'postprocessing';
4
+ import { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../effect";
7
+ extend({ DepthEffect });
8
+ export class NgtpDepth {
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.0.6", ngImport: i0, type: NgtpDepth, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: NgtpDepth, isStandalone: true, selector: "ngtp-depth", 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-depth-effect *args="[options()]" [camera]="effect.camera()">
16
+ <ngtp-effect-blend-mode />
17
+ <ng-content />
18
+ </ngt-depth-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.0.6", ngImport: i0, type: NgtpDepth, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'ngtp-depth',
25
+ template: `
26
+ <ngt-depth-effect *args="[options()]" [camera]="effect.camera()">
27
+ <ngtp-effect-blend-mode />
28
+ <ng-content />
29
+ </ngt-depth-effect>
30
+ `,
31
+ standalone: true,
32
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
33
+ changeDetection: ChangeDetectionStrategy.OnPush,
34
+ imports: [NgtArgs, NgtpEffectBlendMode],
35
+ hostDirectives: [NgtpEffectHostDirective],
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9kZXB0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUVyRixNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBa0J4QixNQUFNLE9BQU8sU0FBUztJQWR0QjtRQWVDLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUErQyxDQUFDLENBQUM7S0FDakU7OEdBSFksU0FBUztrR0FBVCxTQUFTLGtVQVpYOzs7OztFQUtULDREQUlTLE9BQU8sZ0ZBQUUsbUJBQW1COzsyRkFHMUIsU0FBUztrQkFkckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFOzs7OztFQUtUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQztvQkFDdkMsY0FBYyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBEZXB0aEVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIE5ndHBFZmZlY3RCbGVuZE1vZGUsIE5ndHBFZmZlY3RIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgRGVwdGhFZmZlY3QgfSk7XG5cbmV4cG9ydCB0eXBlIERlcHRoRWZmZWN0T3B0aW9ucyA9IFBhcnRpYWw8Tm9uTnVsbGFibGU8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBEZXB0aEVmZmVjdD5bMF0+PjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1kZXB0aCcsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1kZXB0aC1lZmZlY3QgKmFyZ3M9XCJbb3B0aW9ucygpXVwiIFtjYW1lcmFdPVwiZWZmZWN0LmNhbWVyYSgpXCI+XG5cdFx0XHQ8bmd0cC1lZmZlY3QtYmxlbmQtbW9kZSAvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1kZXB0aC1lZmZlY3Q+XG5cdGAsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RwRWZmZWN0QmxlbmRNb2RlXSxcblx0aG9zdERpcmVjdGl2ZXM6IFtOZ3RwRWZmZWN0SG9zdERpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBEZXB0aCB7XG5cdGVmZmVjdCA9IGluamVjdChOZ3RwRWZmZWN0LCB7IGhvc3Q6IHRydWUgfSk7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBPbWl0PERlcHRoRWZmZWN0T3B0aW9ucywgJ2JsZW5kRnVuY3Rpb24nPik7XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
2
+ import { NgtArgs, extend } from 'angular-three';
3
+ import { DotScreenEffect } from 'postprocessing';
4
+ import { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../effect";
7
+ extend({ DotScreenEffect });
8
+ export class NgtpDotScreen {
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.0.6", ngImport: i0, type: NgtpDotScreen, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: NgtpDotScreen, isStandalone: true, selector: "ngtp-dot-screen", 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-dot-screen-effect *args="[options()]" [camera]="effect.camera()">
16
+ <ngtp-effect-blend-mode />
17
+ <ng-content />
18
+ </ngt-dot-screen-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.0.6", ngImport: i0, type: NgtpDotScreen, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'ngtp-dot-screen',
25
+ template: `
26
+ <ngt-dot-screen-effect *args="[options()]" [camera]="effect.camera()">
27
+ <ngtp-effect-blend-mode />
28
+ <ng-content />
29
+ </ngt-dot-screen-effect>
30
+ `,
31
+ standalone: true,
32
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
33
+ changeDetection: ChangeDetectionStrategy.OnPush,
34
+ imports: [NgtArgs, NgtpEffectBlendMode],
35
+ hostDirectives: [NgtpEffectHostDirective],
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90LXNjcmVlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2RvdC1zY3JlZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFckYsTUFBTSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztBQWtCNUIsTUFBTSxPQUFPLGFBQWE7SUFkMUI7UUFlQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBbUQsQ0FBQyxDQUFDO0tBQ3JFOzhHQUhZLGFBQWE7a0dBQWIsYUFBYSx1VUFaZjs7Ozs7RUFLVCw0REFJUyxPQUFPLGdGQUFFLG1CQUFtQjs7MkZBRzFCLGFBQWE7a0JBZHpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7OztFQUtUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQztvQkFDdkMsY0FBYyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBEb3RTY3JlZW5FZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBOZ3RwRWZmZWN0LCBOZ3RwRWZmZWN0QmxlbmRNb2RlLCBOZ3RwRWZmZWN0SG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uL2VmZmVjdCc7XG5cbmV4dGVuZCh7IERvdFNjcmVlbkVmZmVjdCB9KTtcblxuZXhwb3J0IHR5cGUgRG90U2NyZWVuRWZmZWN0T3B0aW9ucyA9IFBhcnRpYWw8Tm9uTnVsbGFibGU8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBEb3RTY3JlZW5FZmZlY3Q+WzBdPj47XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtZG90LXNjcmVlbicsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1kb3Qtc2NyZWVuLWVmZmVjdCAqYXJncz1cIltvcHRpb25zKCldXCIgW2NhbWVyYV09XCJlZmZlY3QuY2FtZXJhKClcIj5cblx0XHRcdDxuZ3RwLWVmZmVjdC1ibGVuZC1tb2RlIC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWRvdC1zY3JlZW4tZWZmZWN0PlxuXHRgLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJncywgTmd0cEVmZmVjdEJsZW5kTW9kZV0sXG5cdGhvc3REaXJlY3RpdmVzOiBbTmd0cEVmZmVjdEhvc3REaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RwRG90U2NyZWVuIHtcblx0ZWZmZWN0ID0gaW5qZWN0KE5ndHBFZmZlY3QsIHsgaG9zdDogdHJ1ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIE9taXQ8RG90U2NyZWVuRWZmZWN0T3B0aW9ucywgJ2JsZW5kRnVuY3Rpb24nPik7XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
2
+ import { NgtArgs, extend } from 'angular-three';
3
+ import { FXAAEffect } from 'postprocessing';
4
+ import { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../effect";
7
+ extend({ FXAAEffect });
8
+ export class NgtpFXAA {
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.0.6", ngImport: i0, type: NgtpFXAA, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: NgtpFXAA, isStandalone: true, selector: "ngtp-fxaa", 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-fXAA-effect *args="[options()]" [camera]="effect.camera()">
16
+ <ngtp-effect-blend-mode />
17
+ <ng-content />
18
+ </ngt-fXAA-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.0.6", ngImport: i0, type: NgtpFXAA, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'ngtp-fxaa',
25
+ template: `
26
+ <ngt-fXAA-effect *args="[options()]" [camera]="effect.camera()">
27
+ <ngtp-effect-blend-mode />
28
+ <ng-content />
29
+ </ngt-fXAA-effect>
30
+ `,
31
+ standalone: true,
32
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
33
+ changeDetection: ChangeDetectionStrategy.OnPush,
34
+ imports: [NgtArgs, NgtpEffectBlendMode],
35
+ hostDirectives: [NgtpEffectHostDirective],
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnhhYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2Z4YWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFckYsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQWtCdkIsTUFBTSxPQUFPLFFBQVE7SUFkckI7UUFlQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBOEMsQ0FBQyxDQUFDO0tBQ2hFOzhHQUhZLFFBQVE7a0dBQVIsUUFBUSxpVUFaVjs7Ozs7RUFLVCw0REFJUyxPQUFPLGdGQUFFLG1CQUFtQjs7MkZBRzFCLFFBQVE7a0JBZHBCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRTs7Ozs7RUFLVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZDLGNBQWMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGV4dGVuZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgRlhBQUVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIE5ndHBFZmZlY3RCbGVuZE1vZGUsIE5ndHBFZmZlY3RIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgRlhBQUVmZmVjdCB9KTtcblxuZXhwb3J0IHR5cGUgRlhBQUVmZmVjdE9wdGlvbnMgPSBQYXJ0aWFsPE5vbk51bGxhYmxlPENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgRlhBQUVmZmVjdD5bMF0+PjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1meGFhJyxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWZYQUEtZWZmZWN0ICphcmdzPVwiW29wdGlvbnMoKV1cIiBbY2FtZXJhXT1cImVmZmVjdC5jYW1lcmEoKVwiPlxuXHRcdFx0PG5ndHAtZWZmZWN0LWJsZW5kLW1vZGUgLz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZlhBQS1lZmZlY3Q+XG5cdGAsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RwRWZmZWN0QmxlbmRNb2RlXSxcblx0aG9zdERpcmVjdGl2ZXM6IFtOZ3RwRWZmZWN0SG9zdERpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBGWEFBIHtcblx0ZWZmZWN0ID0gaW5qZWN0KE5ndHBFZmZlY3QsIHsgaG9zdDogdHJ1ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIE9taXQ8RlhBQUVmZmVjdE9wdGlvbnMsICdibGVuZEZ1bmN0aW9uJz4pO1xufVxuIl19