angular-three-postprocessing 2.0.0-beta.235 → 2.0.0-beta.236

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 (59) hide show
  1. package/esm2022/lib/effect-composer.mjs +14 -3
  2. package/esm2022/lib/effects/ascii.mjs +121 -0
  3. package/esm2022/lib/effects/brightness-contrast.mjs +48 -0
  4. package/esm2022/lib/effects/chromatic-abberation.mjs +48 -0
  5. package/esm2022/lib/effects/color-average.mjs +34 -0
  6. package/esm2022/lib/effects/color-depth.mjs +38 -0
  7. package/esm2022/lib/effects/depth-of-field.mjs +57 -0
  8. package/esm2022/lib/effects/depth.mjs +38 -0
  9. package/esm2022/lib/effects/dot-screen.mjs +38 -0
  10. package/esm2022/lib/effects/fxaa.mjs +38 -0
  11. package/esm2022/lib/effects/glitch.mjs +65 -0
  12. package/esm2022/lib/effects/god-rays.mjs +42 -0
  13. package/esm2022/lib/effects/grid.mjs +45 -0
  14. package/esm2022/lib/effects/hue-saturation.mjs +38 -0
  15. package/esm2022/lib/effects/index.mjs +26 -1
  16. package/esm2022/lib/effects/lens-flare.mjs +195 -0
  17. package/esm2022/lib/effects/lut.mjs +51 -0
  18. package/esm2022/lib/effects/noise.mjs +39 -0
  19. package/esm2022/lib/effects/pixelation.mjs +31 -0
  20. package/esm2022/lib/effects/scanline.mjs +43 -0
  21. package/esm2022/lib/effects/sepia.mjs +38 -0
  22. package/esm2022/lib/effects/shock-wave.mjs +38 -0
  23. package/esm2022/lib/effects/smaa.mjs +38 -0
  24. package/esm2022/lib/effects/tilt-shift-2.mjs +121 -0
  25. package/esm2022/lib/effects/tilt-shift.mjs +39 -0
  26. package/esm2022/lib/effects/vignette.mjs +38 -0
  27. package/esm2022/lib/effects/water.mjs +64 -0
  28. package/esm2022/lib/utils.mjs +14 -0
  29. package/fesm2022/angular-three-postprocessing.mjs +1262 -7
  30. package/fesm2022/angular-three-postprocessing.mjs.map +1 -1
  31. package/lib/effect-composer.d.ts +48 -0
  32. package/lib/effects/ascii.d.ts +24 -0
  33. package/lib/effects/brightness-contrast.d.ts +15 -0
  34. package/lib/effects/chromatic-abberation.d.ts +16 -0
  35. package/lib/effects/color-average.d.ts +12 -0
  36. package/lib/effects/color-depth.d.ts +14 -0
  37. package/lib/effects/depth-of-field.d.ts +30 -0
  38. package/lib/effects/depth.d.ts +14 -0
  39. package/lib/effects/dot-screen.d.ts +15 -0
  40. package/lib/effects/fxaa.d.ts +13 -0
  41. package/lib/effects/glitch.d.ts +30 -0
  42. package/lib/effects/god-rays.d.ts +38 -0
  43. package/lib/effects/grid.d.ts +24 -0
  44. package/lib/effects/hue-saturation.d.ts +15 -0
  45. package/lib/effects/index.d.ts +25 -0
  46. package/lib/effects/lens-flare.d.ts +111 -0
  47. package/lib/effects/lut.d.ts +20 -0
  48. package/lib/effects/noise.d.ts +14 -0
  49. package/lib/effects/pixelation.d.ts +17 -0
  50. package/lib/effects/scanline.d.ts +17 -0
  51. package/lib/effects/sepia.d.ts +14 -0
  52. package/lib/effects/shock-wave.d.ts +11 -0
  53. package/lib/effects/smaa.d.ts +15 -0
  54. package/lib/effects/tilt-shift-2.d.ts +35 -0
  55. package/lib/effects/tilt-shift.d.ts +22 -0
  56. package/lib/effects/vignette.d.ts +17 -0
  57. package/lib/effects/water.d.ts +20 -0
  58. package/lib/utils.d.ts +3 -0
  59. package/package.json +7 -1
@@ -0,0 +1,195 @@
1
+ // Created by Anderson Mancini 2023
2
+ // React Three Fiber Ultimate LensFlare
3
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, afterNextRender, computed, input, } from '@angular/core';
4
+ import { NgtArgs, injectBeforeRender, injectNgtRef, injectNgtStore } from 'angular-three';
5
+ import { easing } from 'maath';
6
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
7
+ import { mergeInputs } from 'ngxtension/inject-inputs';
8
+ import { BlendFunction, Effect } from 'postprocessing';
9
+ import { Color, Mesh, Uniform, Vector2, Vector3 } from 'three';
10
+ import { injectEffectComposerApi } from '../effect-composer';
11
+ import * as i0 from "@angular/core";
12
+ const LensFlareShader = {
13
+ fragmentShader: /* glsl */ `
14
+
15
+ uniform float iTime;
16
+ uniform vec2 lensPosition;
17
+ uniform vec2 iResolution;
18
+ uniform vec3 colorGain;
19
+ uniform float starPoints;
20
+ uniform float glareSize;
21
+ uniform float flareSize;
22
+ uniform float flareSpeed;
23
+ uniform float flareShape;
24
+ uniform float haloScale;
25
+ uniform float opacity;
26
+ uniform bool animated;
27
+ uniform bool anamorphic;
28
+ uniform bool enabled;
29
+ uniform bool secondaryGhosts;
30
+ uniform bool starBurst;
31
+ uniform float ghostScale;
32
+ uniform bool aditionalStreaks;
33
+ uniform sampler2D lensDirtTexture;
34
+ vec2 vxtC;
35
+
36
+ float rndf(float n){return fract(sin(n) * 43758.5453123);}float niz(float p){float fl = floor(p);float fc = fract(p);return mix(rndf(fl),rndf(fl + 1.0), fc);}
37
+ vec3 hsv2rgb(vec3 c){vec4 k = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);vec3 p = abs(fract(c.xxx + k.xyz) * 6.0 - k.www);return c.z * mix(k.xxx, clamp(p - k.xxx, 0.0, 1.0), c.y);}
38
+ float satU(float x){return clamp(x, 0.,1.);}vec2 rtU(vec2 naz, float rtn){return vec2(cos(rtn) * naz.x + sin(rtn) * naz.y,cos(rtn) * naz.y - sin(rtn) * naz.x);}
39
+ vec3 drwF(vec2 p, float intensity, float rnd, float speed, int id){float flhos = (1. / 32.) * float(id) * 0.1;float lingrad = distance(vec2(0.), p);float expg = 1. / exp(lingrad * (fract(rnd) * 0.66 + 0.33));vec3 qzTg = hsv2rgb(vec3( fract( (expg * 8.) + speed * flareSpeed + flhos), pow(1.-abs(expg*2.-1.), 0.45), 20.0 * expg * intensity));float internalStarPoints;if(anamorphic){internalStarPoints = 1.0;} else{internalStarPoints = starPoints;}float ams = length(p * flareShape * sin(internalStarPoints * atan(p.x, p.y)));float kJhg = pow(1.-satU(ams), ( anamorphic ? 100. : 12.));kJhg += satU(expg-0.9) * 3.;kJhg = pow(kJhg * expg, 8. + (1.-intensity) * 5.);if(flareSpeed > 0.0){return vec3(kJhg) * qzTg;} else{return vec3(kJhg) * flareSize * 15.;}}
40
+ float ams2(vec3 a, vec3 b) { return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);}vec3 satU(vec3 x){return clamp(x, vec3(0.0), vec3(1.0));}
41
+ float glR(vec2 naz, vec2 pos, float zsi){vec2 mni;if(animated){mni = rtU(naz-pos, iTime * 0.1);} else{mni = naz-pos;}float ang = atan(mni.y, mni.x) * (anamorphic ? 1.0 : starPoints);float ams2 = length(mni);ams2 = pow(ams2, .9);float f0 = 1.0/(length(naz-pos)*(1.0/zsi*16.0)+.2);return f0+f0*(sin((ang))*.2 +.3);}
42
+ float sdHex(vec2 p){p = abs(p);vec2 q = vec2(p.x*2.0*0.5773503, p.y + p.x*0.5773503);return dot(step(q.xy,q.yx), 1.0-q.yx);}float fpow(float x, float k){return x > k ? pow((x-k)/(1.0-k),2.0) : 0.0;}
43
+ vec3 rHx(vec2 naz, vec2 p, float s, vec3 col){naz -= p;if (abs(naz.x) < 0.2*s && abs(naz.y) < 0.2*s){return mix(vec3(0),mix(vec3(0),col,0.1 + fpow(length(naz/s),0.1)*10.0),smoothstep(0.0,0.1,sdHex(naz*20.0/s)));}return vec3(0);}
44
+ vec3 mLs(vec2 naz, vec2 pos){vec2 mni = naz-pos;vec2 zxMp = naz*(length(naz));float ang = atan(mni.x,mni.y);float f0 = .3/(length(naz-pos)*16.0+1.0);f0 = f0*(sin(niz(sin(ang*3.9-(animated ? iTime : 0.0) * 0.3) * starPoints))*.2 );float f1 = max(0.01-pow(length(naz+1.2*pos),1.9),.0)*7.0;float f2 = max(.9/(10.0+32.0*pow(length(zxMp+0.99*pos),2.0)),.0)*0.35;float f22 = max(.9/(11.0+32.0*pow(length(zxMp+0.85*pos),2.0)),.0)*0.23;float f23 = max(.9/(12.0+32.0*pow(length(zxMp+0.95*pos),2.0)),.0)*0.6;vec2 ztX = mix(naz,zxMp, 0.1);float f4 = max(0.01-pow(length(ztX+0.4*pos),2.9),.0)*4.02;float f42 = max(0.0-pow(length(ztX+0.45*pos),2.9),.0)*4.1;float f43 = max(0.01-pow(length(ztX+0.5*pos),2.9),.0)*4.6;ztX = mix(naz,zxMp,-.4);float f5 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;float f52 = max(0.01-pow(length(ztX+0.2*pos),5.5),.0)*2.0;float f53 = max(0.01-pow(length(ztX+0.1*pos),5.5),.0)*2.0;ztX = mix(naz,zxMp, 2.1);float f6 = max(0.01-pow(length(ztX-0.3*pos),1.61),.0)*3.159;float f62 = max(0.01-pow(length(ztX-0.325*pos),1.614),.0)*3.14;float f63 = max(0.01-pow(length(ztX-0.389*pos),1.623),.0)*3.12;vec3 c = vec3(glR(naz,pos, glareSize));vec2 prot;if(animated){prot = rtU(naz - pos, (iTime * 0.1));} else if(anamorphic){prot = rtU(naz - pos, 1.570796);} else {prot = naz - pos;}c += drwF(prot, (anamorphic ? flareSize * 10. : flareSize), 0.1, iTime, 1);c.r+=f1+f2+f4+f5+f6; c.g+=f1+f22+f42+f52+f62; c.b+=f1+f23+f43+f53+f63;c = c*1.3 * vec3(length(zxMp)+.09);c+=vec3(f0);return c;}
45
+ vec3 cc(vec3 clr, float fct,float fct2){float w = clr.x+clr.y+clr.z;return mix(clr,vec3(w)*fct,w*fct2);}float rnd(vec2 p){float f = fract(sin(dot(p, vec2(12.1234, 72.8392) )*45123.2));return f;}float rnd(float w){float f = fract(sin(w)*1000.);return f;}
46
+ float rShp(vec2 p, int N){float f;float a=atan(p.x,p.y)+.2;float b=6.28319/float(N);f=smoothstep(.5,.51, cos(floor(.5+a/b)*b-a)*length(p.xy)* 2.0 -ghostScale);return f;}
47
+ vec3 drC(vec2 p, float zsi, float dCy, vec3 clr, vec3 clr2, float ams2, vec2 esom){float l = length(p + esom*(ams2*2.))+zsi/2.;float l2 = length(p + esom*(ams2*4.))+zsi/3.;float c = max(0.01-pow(length(p + esom*ams2), zsi*ghostScale), 0.0)*10.;float c1 = max(0.001-pow(l-0.3, 1./40.)+sin(l*20.), 0.0)*3.;float c2 = max(0.09/pow(length(p-esom*ams2/.5)*1., .95), 0.0)/20.;float s = max(0.02-pow(rShp(p*5. + esom*ams2*5. + dCy, 6) , 1.), 0.0)*1.5;clr = cos(vec3(0.44, .24, .2)*8. + ams2*4.)*0.5+.5;vec3 f = c*clr;f += c1*clr;f += c2*clr;f += s*clr;return f-0.01;}
48
+ vec4 geLC(float x){return vec4(vec3(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(mix(vec3(0., 0., 0.),vec3(0., 0., 0.), smoothstep(0.0, 0.063, x)),vec3(0., 0., 0.), smoothstep(0.063, 0.125, x)),vec3(0.0, 0., 0.), smoothstep(0.125, 0.188, x)),vec3(0.188, 0.131, 0.116), smoothstep(0.188, 0.227, x)),vec3(0.31, 0.204, 0.537), smoothstep(0.227, 0.251, x)),vec3(0.192, 0.106, 0.286), smoothstep(0.251, 0.314, x)),vec3(0.102, 0.008, 0.341), smoothstep(0.314, 0.392, x)),vec3(0.086, 0.0, 0.141), smoothstep(0.392, 0.502, x)),vec3(1.0, 0.31, 0.0), smoothstep(0.502, 0.604, x)),vec3(.1, 0.1, 0.1), smoothstep(0.604, 0.643, x)),vec3(1.0, 0.929, 0.0), smoothstep(0.643, 0.761, x)),vec3(1.0, 0.086, 0.424), smoothstep(0.761, 0.847, x)),vec3(1.0, 0.49, 0.0), smoothstep(0.847, 0.89, x)),vec3(0.945, 0.275, 0.475), smoothstep(0.89, 0.941, x)),vec3(0.251, 0.275, 0.796), smoothstep(0.941, 1.0, x))),1.0);}
49
+ float diTN(vec2 p){vec2 f = fract(p);f = (f * f) * (3.0 - (2.0 * f));float n = dot(floor(p), vec2(1.0, 157.0));vec4 a = fract(sin(vec4(n + 0.0, n + 1.0, n + 157.0, n + 158.0)) * 43758.5453123);return mix(mix(a.x, a.y, f.x), mix(a.z, a.w, f.x), f.y);}
50
+ float fbm(vec2 p){const mat2 m = mat2(0.80, -0.60, 0.60, 0.80);float f = 0.0;f += 0.5000*diTN(p); p = m*p*2.02;f += 0.2500*diTN(p); p = m*p*2.03;f += 0.1250*diTN(p); p = m*p*2.01;f += 0.0625*diTN(p);return f/0.9375;}
51
+ vec4 geLS(vec2 p){vec2 pp = (p - vec2(0.5)) * 2.0;float a = atan(pp.y, pp.x);vec4 cp = vec4(sin(a * 1.0), length(pp), sin(a * 13.0), sin(a * 53.0));float d = sin(clamp(pow(length(vec2(0.5) - p) * 0.5 + haloScale /2., 5.0), 0.0, 1.0) * 3.14159);vec3 c = vec3(d) * vec3(fbm(cp.xy * 16.0) * fbm(cp.zw * 9.0) * max(max(max(max(0.5, sin(a * 1.0)), sin(a * 3.0) * 0.8), sin(a * 7.0) * 0.8), sin(a * 9.0) * 10.6));c *= vec3(mix(2.0, (sin(length(pp.xy) * 256.0) * 0.5) + 0.5, sin((clamp((length(pp.xy) - 0.875) / 0.1, 0.0, 1.0) + 0.0) * 2.0 * 3.14159) * 1.5) + 0.5) * 0.3275;return vec4(vec3(c * 1.0), d);}
52
+ vec4 geLD(vec2 p){p.xy += vec2(fbm(p.yx * 3.0), fbm(p.yx * 2.0)) * 0.0825;vec3 o = vec3(mix(0.125, 0.25, max(max(smoothstep(0.1, 0.0, length(p - vec2(0.25))),smoothstep(0.4, 0.0, length(p - vec2(0.75)))),smoothstep(0.8, 0.0, length(p - vec2(0.875, 0.125))))));o += vec3(max(fbm(p * 1.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 2.0) - 0.5, 0.0)) * 0.5;o += vec3(max(fbm(p * 4.0) - 0.5, 0.0)) * 0.25;o += vec3(max(fbm(p * 8.0) - 0.75, 0.0)) * 1.0;o += vec3(max(fbm(p * 16.0) - 0.75, 0.0)) * 0.75;o += vec3(max(fbm(p * 64.0) - 0.75, 0.0)) * 0.5;return vec4(clamp(o, vec3(0.15), vec3(1.0)), 1.0);}
53
+ vec4 txL(sampler2D tex, vec2 xtC){if(((xtC.x < 0.) || (xtC.y < 0.)) || ((xtC.x > 1.) || (xtC.y > 1.))){return vec4(0.0);}else{return texture(tex, xtC); }}
54
+ vec4 txD(sampler2D tex, vec2 xtC, vec2 dir, vec3 ditn) {return vec4(txL(tex, (xtC + (dir * ditn.r))).r,txL(tex, (xtC + (dir * ditn.g))).g,txL(tex, (xtC + (dir * ditn.b))).b,1.0);}
55
+ vec4 strB(){vec2 aspXtc = vec2(1.0) - (((vxtC - vec2(0.5)) * vec2(1.0)) + vec2(0.5)); vec2 xtC = vec2(1.0) - vxtC; vec2 ghvc = (vec2(0.5) - xtC) * 0.3 - lensPosition; vec2 ghNm = normalize(ghvc * vec2(1.0)) * vec2(1.0);vec2 haloVec = normalize(ghvc) * 0.6;vec2 hlNm = ghNm * 0.6;vec2 texelSize = vec2(1.0) / vec2(iResolution.xy);vec3 ditn = vec3(-(texelSize.x * 1.5), 0.2, texelSize.x * 1.5);vec4 c = vec4(0.0);for (int i = 0; i < 8; i++) {vec2 offset = xtC + (ghvc * float(i));c += txD(lensDirtTexture, offset, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - offset) / length(vec2(0.5)))), 10.0);}vec2 uyTrz = xtC + hlNm; return (c * geLC((length(vec2(0.5) - aspXtc) / length(vec2(haloScale))))) +(txD(lensDirtTexture, uyTrz, ghNm, ditn) * pow(max(0.0, 1.0 - (length(vec2(0.5) - uyTrz) / length(vec2(0.5)))), 10.0));}
56
+ void mainImage(vec4 v,vec2 r,out vec4 i){vec2 g=r-.5;g.y*=iResolution.y/iResolution.x;vec2 l=lensPosition*.5;l.y*=iResolution.y/iResolution.x;vec3 f=mLs(g,l)*20.*colorGain/256.;if(aditionalStreaks){vec3 o=vec3(.9,.2,.1),p=vec3(.3,.1,.9);for(float n=0.;n<10.;n++)f+=drC(g,pow(rnd(n*2e3)*2.8,.1)+1.41,0.,o+n,p+n,rnd(n*20.)*3.+.2-.5,lensPosition);}if(secondaryGhosts){vec3 n=vec3(0);n+=rHx(g,-lensPosition*.25,ghostScale*1.4,vec3(.25,.35,0));n+=rHx(g,lensPosition*.25,ghostScale*.5,vec3(1,.5,.5));n+=rHx(g,lensPosition*.1,ghostScale*1.6,vec3(1));n+=rHx(g,lensPosition*1.8,ghostScale*2.,vec3(0,.5,.75));n+=rHx(g,lensPosition*1.25,ghostScale*.8,vec3(1,1,.5));n+=rHx(g,-lensPosition*1.25,ghostScale*5.,vec3(.5,.5,.25));n+=fpow(1.-abs(distance(lensPosition*.8,g)-.7),.985)*colorGain/2100.;f+=n;}if(starBurst){vxtC=g+.5;vec4 n=geLD(g);float o=1.-clamp(0.5,0.,.5)*2.;n+=mix(n,pow(n*2.,vec4(2))*.5,o);float s=(g.x+g.y)*(1./6.);vec2 d=mat2(cos(s),-sin(s),sin(s),cos(s))*vxtC;n+=geLS(d)*2.;f+=clamp(n.xyz*strB().xyz,.01,1.);}i=enabled?vec4(mix(f,vec3(0),opacity)+v.xyz,v.w):vec4(v);}
57
+ `,
58
+ };
59
+ export class LensFlareEffect extends Effect {
60
+ constructor({ blendFunction = BlendFunction.NORMAL, enabled = true, glareSize = 0.2, lensPosition = [0.01, 0.01], iResolution = [0, 0], starPoints = 6, flareSize = 0.01, flareSpeed = 0.01, flareShape = 0.01, animated = true, anamorphic = false, colorGain = new Color(20, 20, 20), lensDirtTexture = null, haloScale = 0.5, secondaryGhosts = true, aditionalStreaks = true, ghostScale = 0.0, opacity = 1.0, starBurst = false, } = {}) {
61
+ super('LensFlareEffect', LensFlareShader.fragmentShader, {
62
+ blendFunction,
63
+ uniforms: new Map([
64
+ ['enabled', new Uniform(enabled)],
65
+ ['glareSize', new Uniform(glareSize)],
66
+ ['lensPosition', new Uniform(lensPosition)],
67
+ ['iTime', new Uniform(0)],
68
+ ['iResolution', new Uniform(iResolution)],
69
+ ['starPoints', new Uniform(starPoints)],
70
+ ['flareSize', new Uniform(flareSize)],
71
+ ['flareSpeed', new Uniform(flareSpeed)],
72
+ ['flareShape', new Uniform(flareShape)],
73
+ ['animated', new Uniform(animated)],
74
+ ['anamorphic', new Uniform(anamorphic)],
75
+ ['colorGain', new Uniform(colorGain)],
76
+ ['lensDirtTexture', new Uniform(lensDirtTexture)],
77
+ ['haloScale', new Uniform(haloScale)],
78
+ ['secondaryGhosts', new Uniform(secondaryGhosts)],
79
+ ['aditionalStreaks', new Uniform(aditionalStreaks)],
80
+ ['ghostScale', new Uniform(ghostScale)],
81
+ ['starBurst', new Uniform(starBurst)],
82
+ ['opacity', new Uniform(opacity)],
83
+ ]),
84
+ });
85
+ }
86
+ update(_renderer, _inputBuffer, deltaTime) {
87
+ const iTime = this.uniforms.get('iTime');
88
+ if (iTime) {
89
+ iTime.value += deltaTime;
90
+ }
91
+ }
92
+ }
93
+ const defaultOptions = {
94
+ position: new Vector3(-25, 6, -60),
95
+ followMouse: false,
96
+ smoothTime: 0.7,
97
+ };
98
+ export class NgtpLensFlare {
99
+ constructor() {
100
+ this.autoEffect = injectAutoEffect();
101
+ this.store = injectNgtStore();
102
+ this.viewport = this.store.select('viewport');
103
+ this.raycaster = this.store.select('raycaster');
104
+ this.pointer = this.store.select('pointer');
105
+ this.composerApi = injectEffectComposerApi();
106
+ this.effectRef = input(injectNgtRef());
107
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
108
+ this.projectedPosition = new Vector3();
109
+ this.mouse2d = new Vector2();
110
+ this.effect = computed(() => {
111
+ const { position: _, followMouse: __, smoothTime: ___, ...options } = this.options();
112
+ return new LensFlareEffect(options);
113
+ });
114
+ afterNextRender(() => {
115
+ this.autoEffect(() => {
116
+ const [effect, viewport] = [this.effect(), this.viewport()];
117
+ const iResolution = effect.uniforms.get('iResolution');
118
+ if (iResolution) {
119
+ iResolution.value.x = viewport.width;
120
+ iResolution.value.y = viewport.height;
121
+ }
122
+ });
123
+ });
124
+ injectBeforeRender(({ delta }) => {
125
+ const [effect] = [this.effect()];
126
+ if (!effect)
127
+ return;
128
+ const [{ followMouse, position, smoothTime }, pointer, { camera, scene }, raycaster] = [
129
+ this.options(),
130
+ this.pointer(),
131
+ this.composerApi(),
132
+ this.raycaster(),
133
+ ];
134
+ const uLensPosition = effect.uniforms.get('lensPosition');
135
+ const uOpacity = effect.uniforms.get('opacity');
136
+ if (!uLensPosition || !uOpacity)
137
+ return;
138
+ let target = 1;
139
+ if (followMouse) {
140
+ uLensPosition.value.x = pointer.x;
141
+ uLensPosition.value.y = pointer.y;
142
+ target = 0;
143
+ }
144
+ else {
145
+ this.projectedPosition.copy(position).project(camera);
146
+ if (this.projectedPosition.z > 1)
147
+ return;
148
+ uLensPosition.value.x = this.projectedPosition.x;
149
+ uLensPosition.value.y = this.projectedPosition.y;
150
+ this.mouse2d.set(this.projectedPosition.x, this.projectedPosition.y);
151
+ raycaster.setFromCamera(this.mouse2d, camera);
152
+ const intersects = raycaster.intersectObjects(scene.children, true);
153
+ const { object } = intersects[0] ?? {};
154
+ if (object) {
155
+ if (object.userData?.['lensflare'] === 'no-occlusion') {
156
+ target = 0;
157
+ }
158
+ else if (object instanceof Mesh) {
159
+ if (object.material.uniforms?._transmission?.value > 0.2) {
160
+ //Check for MeshTransmissionMaterial
161
+ target = 0.2;
162
+ }
163
+ else if (object.material._transmission && object.material._transmission > 0.2) {
164
+ //Check for MeshPhysicalMaterial with transmission setting
165
+ target = 0.2;
166
+ }
167
+ else if (object.material.transparent) {
168
+ // Check for OtherMaterials with transparent parameter
169
+ target = object.material.opacity;
170
+ }
171
+ }
172
+ }
173
+ }
174
+ easing.damp(uOpacity, 'value', target, smoothTime, delta);
175
+ });
176
+ }
177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtpLensFlare, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
178
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtpLensFlare, isStandalone: true, selector: "ngtp-lens-flare", inputs: { effectRef: { classPropertyName: "effectRef", publicName: "effectRef", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
179
+ <ngt-primitive *args="[effect()]" [ref]="effectRef()" [dispose]="null" ngtCompound />
180
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
181
+ }
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtpLensFlare, decorators: [{
183
+ type: Component,
184
+ args: [{
185
+ selector: 'ngtp-lens-flare',
186
+ standalone: true,
187
+ template: `
188
+ <ngt-primitive *args="[effect()]" [ref]="effectRef()" [dispose]="null" ngtCompound />
189
+ `,
190
+ imports: [NgtArgs],
191
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
192
+ changeDetection: ChangeDetectionStrategy.OnPush,
193
+ }]
194
+ }], ctorParameters: () => [] });
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVucy1mbGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL2xlbnMtZmxhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBQ25DLHVDQUF1QztBQUV2QyxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFFBQVEsRUFDUixLQUFLLEdBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVcsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRTdELE1BQU0sZUFBZSxHQUFHO0lBQ3ZCLGNBQWMsRUFBRSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNEMzQjtDQUNBLENBQUM7QUFFRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxNQUFNO0lBQzFDLFlBQVksRUFDWCxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFDcEMsT0FBTyxHQUFHLElBQUksRUFDZCxTQUFTLEdBQUcsR0FBRyxFQUNmLFlBQVksR0FBRyxDQUFD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O29CQUNaLENBQUM7eUJBQU0sSUFBSSxNQUFNLFlBQVksSUFBSSxFQUFFLENBQUM7d0JBQ25DLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQzs0QkFDMUQsb0NBQW9DOzRCQUNwQyxNQUFNLEdBQUcsR0FBRyxDQUFDO3dCQUNkLENBQUM7NkJBQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQzs0QkFDakYsMERBQTBEOzRCQUMxRCxNQUFNLEdBQUcsR0FBRyxDQUFDO3dCQUNkLENBQUM7NkJBQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDOzRCQUN4QyxzREFBc0Q7NEJBQ3RELE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzt3QkFDbEMsQ0FBQztvQkFDRixDQUFDO2dCQUNGLENBQUM7WUFDRixDQUFDO1lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXBGVyxhQUFhO2tHQUFiLGFBQWEseVZBUGY7O0VBRVQsNERBQ1MsT0FBTzs7MkZBSUwsYUFBYTtrQkFWekIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOztFQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQW5kZXJzb24gTWFuY2luaSAyMDIzXG4vLyBSZWFjdCBUaHJlZSBGaWJlciBVbHRpbWF0ZSBMZW5zRmxhcmVcblxuaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRjb21wdXRlZCxcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3ROZ3RSZWYsIGluamVjdE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBlYXNpbmcgfSBmcm9tICdtYWF0aCc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBCbGVuZEZ1bmN0aW9uLCBFZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBDb2xvciwgTWVzaCwgVGV4dHVyZSwgVW5pZm9ybSwgVmVjdG9yMiwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGluamVjdEVmZmVjdENvbXBvc2VyQXBpIH0gZnJvbSAnLi4vZWZmZWN0LWNvbXBvc2VyJztcblxuY29uc3QgTGVuc0ZsYXJlU2hhZGVyID0ge1xuXHRmcmFnbWVudFNoYWRlcjogLyogZ2xzbCAqLyBgXG5cbiAgdW5pZm9ybSBmbG9hdCBpVGltZTtcbiAgdW5pZm9ybSB2ZWMyIGxlbnNQb3NpdGlvbjtcbiAgdW5pZm9ybSB2ZWMyIGlSZXNvbHV0aW9uO1xuICB1bmlmb3JtIHZlYzMgY29sb3JHYWluO1xuICB1bmlmb3JtIGZsb2F0IHN0YXJQb2ludHM7XG4gIHVuaWZvcm0gZmxvYXQgZ2xhcmVTaXplO1xuICB1bmlmb3JtIGZsb2F0IGZsYXJlU2l6ZTtcbiAgdW5pZm9ybSBmbG9hdCBmbGFyZVNwZWVkO1xuICB1bmlmb3JtIGZsb2F0IGZsYXJlU2hhcGU7XG4gIHVuaWZvcm0gZmxvYXQgaGFsb1NjYWxlO1xuICB1bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4gIHVuaWZvcm0gYm9vbCBhbmltYXRlZDtcbiAgdW5pZm9ybSBib29sIGFuYW1vcnBoaWM7XG4gIHVuaWZvcm0gYm9vbCBlbmFibGVkO1xuICB1bmlmb3JtIGJvb2wgc2Vjb25kYXJ5R2hvc3RzO1xuICB1bmlmb3JtIGJvb2wgc3RhckJ1cnN0O1xuICB1bmlmb3JtIGZsb2F0IGdob3N0U2NhbGU7XG4gIHVuaWZvcm0gYm9vbCBhZGl0aW9uYWxTdHJlYWtzO1xuICB1bmlmb3JtIHNhbXBsZXIyRCBsZW5zRGlydFRleHR1cmU7XG4gIHZlYzIgdnh0QztcblxuICBmbG9hdCBybmRmKGZsb2F0IG4pe3JldHVybiBmcmFjdChzaW4obikgKiA0Mzc1OC41NDUzMTIzKTt9ZmxvYXQgbml6KGZsb2F0IHApe2Zsb2F0IGZsID0gZmxvb3IocCk7ZmxvYXQgZmMgPSBmcmFjdChwKTtyZXR1cm4gbWl4KHJuZGYoZmwpLHJuZGYoZmwgKyAxLjApLCBmYyk7fVxuICB2ZWMzIGhzdjJyZ2IodmVjMyBjKXt2ZWM0IGsgPSB2ZWM0KDEuMCwgMi4wIC8gMy4wLCAxLjAgLyAzLjAsIDMuMCk7dmVjMyBwID0gYWJzKGZyYWN0KGMueHh4ICsgay54eXopICogNi4wIC0gay53d3cpO3JldHVybiBjLnogKiBtaXgoay54eHgsIGNsYW1wKHAgLSBrLnh4eCwgMC4wLCAxLjApLCBjLnkpO31cbiAgZmxvYXQgc2F0VShmbG9hdCB4KXtyZXR1cm4gY2xhbXAoeCwgMC4sMS4pO312ZWMyIHJ0VSh2ZWMyIG5heiwgZmxvYXQgcnRuKXtyZXR1cm4gdmVjMihjb3MocnRuKSAqIG5hei54ICsgc2luKHJ0bikgKiBuYXoueSxjb3MocnRuKSAqIG5hei55IC0gc2luKHJ0bikgKiBuYXoueCk7fVxuICB2ZWMzIGRyd0YodmVjMiBwLCBmbG9hdCBpbnRlbnNpdHksIGZsb2F0IHJuZCwgZmxvYXQgc3BlZWQsIGludCBpZCl7ZmxvYXQgZmxob3MgPSAoMS4gLyAzMi4pICogZmxvYXQoaWQpICogMC4xO2Zsb2F0IGxpbmdyYWQgPSBkaXN0YW5jZSh2ZWMyKDAuKSwgcCk7ZmxvYXQgZXhwZyA9IDEuIC8gZXhwKGxpbmdyYWQgKiAoZnJhY3Qocm5kKSAqIDAuNjYgKyAwLjMzKSk7dmVjMyBxelRnID0gaHN2MnJnYih2ZWMzKCBmcmFjdCggKGV4cGcgKiA4LikgKyBzcGVlZCAqIGZsYXJlU3BlZWQgKyBmbGhvcyksIHBvdygxLi1hYnMoZXhwZyoyLi0xLiksIDAuNDUpLCAyMC4wICogZXhwZyAqIGludGVuc2l0eSkpO2Zsb2F0IGludGVybmFsU3RhclBvaW50cztpZihhbmFtb3JwaGljKXtpbnRlcm5hbFN0YXJQb2ludHMgPSAxLjA7fSBlbHNle2ludGVybmFsU3RhclBvaW50cyA9IHN0YXJQb2ludHM7fWZsb2F0IGFtcyA9IGxlbmd0aChwICogZmxhcmVTaGFwZSAqIHNpbihpbnRlcm5hbFN0YXJQb2ludHMgKiBhdGFuKHAueCwgcC55KSkpO2Zsb2F0IGtKaGcgPSBwb3coMS4tc2F0VShhbXMpLCAoIGFuYW1vcnBoaWMgPyAxMDAuIDogMTIuKSk7a0poZyArPSBzYXRVKGV4cGctMC45KSAqIDMuO2tKaGcgPSBwb3coa0poZyAqIGV4cGcsIDguICsgKDEuLWludGVuc2l0eSkgKiA1Lik7aWYoZmxhcmVTcGVlZCA+IDAuMCl7cmV0dXJuIHZlYzMoa0poZykgKiBxelRnO30gZWxzZXtyZXR1cm4gdmVjMyhrSmhnKSAqIGZsYXJlU2l6ZSAqIDE1Ljt9fVxuICBmbG9hdCBhbXMyKHZlYzMgYSwgdmVjMyBiKSB7IHJldHVybiBhYnMoYS54IC0gYi54KSArIGFicyhhLnkgLSBiLnkpICsgYWJzKGEueiAtIGIueik7fXZlYzMgc2F0VSh2ZWMzIHgpe3JldHVybiBjbGFtcCh4LCB2ZWMzKDAuMCksIHZlYzMoMS4wKSk7fVxuICBmbG9hdCBnbFIodmVjMiBuYXosIHZlYzIgcG9zLCBmbG9hdCB6c2kpe3ZlYzIgbW5pO2lmKGFuaW1hdGVkKXttbmkgPSBydFUobmF6LXBvcywgaVRpbWUgKiAwLjEpO30gZWxzZXttbmkgPSBuYXotcG9zO31mbG9hdCBhbmcgPSBhdGFuKG1uaS55LCBtbmkueCkgKiAoYW5hbW9ycGhpYyA/IDEuMCA6IHN0YXJQb2ludHMpO2Zsb2F0IGFtczIgPSBsZW5ndGgobW5pKTthbXMyID0gcG93KGFtczIsIC45KTtmbG9hdCBmMCA9IDEuMC8obGVuZ3RoKG5hei1wb3MpKigxLjAvenNpKjE2LjApKy4yKTtyZXR1cm4gZjArZjAqKHNpbigoYW5nKSkqLjIgKy4zKTt9XG4gIGZsb2F0IHNkSGV4KHZlYzIgcCl7cCA9IGFicyhwKTt2ZWMyIHEgPSB2ZWMyKHAueCoyLjAqMC41NzczNTAzLCBwLnkgKyBwLngqMC41NzczNTAzKTtyZXR1cm4gZG90KHN0ZXAocS54eSxxLnl4KSwgMS4wLXEueXgpO31mbG9hdCBmcG93KGZsb2F0IHgsIGZsb2F0IGspe3JldHVybiB4ID4gayA/IHBvdygoeC1rKS8oMS4wLWspLDIuMCkgOiAwLjA7fVxuICB2ZWMzIHJIeCh2ZWMyIG5heiwgdmVjMiBwLCBmbG9hdCBzLCB2ZWMzIGNvbCl7bmF6IC09IHA7aWYgKGFicyhuYXoueCkgPCAwLjIqcyAmJiBhYnMobmF6LnkpIDwgMC4yKnMpe3JldHVybiBtaXgodmVjMygwKSxtaXgodmVjMygwKSxjb2wsMC4xICsgZnBvdyhsZW5ndGgobmF6L3MpLDAuMSkqMTAuMCksc21vb3Roc3RlcCgwLjAsMC4xLHNkSGV4KG5heioyMC4wL3MpKSk7fXJldHVybiB2ZWMzKDApO31cbiAgdmVjMyBtTHModmVjMiBuYXosIHZlYzIgcG9zKXt2ZWMyIG1uaSA9IG5hei1wb3M7dmVjMiB6eE1wID0gbmF6KihsZW5ndGgobmF6KSk7ZmxvYXQgYW5nID0gYXRhbihtbmkueCxtbmkueSk7ZmxvYXQgZjAgPSAuMy8obGVuZ3RoKG5hei1wb3MpKjE2LjArMS4wKTtmMCA9IGYwKihzaW4obml6KHNpbihhbmcqMy45LShhbmltYXRlZCA/IGlUaW1lIDogMC4wKSAqIDAuMykgKiBzdGFyUG9pbnRzKSkqLjIgKTtmbG9hdCBmMSA9IG1heCgwLjAxLXBvdyhsZW5ndGgobmF6KzEuMipwb3MpLDEuOSksLjApKjcuMDtmbG9hdCBmMiA9IG1heCguOS8oMTAuMCszMi4wKnBvdyhsZW5ndGgoenhNcCswLjk5KnBvcyksMi4wKSksLjApKjAuMzU7ZmxvYXQgZjIyID0gbWF4KC45LygxMS4wKzMyLjAqcG93KGxlbmd0aCh6eE1wKzAuODUqcG9zKSwyLjApKSwuMCkqMC4yMztmbG9hdCBmMjMgPSBtYXgoLjkvKDEyLjArMzIuMCpwb3cobGVuZ3RoKHp4TXArMC45NSpwb3MpLDIuMCkpLC4wKSowLjY7dmVjMiB6dFggPSBtaXgobmF6LHp4TXAsIDAuMSk7ZmxvYXQgZjQgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WCswLjQqcG9zKSwyLjkpLC4wKSo0LjAyO2Zsb2F0IGY0MiA9IG1heCgwLjAtcG93KGxlbmd0aCh6dFgrMC40NSpwb3MpLDIuOSksLjApKjQuMTtmbG9hdCBmNDMgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WCswLjUqcG9zKSwyLjkpLC4wKSo0LjY7enRYID0gbWl4KG5heix6eE1wLC0uNCk7ZmxvYXQgZjUgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WCswLjEqcG9zKSw1LjUpLC4wKSoyLjA7ZmxvYXQgZjUyID0gbWF4KDAuMDEtcG93KGxlbmd0aCh6dFgrMC4yKnBvcyksNS41KSwuMCkqMi4wO2Zsb2F0IGY1MyA9IG1heCgwLjAxLXBvdyhsZW5ndGgoenRYKzAuMSpwb3MpLDUuNSksLjApKjIuMDt6dFggPSBtaXgobmF6LHp4TXAsIDIuMSk7ZmxvYXQgZjYgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHp0WC0wLjMqcG9zKSwxLjYxKSwuMCkqMy4xNTk7ZmxvYXQgZjYyID0gbWF4KDAuMDEtcG93KGxlbmd0aCh6dFgtMC4zMjUqcG9zKSwxLjYxNCksLjApKjMuMTQ7ZmxvYXQgZjYzID0gbWF4KDAuMDEtcG93KGxlbmd0aCh6dFgtMC4zODkqcG9zKSwxLjYyMyksLjApKjMuMTI7dmVjMyBjID0gdmVjMyhnbFIobmF6LHBvcywgZ2xhcmVTaXplKSk7dmVjMiBwcm90O2lmKGFuaW1hdGVkKXtwcm90ID0gcnRVKG5heiAtIHBvcywgKGlUaW1lICogMC4xKSk7fSBlbHNlIGlmKGFuYW1vcnBoaWMpe3Byb3QgPSBydFUobmF6IC0gcG9zLCAxLjU3MDc5Nik7fSBlbHNlIHtwcm90ID0gbmF6IC0gcG9zO31jICs9IGRyd0YocHJvdCwgKGFuYW1vcnBoaWMgPyBmbGFyZVNpemUgKiAxMC4gOiBmbGFyZVNpemUpLCAwLjEsIGlUaW1lLCAxKTtjLnIrPWYxK2YyK2Y0K2Y1K2Y2OyBjLmcrPWYxK2YyMitmNDIrZjUyK2Y2MjsgYy5iKz1mMStmMjMrZjQzK2Y1MytmNjM7YyA9IGMqMS4zICogdmVjMyhsZW5ndGgoenhNcCkrLjA5KTtjKz12ZWMzKGYwKTtyZXR1cm4gYzt9XG4gIHZlYzMgY2ModmVjMyBjbHIsIGZsb2F0IGZjdCxmbG9hdCBmY3QyKXtmbG9hdCB3ID0gY2xyLngrY2xyLnkrY2xyLno7cmV0dXJuIG1peChjbHIsdmVjMyh3KSpmY3QsdypmY3QyKTt9ZmxvYXQgcm5kKHZlYzIgcCl7ZmxvYXQgZiA9IGZyYWN0KHNpbihkb3QocCwgdmVjMigxMi4xMjM0LCA3Mi44MzkyKSApKjQ1MTIzLjIpKTtyZXR1cm4gZjt9ZmxvYXQgcm5kKGZsb2F0IHcpe2Zsb2F0IGYgPSBmcmFjdChzaW4odykqMTAwMC4pO3JldHVybiBmO31cbiAgZmxvYXQgclNocCh2ZWMyIHAsIGludCBOKXtmbG9hdCBmO2Zsb2F0IGE9YXRhbihwLngscC55KSsuMjtmbG9hdCBiPTYuMjgzMTkvZmxvYXQoTik7Zj1zbW9vdGhzdGVwKC41LC41MSwgY29zKGZsb29yKC41K2EvYikqYi1hKSpsZW5ndGgocC54eSkqIDIuMCAgLWdob3N0U2NhbGUpO3JldHVybiBmO31cbiAgdmVjMyBkckModmVjMiBwLCBmbG9hdCB6c2ksIGZsb2F0IGRDeSwgdmVjMyBjbHIsIHZlYzMgY2xyMiwgZmxvYXQgYW1zMiwgdmVjMiBlc29tKXtmbG9hdCBsID0gbGVuZ3RoKHAgKyBlc29tKihhbXMyKjIuKSkrenNpLzIuO2Zsb2F0IGwyID0gbGVuZ3RoKHAgKyBlc29tKihhbXMyKjQuKSkrenNpLzMuO2Zsb2F0IGMgPSBtYXgoMC4wMS1wb3cobGVuZ3RoKHAgKyBlc29tKmFtczIpLCB6c2kqZ2hvc3RTY2FsZSksIDAuMCkqMTAuO2Zsb2F0IGMxID0gbWF4KDAuMDAxLXBvdyhsLTAuMywgMS4vNDAuKStzaW4obCoyMC4pLCAwLjApKjMuO2Zsb2F0IGMyID0gIG1heCgwLjA5L3BvdyhsZW5ndGgocC1lc29tKmFtczIvLjUpKjEuLCAuOTUpLCAwLjApLzIwLjtmbG9hdCBzID0gbWF4KDAuMDItcG93KHJTaHAocCo1LiArIGVzb20qYW1zMio1LiArIGRDeSwgNikgLCAxLiksIDAuMCkqMS41O2NsciA9IGNvcyh2ZWMzKDAuNDQsIC4yNCwgLjIpKjguICsgYW1zMio0LikqMC41Ky41O3ZlYzMgZiA9IGMqY2xyO2YgKz0gYzEqY2xyO2YgKz0gYzIqY2xyO2YgKz0gIHMqY2xyO3JldHVybiBmLTAuMDE7fVxuICB2ZWM0IGdlTEMoZmxvYXQgeCl7cmV0dXJuIHZlYzQodmVjMyhtaXgobWl4KG1peChtaXgobWl4KG1peChtaXgobWl4KG1peChtaXgobWl4KG1peChtaXgobWl4KG1peCh2ZWMzKDAuLCAwLiwgMC4pLHZlYzMoMC4sIDAuLCAwLiksIHNtb290aHN0ZXAoMC4wLCAwLjA2MywgeCkpLHZlYzMoMC4sIDAuLCAwLiksIHNtb290aHN0ZXAoMC4wNjMsIDAuMTI1LCB4KSksdmVjMygwLjAsIDAuLCAwLiksIHNtb290aHN0ZXAoMC4xMjUsIDAuMTg4LCB4KSksdmVjMygwLjE4OCwgMC4xMzEsIDAuMTE2KSwgc21vb3Roc3RlcCgwLjE4OCwgMC4yMjcsIHgpKSx2ZWMzKDAuMzEsIDAuMjA0LCAwLjUzNyksIHNtb290aHN0ZXAoMC4yMjcsIDAuMjUxLCB4KSksdmVjMygwLjE5MiwgMC4xMDYsIDAuMjg2KSwgc21vb3Roc3RlcCgwLjI1MSwgMC4zMTQsIHgpKSx2ZWMzKDAuMTAyLCAwLjAwOCwgMC4zNDEpLCBzbW9vdGhzdGVwKDAuMzE0LCAwLjM5MiwgeCkpLHZlYzMoMC4wODYsIDAuMCwgMC4xNDEpLCBzbW9vdGhzdGVwKDAuMzkyLCAwLjUwMiwgeCkpLHZlYzMoMS4wLCAwLjMxLCAwLjApLCBzbW9vdGhzdGVwKDAuNTAyLCAwLjYwNCwgeCkpLHZlYzMoLjEsIDAuMSwgMC4xKSwgc21vb3Roc3RlcCgwLjYwNCwgMC42NDMsIHgpKSx2ZWMzKDEuMCwgMC45MjksIDAuMCksIHNtb290aHN0ZXAoMC42NDMsIDAuNzYxLCB4KSksdmVjMygxLjAsIDAuMDg2LCAwLjQyNCksIHNtb290aHN0ZXAoMC43NjEsIDAuODQ3LCB4KSksdmVjMygxLjAsIDAuNDksIDAuMCksIHNtb290aHN0ZXAoMC44NDcsIDAuODksIHgpKSx2ZWMzKDAuOTQ1LCAwLjI3NSwgMC40NzUpLCBzbW9vdGhzdGVwKDAuODksIDAuOTQxLCB4KSksdmVjMygwLjI1MSwgMC4yNzUsIDAuNzk2KSwgc21vb3Roc3RlcCgwLjk0MSwgMS4wLCB4KSkpLDEuMCk7fVxuICBmbG9hdCBkaVROKHZlYzIgcCl7dmVjMiBmID0gZnJhY3QocCk7ZiA9IChmICogZikgKiAoMy4wIC0gKDIuMCAqIGYpKTtmbG9hdCBuID0gZG90KGZsb29yKHApLCB2ZWMyKDEuMCwgMTU3LjApKTt2ZWM0IGEgPSBmcmFjdChzaW4odmVjNChuICsgMC4wLCBuICsgMS4wLCBuICsgMTU3LjAsIG4gKyAxNTguMCkpICogNDM3NTguNTQ1MzEyMyk7cmV0dXJuIG1peChtaXgoYS54LCBhLnksIGYueCksIG1peChhLnosIGEudywgZi54KSwgZi55KTt9XG4gIGZsb2F0IGZibSh2ZWMyIHApe2NvbnN0IG1hdDIgbSA9IG1hdDIoMC44MCwgLTAuNjAsIDAuNjAsIDAuODApO2Zsb2F0IGYgPSAwLjA7ZiArPSAwLjUwMDAqZGlUTihwKTsgcCA9IG0qcCoyLjAyO2YgKz0gMC4yNTAwKmRpVE4ocCk7IHAgPSBtKnAqMi4wMztmICs9IDAuMTI1MCpkaVROKHApOyBwID0gbSpwKjIuMDE7ZiArPSAwLjA2MjUqZGlUTihwKTtyZXR1cm4gZi8wLjkzNzU7fVxuICB2ZWM0IGdlTFModmVjMiBwKXt2ZWMyIHBwID0gKHAgLSB2ZWMyKDAuNSkpICogMi4wO2Zsb2F0IGEgPSBhdGFuKHBwLnksIHBwLngpO3ZlYzQgY3AgPSB2ZWM0KHNpbihhICogMS4wKSwgbGVuZ3RoKHBwKSwgc2luKGEgKiAxMy4wKSwgc2luKGEgKiA1My4wKSk7ZmxvYXQgZCA9IHNpbihjbGFtcChwb3cobGVuZ3RoKHZlYzIoMC41KSAtIHApICogMC41ICsgaGFsb1NjYWxlIC8yLiwgNS4wKSwgMC4wLCAxLjApICogMy4xNDE1OSk7dmVjMyBjID0gdmVjMyhkKSAqIHZlYzMoZmJtKGNwLnh5ICogMTYuMCkgKiBmYm0oY3AuencgKiA5LjApICogbWF4KG1heChtYXgobWF4KDAuNSwgc2luKGEgKiAxLjApKSwgc2luKGEgKiAzLjApICogMC44KSwgc2luKGEgKiA3LjApICogMC44KSwgc2luKGEgKiA5LjApICogMTAuNikpO2MgKj0gdmVjMyhtaXgoMi4wLCAoc2luKGxlbmd0aChwcC54eSkgKiAyNTYuMCkgKiAwLjUpICsgMC41LCBzaW4oKGNsYW1wKChsZW5ndGgocHAueHkpIC0gMC44NzUpIC8gMC4xLCAwLjAsIDEuMCkgKyAwLjApICogMi4wICogMy4xNDE1OSkgKiAxLjUpICsgMC41KSAqIDAuMzI3NTtyZXR1cm4gdmVjNCh2ZWMzKGMgKiAxLjApLCBkKTt9XG4gIHZlYzQgZ2VMRCh2ZWMyIHApe3AueHkgKz0gdmVjMihmYm0ocC55eCAqIDMuMCksIGZibShwLnl4ICogMi4wKSkgKiAwLjA4MjU7dmVjMyBvID0gdmVjMyhtaXgoMC4xMjUsIDAuMjUsIG1heChtYXgoc21vb3Roc3RlcCgwLjEsIDAuMCwgbGVuZ3RoKHAgLSB2ZWMyKDAuMjUpKSksc21vb3Roc3RlcCgwLjQsIDAuMCwgbGVuZ3RoKHAgLSB2ZWMyKDAuNzUpKSkpLHNtb290aHN0ZXAoMC44LCAwLjAsIGxlbmd0aChwIC0gdmVjMigwLjg3NSwgMC4xMjUpKSkpKSk7byArPSB2ZWMzKG1heChmYm0ocCAqIDEuMCkgLSAwLjUsIDAuMCkpICogMC41O28gKz0gdmVjMyhtYXgoZmJtKHAgKiAyLjApIC0gMC41LCAwLjApKSAqIDAuNTtvICs9IHZlYzMobWF4KGZibShwICogNC4wKSAtIDAuNSwgMC4wKSkgKiAwLjI1O28gKz0gdmVjMyhtYXgoZmJtKHAgKiA4LjApIC0gMC43NSwgMC4wKSkgKiAxLjA7byArPSB2ZWMzKG1heChmYm0ocCAqIDE2LjApIC0gMC43NSwgMC4wKSkgKiAwLjc1O28gKz0gdmVjMyhtYXgoZmJtKHAgKiA2NC4wKSAtIDAuNzUsIDAuMCkpICogMC41O3JldHVybiB2ZWM0KGNsYW1wKG8sIHZlYzMoMC4xNSksIHZlYzMoMS4wKSksIDEuMCk7fVxuICB2ZWM0IHR4TChzYW1wbGVyMkQgdGV4LCB2ZWMyIHh0Qyl7aWYoKCh4dEMueCA8IDAuKSB8fCAoeHRDLnkgPCAwLikpIHx8ICgoeHRDLnggPiAxLikgfHwgKHh0Qy55ID4gMS4pKSl7cmV0dXJuIHZlYzQoMC4wKTt9ZWxzZXtyZXR1cm4gdGV4dHVyZSh0ZXgsIHh0Qyk7IH19XG4gIHZlYzQgdHhEKHNhbXBsZXIyRCB0ZXgsIHZlYzIgeHRDLCB2ZWMyIGRpciwgdmVjMyBkaXRuKSB7cmV0dXJuIHZlYzQodHhMKHRleCwgKHh0QyArIChkaXIgKiBkaXRuLnIpKSkucix0eEwodGV4LCAoeHRDICsgKGRpciAqIGRpdG4uZykpKS5nLHR4TCh0ZXgsICh4dEMgKyAoZGlyICogZGl0bi5iKSkpLmIsMS4wKTt9XG4gIHZlYzQgc3RyQigpe3ZlYzIgYXNwWHRjID0gdmVjMigxLjApIC0gKCgodnh0QyAtIHZlYzIoMC41KSkgKiB2ZWMyKDEuMCkpICsgdmVjMigwLjUpKTsgdmVjMiB4dEMgPSB2ZWMyKDEuMCkgLSB2eHRDOyB2ZWMyIGdodmMgPSAodmVjMigwLjUpIC0geHRDKSAqIDAuMyAtIGxlbnNQb3NpdGlvbjsgdmVjMiBnaE5tID0gbm9ybWFsaXplKGdodmMgKiB2ZWMyKDEuMCkpICogdmVjMigxLjApO3ZlYzIgaGFsb1ZlYyA9IG5vcm1hbGl6ZShnaHZjKSAqIDAuNjt2ZWMyIGhsTm0gPSBnaE5tICogMC42O3ZlYzIgdGV4ZWxTaXplID0gdmVjMigxLjApIC8gdmVjMihpUmVzb2x1dGlvbi54eSk7dmVjMyBkaXRuID0gdmVjMygtKHRleGVsU2l6ZS54ICogMS41KSwgMC4yLCB0ZXhlbFNpemUueCAqIDEuNSk7dmVjNCBjID0gdmVjNCgwLjApO2ZvciAoaW50IGkgPSAwOyBpIDwgODsgaSsrKSB7dmVjMiBvZmZzZXQgPSB4dEMgKyAoZ2h2YyAqIGZsb2F0KGkpKTtjICs9IHR4RChsZW5zRGlydFRleHR1cmUsIG9mZnNldCwgZ2hObSwgZGl0bikgKiBwb3cobWF4KDAuMCwgMS4wIC0gKGxlbmd0aCh2ZWMyKDAuNSkgLSBvZmZzZXQpIC8gbGVuZ3RoKHZlYzIoMC41KSkpKSwgMTAuMCk7fXZlYzIgdXlUcnogPSB4dEMgKyBobE5tOyByZXR1cm4gKGMgKiBnZUxDKChsZW5ndGgodmVjMigwLjUpIC0gYXNwWHRjKSAvIGxlbmd0aCh2ZWMyKGhhbG9TY2FsZSkpKSkpICsodHhEKGxlbnNEaXJ0VGV4dHVyZSwgdXlUcnosIGdoTm0sIGRpdG4pICogcG93KG1heCgwLjAsIDEuMCAtIChsZW5ndGgodmVjMigwLjUpIC0gdXlUcnopIC8gbGVuZ3RoKHZlYzIoMC41KSkpKSwgMTAuMCkpO31cbiAgdm9pZCBtYWluSW1hZ2UodmVjNCB2LHZlYzIgcixvdXQgdmVjNCBpKXt2ZWMyIGc9ci0uNTtnLnkqPWlSZXNvbHV0aW9uLnkvaVJlc29sdXRpb24ueDt2ZWMyIGw9bGVuc1Bvc2l0aW9uKi41O2wueSo9aVJlc29sdXRpb24ueS9pUmVzb2x1dGlvbi54O3ZlYzMgZj1tTHMoZyxsKSoyMC4qY29sb3JHYWluLzI1Ni47aWYoYWRpdGlvbmFsU3RyZWFrcyl7dmVjMyBvPXZlYzMoLjksLjIsLjEpLHA9dmVjMyguMywuMSwuOSk7Zm9yKGZsb2F0IG49MC47bjwxMC47bisrKWYrPWRyQyhnLHBvdyhybmQobioyZTMpKjIuOCwuMSkrMS40MSwwLixvK24scCtuLHJuZChuKjIwLikqMy4rLjItLjUsbGVuc1Bvc2l0aW9uKTt9aWYoc2Vjb25kYXJ5R2hvc3RzKXt2ZWMzIG49dmVjMygwKTtuKz1ySHgoZywtbGVuc1Bvc2l0aW9uKi4yNSxnaG9zdFNjYWxlKjEuNCx2ZWMzKC4yNSwuMzUsMCkpO24rPXJIeChnLGxlbnNQb3NpdGlvbiouMjUsZ2hvc3RTY2FsZSouNSx2ZWMzKDEsLjUsLjUpKTtuKz1ySHgoZyxsZW5zUG9zaXRpb24qLjEsZ2hvc3RTY2FsZSoxLjYsdmVjMygxKSk7bis9ckh4KGcsbGVuc1Bvc2l0aW9uKjEuOCxnaG9zdFNjYWxlKjIuLHZlYzMoMCwuNSwuNzUpKTtuKz1ySHgoZyxsZW5zUG9zaXRpb24qMS4yNSxnaG9zdFNjYWxlKi44LHZlYzMoMSwxLC41KSk7bis9ckh4KGcsLWxlbnNQb3NpdGlvbioxLjI1LGdob3N0U2NhbGUqNS4sdmVjMyguNSwuNSwuMjUpKTtuKz1mcG93KDEuLWFicyhkaXN0YW5jZShsZW5zUG9zaXRpb24qLjgsZyktLjcpLC45ODUpKmNvbG9yR2Fpbi8yMTAwLjtmKz1uO31pZihzdGFyQnVyc3Qpe3Z4dEM9ZysuNTt2ZWM0IG49Z2VMRChnKTtmbG9hdCBvPTEuLWNsYW1wKDAuNSwwLiwuNSkqMi47bis9bWl4KG4scG93KG4qMi4sdmVjNCgyKSkqLjUsbyk7ZmxvYXQgcz0oZy54K2cueSkqKDEuLzYuKTt2ZWMyIGQ9bWF0Mihjb3MocyksLXNpbihzKSxzaW4ocyksY29zKHMpKSp2eHRDO24rPWdlTFMoZCkqMi47Zis9Y2xhbXAobi54eXoqc3RyQigpLnh5eiwuMDEsMS4pO31pPWVuYWJsZWQ/dmVjNChtaXgoZix2ZWMzKDApLG9wYWNpdHkpK3YueHl6LHYudyk6dmVjNCh2KTt9XG5gLFxufTtcblxuZXhwb3J0IGNsYXNzIExlbnNGbGFyZUVmZmVjdCBleHRlbmRzIEVmZmVjdCB7XG5cdGNvbnN0cnVjdG9yKHtcblx0XHRibGVuZEZ1bmN0aW9uID0gQmxlbmRGdW5jdGlvbi5OT1JNQUwsXG5cdFx0ZW5hYmxlZCA9IHRydWUsXG5cdFx0Z2xhcmVTaXplID0gMC4yLFxuXHRcdGxlbnNQb3NpdGlvbiA9IFswLjAxLCAwLjAxXSxcblx0XHRpUmVzb2x1dGlvbiA9IFswLCAwXSxcblx0XHRzdGFyUG9pbnRzID0gNixcblx0XHRmbGFyZVNpemUgPSAwLjAxLFxuXHRcdGZsYXJlU3BlZWQgPSAwLjAxLFxuXHRcdGZsYXJlU2hhcGUgPSAwLjAxLFxuXHRcdGFuaW1hdGVkID0gdHJ1ZSxcblx0XHRhbmFtb3JwaGljID0gZmFsc2UsXG5cdFx0Y29sb3JHYWluID0gbmV3IENvbG9yKDIwLCAyMCwgMjApLFxuXHRcdGxlbnNEaXJ0VGV4dHVyZSA9IG51bGwgYXMgVGV4dHVyZSB8IG51bGwsXG5cdFx0aGFsb1NjYWxlID0gMC41LFxuXHRcdHNlY29uZGFyeUdob3N0cyA9IHRydWUsXG5cdFx0YWRpdGlvbmFsU3RyZWFrcyA9IHRydWUsXG5cdFx0Z2hvc3RTY2FsZSA9IDAuMCxcblx0XHRvcGFjaXR5ID0gMS4wLFxuXHRcdHN0YXJCdXJzdCA9IGZhbHNlLFxuXHR9ID0ge30pIHtcblx0XHRzdXBlcignTGVuc0ZsYXJlRWZmZWN0JywgTGVuc0ZsYXJlU2hhZGVyLmZyYWdtZW50U2hhZGVyLCB7XG5cdFx0XHRibGVuZEZ1bmN0aW9uLFxuXHRcdFx0dW5pZm9ybXM6IG5ldyBNYXA8c3RyaW5nLCBVbmlmb3JtPihbXG5cdFx0XHRcdFsnZW5hYmxlZCcsIG5ldyBVbmlmb3JtKGVuYWJsZWQpXSxcblx0XHRcdFx0WydnbGFyZVNpemUnLCBuZXcgVW5pZm9ybShnbGFyZVNpemUpXSxcblx0XHRcdFx0WydsZW5zUG9zaXRpb24nLCBuZXcgVW5pZm9ybShsZW5zUG9zaXRpb24pXSxcblx0XHRcdFx0WydpVGltZScsIG5ldyBVbmlmb3JtKDApXSxcblx0XHRcdFx0WydpUmVzb2x1dGlvbicsIG5ldyBVbmlmb3JtKGlSZXNvbHV0aW9uKV0sXG5cdFx0XHRcdFsnc3RhclBvaW50cycsIG5ldyBVbmlmb3JtKHN0YXJQb2ludHMpXSxcblx0XHRcdFx0WydmbGFyZVNpemUnLCBuZXcgVW5pZm9ybShmbGFyZVNpemUpXSxcblx0XHRcdFx0WydmbGFyZVNwZWVkJywgbmV3IFVuaWZvcm0oZmxhcmVTcGVlZCldLFxuXHRcdFx0XHRbJ2ZsYXJlU2hhcGUnLCBuZXcgVW5pZm9ybShmbGFyZVNoYXBlKV0sXG5cdFx0XHRcdFsnYW5pbWF0ZWQnLCBuZXcgVW5pZm9ybShhbmltYXRlZCldLFxuXHRcdFx0XHRbJ2FuYW1vcnBoaWMnLCBuZXcgVW5pZm9ybShhbmFtb3JwaGljKV0sXG5cdFx0XHRcdFsnY29sb3JHYWluJywgbmV3IFVuaWZvcm0oY29sb3JHYWluKV0sXG5cdFx0XHRcdFsnbGVuc0RpcnRUZXh0dXJlJywgbmV3IFVuaWZvcm0obGVuc0RpcnRUZXh0dXJlKV0sXG5cdFx0XHRcdFsnaGFsb1NjYWxlJywgbmV3IFVuaWZvcm0oaGFsb1NjYWxlKV0sXG5cdFx0XHRcdFsnc2Vjb25kYXJ5R2hvc3RzJywgbmV3IFVuaWZvcm0oc2Vjb25kYXJ5R2hvc3RzKV0sXG5cdFx0XHRcdFsnYWRpdGlvbmFsU3RyZWFrcycsIG5ldyBVbmlmb3JtKGFkaXRpb25hbFN0cmVha3MpXSxcblx0XHRcdFx0WydnaG9zdFNjYWxlJywgbmV3IFVuaWZvcm0oZ2hvc3RTY2FsZSldLFxuXHRcdFx0XHRbJ3N0YXJCdXJzdCcsIG5ldyBVbmlmb3JtKHN0YXJCdXJzdCldLFxuXHRcdFx0XHRbJ29wYWNpdHknLCBuZXcgVW5pZm9ybShvcGFjaXR5KV0sXG5cdFx0XHRdKSxcblx0XHR9KTtcblx0fVxuXG5cdG92ZXJyaWRlIHVwZGF0ZShfcmVuZGVyZXI6IGFueSwgX2lucHV0QnVmZmVyOiBhbnksIGRlbHRhVGltZTogbnVtYmVyKSB7XG5cdFx0Y29uc3QgaVRpbWUgPSB0aGlzLnVuaWZvcm1zLmdldCgnaVRpbWUnKTtcblx0XHRpZiAoaVRpbWUpIHtcblx0XHRcdGlUaW1lLnZhbHVlICs9IGRlbHRhVGltZTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IHR5cGUgTGVuc0ZsYXJlT3B0aW9ucyA9IENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgTGVuc0ZsYXJlRWZmZWN0PlswXSAmIHtcblx0cG9zaXRpb246IFZlY3RvcjM7XG5cdGZvbGxvd01vdXNlOiBib29sZWFuO1xuXHRzbW9vdGhUaW1lOiBudW1iZXI7XG59O1xuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTGVuc0ZsYXJlT3B0aW9ucyA9IHtcblx0cG9zaXRpb246IG5ldyBWZWN0b3IzKC0yNSwgNiwgLTYwKSxcblx0Zm9sbG93TW91c2U6IGZhbHNlLFxuXHRzbW9vdGhUaW1lOiAwLjcsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RwLWxlbnMtZmxhcmUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2VmZmVjdCgpXVwiIFtyZWZdPVwiZWZmZWN0UmVmKClcIiBbZGlzcG9zZV09XCJudWxsXCIgbmd0Q29tcG91bmQgLz5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RwTGVuc0ZsYXJlIHtcblx0YXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0c3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXHR2aWV3cG9ydCA9IHRoaXMuc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcpO1xuXHRyYXljYXN0ZXIgPSB0aGlzLnN0b3JlLnNlbGVjdCgncmF5Y2FzdGVyJyk7XG5cdHBvaW50ZXIgPSB0aGlzLnN0b3JlLnNlbGVjdCgncG9pbnRlcicpO1xuXG5cdGNvbXBvc2VyQXBpID0gaW5qZWN0RWZmZWN0Q29tcG9zZXJBcGkoKTtcblxuXHRlZmZlY3RSZWYgPSBpbnB1dChpbmplY3ROZ3RSZWY8TGVuc0ZsYXJlRWZmZWN0PigpKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdHByb2plY3RlZFBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcblx0bW91c2UyZCA9IG5ldyBWZWN0b3IyKCk7XG5cblx0ZWZmZWN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHsgcG9zaXRpb246IF8sIGZvbGxvd01vdXNlOiBfXywgc21vb3RoVGltZTogX19fLCAuLi5vcHRpb25zIH0gPSB0aGlzLm9wdGlvbnMoKTtcblx0XHRyZXR1cm4gbmV3IExlbnNGbGFyZUVmZmVjdChvcHRpb25zKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdHRoaXMuYXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IFtlZmZlY3QsIHZpZXdwb3J0XSA9IFt0aGlzLmVmZmVjdCgpLCB0aGlzLnZpZXdwb3J0KCldO1xuXHRcdFx0XHRjb25zdCBpUmVzb2x1dGlvbiA9IGVmZmVjdC51bmlmb3Jtcy5nZXQoJ2lSZXNvbHV0aW9uJyk7XG5cdFx0XHRcdGlmIChpUmVzb2x1dGlvbikge1xuXHRcdFx0XHRcdGlSZXNvbHV0aW9uLnZhbHVlLnggPSB2aWV3cG9ydC53aWR0aDtcblx0XHRcdFx0XHRpUmVzb2x1dGlvbi52YWx1ZS55ID0gdmlld3BvcnQuaGVpZ2h0O1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBkZWx0YSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbZWZmZWN0XSA9IFt0aGlzLmVmZmVjdCgpXTtcblx0XHRcdGlmICghZWZmZWN0KSByZXR1cm47XG5cblx0XHRcdGNvbnN0IFt7IGZvbGxvd01vdXNlLCBwb3NpdGlvbiwgc21vb3RoVGltZSB9LCBwb2ludGVyLCB7IGNhbWVyYSwgc2NlbmUgfSwgcmF5Y2FzdGVyXSA9IFtcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdHRoaXMucG9pbnRlcigpLFxuXHRcdFx0XHR0aGlzLmNvbXBvc2VyQXBpKCksXG5cdFx0XHRcdHRoaXMucmF5Y2FzdGVyKCksXG5cdFx0XHRdO1xuXG5cdFx0XHRjb25zdCB1TGVuc1Bvc2l0aW9uID0gZWZmZWN0LnVuaWZvcm1zLmdldCgnbGVuc1Bvc2l0aW9uJyk7XG5cdFx0XHRjb25zdCB1T3BhY2l0eSA9IGVmZmVjdC51bmlmb3Jtcy5nZXQoJ29wYWNpdHknKTtcblx0XHRcdGlmICghdUxlbnNQb3NpdGlvbiB8fCAhdU9wYWNpdHkpIHJldHVybjtcblxuXHRcdFx0bGV0IHRhcmdldCA9IDE7XG5cblx0XHRcdGlmIChmb2xsb3dNb3VzZSkge1xuXHRcdFx0XHR1TGVuc1Bvc2l0aW9uLnZhbHVlLnggPSBwb2ludGVyLng7XG5cdFx0XHRcdHVMZW5zUG9zaXRpb24udmFsdWUueSA9IHBvaW50ZXIueTtcblx0XHRcdFx0dGFyZ2V0ID0gMDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMucHJvamVjdGVkUG9zaXRpb24uY29weShwb3NpdGlvbikucHJvamVjdChjYW1lcmEpO1xuXHRcdFx0XHRpZiAodGhpcy5wcm9qZWN0ZWRQb3NpdGlvbi56ID4gMSkgcmV0dXJuO1xuXG5cdFx0XHRcdHVMZW5zUG9zaXRpb24udmFsdWUueCA9IHRoaXMucHJvamVjdGVkUG9zaXRpb24ueDtcblx0XHRcdFx0dUxlbnNQb3NpdGlvbi52YWx1ZS55ID0gdGhpcy5wcm9qZWN0ZWRQb3NpdGlvbi55O1xuXG5cdFx0XHRcdHRoaXMubW91c2UyZC5zZXQodGhpcy5wcm9qZWN0ZWRQb3NpdGlvbi54LCB0aGlzLnByb2plY3RlZFBvc2l0aW9uLnkpO1xuXHRcdFx0XHRyYXljYXN0ZXIuc2V0RnJvbUNhbWVyYSh0aGlzLm1vdXNlMmQsIGNhbWVyYSk7XG5cdFx0XHRcdGNvbnN0IGludGVyc2VjdHMgPSByYXljYXN0ZXIuaW50ZXJzZWN0T2JqZWN0cyhzY2VuZS5jaGlsZHJlbiwgdHJ1ZSk7XG5cdFx0XHRcdGNvbnN0IHsgb2JqZWN0IH0gPSBpbnRlcnNlY3RzWzBdID8/IHt9O1xuXHRcdFx0XHRpZiAob2JqZWN0KSB7XG5cdFx0XHRcdFx0aWYgKG9iamVjdC51c2VyRGF0YT8uWydsZW5zZmxhcmUnXSA9PT0gJ25vLW9jY2x1c2lvbicpIHtcblx0XHRcdFx0XHRcdHRhcmdldCA9IDA7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNZXNoKSB7XG5cdFx0XHRcdFx0XHRpZiAob2JqZWN0Lm1hdGVyaWFsLnVuaWZvcm1zPy5fdHJhbnNtaXNzaW9uPy52YWx1ZSA+IDAuMikge1xuXHRcdFx0XHRcdFx0XHQvL0NoZWNrIGZvciBNZXNoVHJhbnNtaXNzaW9uTWF0ZXJpYWxcblx0XHRcdFx0XHRcdFx0dGFyZ2V0ID0gMC4yO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChvYmplY3QubWF0ZXJpYWwuX3RyYW5zbWlzc2lvbiAmJiBvYmplY3QubWF0ZXJpYWwuX3RyYW5zbWlzc2lvbiA+IDAuMikge1xuXHRcdFx0XHRcdFx0XHQvL0NoZWNrIGZvciBNZXNoUGh5c2ljYWxNYXRlcmlhbCB3aXRoIHRyYW5zbWlzc2lvbiBzZXR0aW5nXG5cdFx0XHRcdFx0XHRcdHRhcmdldCA9IDAuMjtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAob2JqZWN0Lm1hdGVyaWFsLnRyYW5zcGFyZW50KSB7XG5cdFx0XHRcdFx0XHRcdC8vIENoZWNrIGZvciBPdGhlck1hdGVyaWFscyB3aXRoIHRyYW5zcGFyZW50IHBhcmFtZXRlclxuXHRcdFx0XHRcdFx0XHR0YXJnZXQgPSBvYmplY3QubWF0ZXJpYWwub3BhY2l0eTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0ZWFzaW5nLmRhbXAodU9wYWNpdHksICd2YWx1ZScsIHRhcmdldCwgc21vb3RoVGltZSwgZGVsdGEpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,51 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, afterNextRender, computed, input, } from '@angular/core';
2
+ import { NgtArgs, injectNgtRef, injectNgtStore } from 'angular-three';
3
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
4
+ import { LUT3DEffect } from 'postprocessing';
5
+ import * as i0 from "@angular/core";
6
+ export class NgtpLUT {
7
+ constructor() {
8
+ this.autoEffect = injectAutoEffect();
9
+ this.store = injectNgtStore();
10
+ this.invalidate = this.store.select('invalidate');
11
+ this.effectRef = input(injectNgtRef());
12
+ this.options = input({});
13
+ this.lut = computed(() => this.options().lut);
14
+ this.effect = computed(() => {
15
+ const [lut, { lut: _, ...options }] = [this.lut(), this.options()];
16
+ return new LUT3DEffect(lut, options);
17
+ });
18
+ afterNextRender(() => {
19
+ this.autoEffect(() => {
20
+ const [effect, { lut, tetrahedralInterpolation }, invalidate] = [
21
+ this.effect(),
22
+ this.options(),
23
+ this.invalidate(),
24
+ ];
25
+ if (tetrahedralInterpolation)
26
+ effect.tetrahedralInterpolation = tetrahedralInterpolation;
27
+ if (lut)
28
+ effect.lut = lut;
29
+ invalidate();
30
+ });
31
+ });
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtpLUT, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtpLUT, isStandalone: true, selector: "ngtp-lut", inputs: { effectRef: { classPropertyName: "effectRef", publicName: "effectRef", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
35
+ <ngt-primitive *args="[effect()]" [ref]="effectRef()" [dispose]="null" ngtCompound />
36
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtpLUT, decorators: [{
39
+ type: Component,
40
+ args: [{
41
+ selector: 'ngtp-lut',
42
+ template: `
43
+ <ngt-primitive *args="[effect()]" [ref]="effectRef()" [dispose]="null" ngtCompound />
44
+ `,
45
+ imports: [NgtArgs],
46
+ standalone: true,
47
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
48
+ changeDetection: ChangeDetectionStrategy.OnPush,
49
+ }]
50
+ }], ctorParameters: () => [] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wb3N0cHJvY2Vzc2luZy9zcmMvbGliL2VmZmVjdHMvbHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFpQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFtQjVELE1BQU0sT0FBTyxPQUFPO0lBY25CO1FBYkEsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsVUFBSyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU3QyxjQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBZSxDQUFDLENBQUM7UUFDL0MsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUFnQixDQUFDLENBQUM7UUFDbEMsUUFBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekMsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBR0YsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDcEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSx3QkFBd0IsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHO29CQUMvRCxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNiLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRTtpQkFDakIsQ0FBQztnQkFFRixJQUFJLHdCQUF3QjtvQkFBRSxNQUFNLENBQUMsd0JBQXdCLEdBQUcsd0JBQXdCLENBQUM7Z0JBQ3pGLElBQUksR0FBRztvQkFBRSxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDMUIsVUFBVSxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E1QlcsT0FBTztrR0FBUCxPQUFPLGtWQVJUOztFQUVULDREQUNTLE9BQU87OzJGQUtMLE9BQU87a0JBVm5CLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFFBQVEsRUFBRTs7RUFFVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRjb21wdXRlZCxcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgaW5qZWN0Tmd0UmVmLCBpbmplY3ROZ3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgQmxlbmRGdW5jdGlvbiwgTFVUM0RFZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBUZXh0dXJlIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExVVE9wdGlvbnMge1xuXHRsdXQ6IFRleHR1cmU7XG5cdGJsZW5kRnVuY3Rpb24/OiBCbGVuZEZ1bmN0aW9uO1xuXHR0ZXRyYWhlZHJhbEludGVycG9sYXRpb24/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RwLWx1dCcsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbZWZmZWN0KCldXCIgW3JlZl09XCJlZmZlY3RSZWYoKVwiIFtkaXNwb3NlXT1cIm51bGxcIiBuZ3RDb21wb3VuZCAvPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBMVVQge1xuXHRhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXHRzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdGludmFsaWRhdGUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnaW52YWxpZGF0ZScpO1xuXG5cdGVmZmVjdFJlZiA9IGlucHV0KGluamVjdE5ndFJlZjxMVVQzREVmZmVjdD4oKSk7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBMVVRPcHRpb25zKTtcblx0bHV0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkubHV0KTtcblxuXHRlZmZlY3QgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2x1dCwgeyBsdXQ6IF8sIC4uLm9wdGlvbnMgfV0gPSBbdGhpcy5sdXQoKSwgdGhpcy5vcHRpb25zKCldO1xuXHRcdHJldHVybiBuZXcgTFVUM0RFZmZlY3QobHV0LCBvcHRpb25zKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdHRoaXMuYXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IFtlZmZlY3QsIHsgbHV0LCB0ZXRyYWhlZHJhbEludGVycG9sYXRpb24gfSwgaW52YWxpZGF0ZV0gPSBbXG5cdFx0XHRcdFx0dGhpcy5lZmZlY3QoKSxcblx0XHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdFx0XTtcblxuXHRcdFx0XHRpZiAodGV0cmFoZWRyYWxJbnRlcnBvbGF0aW9uKSBlZmZlY3QudGV0cmFoZWRyYWxJbnRlcnBvbGF0aW9uID0gdGV0cmFoZWRyYWxJbnRlcnBvbGF0aW9uO1xuXHRcdFx0XHRpZiAobHV0KSBlZmZlY3QubHV0ID0gbHV0O1xuXHRcdFx0XHRpbnZhbGlkYXRlKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -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, NoiseEffect } 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({ NoiseEffect });
8
+ export class NgtpNoise {
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.3", ngImport: i0, type: NgtpNoise, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtpNoise, isStandalone: true, selector: "ngtp-noise", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.COLOR_DODGE })], hostDirectives: [{ directive: i1.NgtpEffect, inputs: ["blendFunction", "blendFunction", "opacity", "opacity", "effectRef", "effectRef"] }], ngImport: i0, template: `
15
+ <ngt-noise-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
16
+ <ngtp-effect-blend-mode />
17
+ <ng-content />
18
+ </ngt-noise-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.3", ngImport: i0, type: NgtpNoise, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'ngtp-noise',
25
+ template: `
26
+ <ngt-noise-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
27
+ <ngtp-effect-blend-mode />
28
+ <ng-content />
29
+ </ngt-noise-effect>
30
+ `,
31
+ standalone: true,
32
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
33
+ changeDetection: ChangeDetectionStrategy.OnPush,
34
+ imports: [NgtArgs, NgtpEffectBlendMode],
35
+ hostDirectives: [NgtpEffectHostDirective],
36
+ providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.COLOR_DODGE })],
37
+ }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9pc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9ub2lzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFbEgsTUFBTSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQW1CeEIsTUFBTSxPQUFPLFNBQVM7SUFmdEI7UUFnQkMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QyxZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQStDLENBQUMsQ0FBQztLQUNqRTs4R0FIWSxTQUFTO2tHQUFULFNBQVMsbU1BRlYsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxzS0FYNUU7Ozs7O0VBS1QsNERBSVMsT0FBTyxnRkFBRSxtQkFBbUI7OzJGQUkxQixTQUFTO2tCQWZyQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUU7Ozs7O0VBS1Q7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDO29CQUN2QyxjQUFjLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDekMsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUMsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7aUJBQ3RGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBCbGVuZEZ1bmN0aW9uLCBOb2lzZUVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIE5ndHBFZmZlY3RCbGVuZE1vZGUsIE5ndHBFZmZlY3RIb3N0RGlyZWN0aXZlLCBwcm92aWRlRGVmYXVsdEVmZmVjdE9wdGlvbnMgfSBmcm9tICcuLi9lZmZlY3QnO1xuXG5leHRlbmQoeyBOb2lzZUVmZmVjdCB9KTtcblxuZXhwb3J0IHR5cGUgTm9pc2VFZmZlY3RPcHRpb25zID0gUGFydGlhbDxOb25OdWxsYWJsZTxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIE5vaXNlRWZmZWN0PlswXT4+O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RwLW5vaXNlJyxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW5vaXNlLWVmZmVjdCAqYXJncz1cIltvcHRpb25zKCldXCIgW2NhbWVyYV09XCJlZmZlY3QuY2FtZXJhKClcIiBbcmVmXT1cImVmZmVjdC5lZmZlY3RSZWYoKVwiIG5ndENvbXBvdW5kPlxuXHRcdFx0PG5ndHAtZWZmZWN0LWJsZW5kLW1vZGUgLz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3Qtbm9pc2UtZWZmZWN0PlxuXHRgLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJncywgTmd0cEVmZmVjdEJsZW5kTW9kZV0sXG5cdGhvc3REaXJlY3RpdmVzOiBbTmd0cEVmZmVjdEhvc3REaXJlY3RpdmVdLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlRGVmYXVsdEVmZmVjdE9wdGlvbnMoeyBibGVuZEZ1bmN0aW9uOiBCbGVuZEZ1bmN0aW9uLkNPTE9SX0RPREdFIH0pXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cE5vaXNlIHtcblx0ZWZmZWN0ID0gaW5qZWN0KE5ndHBFZmZlY3QsIHsgaG9zdDogdHJ1ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIE9taXQ8Tm9pc2VFZmZlY3RPcHRpb25zLCAnYmxlbmRGdW5jdGlvbic+KTtcbn1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
+ import { NgtArgs, injectNgtRef } from 'angular-three';
3
+ import { mergeInputs } from 'ngxtension/inject-inputs';
4
+ import { PixelationEffect } from 'postprocessing';
5
+ import * as i0 from "@angular/core";
6
+ export class NgtpPixelation {
7
+ constructor() {
8
+ this.effectRef = input(injectNgtRef());
9
+ this.options = input({ granularity: 5 }, { transform: mergeInputs({ granularity: 5 }) });
10
+ this.granularity = computed(() => this.options().granularity);
11
+ this.effect = computed(() => new PixelationEffect(this.granularity()));
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtpPixelation, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtpPixelation, isStandalone: true, selector: "ngtp-pixelation", inputs: { effectRef: { classPropertyName: "effectRef", publicName: "effectRef", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
15
+ <ngt-primitive *args="[effect()]" [ref]="effectRef()" ngtCompound />
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.3", ngImport: i0, type: NgtpPixelation, decorators: [{
19
+ type: Component,
20
+ args: [{
21
+ selector: 'ngtp-pixelation',
22
+ template: `
23
+ <ngt-primitive *args="[effect()]" [ref]="effectRef()" ngtCompound />
24
+ `,
25
+ standalone: true,
26
+ changeDetection: ChangeDetectionStrategy.OnPush,
27
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
28
+ imports: [NgtArgs],
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl4ZWxhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL3BpeGVsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFlbEQsTUFBTSxPQUFPLGNBQWM7SUFWM0I7UUFXQyxjQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBb0IsQ0FBQyxDQUFDO1FBQ3BELFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUF1QixFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RyxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFekQsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDbEU7OEdBTlksY0FBYztrR0FBZCxjQUFjLHlWQVJoQjs7RUFFVCw0REFJUyxPQUFPOzsyRkFFTCxjQUFjO2tCQVYxQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRTs7RUFFVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBcmdzLCBpbmplY3ROZ3RSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IFBpeGVsYXRpb25FZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGl4ZWxhdGlvbk9wdGlvbnMge1xuXHRncmFudWxhcml0eTogbnVtYmVyO1xufVxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1waXhlbGF0aW9uJyxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltlZmZlY3QoKV1cIiBbcmVmXT1cImVmZmVjdFJlZigpXCIgbmd0Q29tcG91bmQgLz5cblx0YCxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RwUGl4ZWxhdGlvbiB7XG5cdGVmZmVjdFJlZiA9IGlucHV0KGluamVjdE5ndFJlZjxQaXhlbGF0aW9uRWZmZWN0PigpKTtcblx0b3B0aW9ucyA9IGlucHV0KHsgZ3JhbnVsYXJpdHk6IDUgfSBhcyBQaXhlbGF0aW9uT3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKHsgZ3JhbnVsYXJpdHk6IDUgfSkgfSk7XG5cdGdyYW51bGFyaXR5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuZ3JhbnVsYXJpdHkpO1xuXG5cdGVmZmVjdCA9IGNvbXB1dGVkKCgpID0+IG5ldyBQaXhlbGF0aW9uRWZmZWN0KHRoaXMuZ3JhbnVsYXJpdHkoKSkpO1xufVxuIl19
@@ -0,0 +1,43 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
2
+ import { NgtArgs, extend } from 'angular-three';
3
+ import { mergeInputs } from 'ngxtension/inject-inputs';
4
+ import { BlendFunction, ScanlineEffect } from 'postprocessing';
5
+ import { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective, provideDefaultEffectOptions } from '../effect';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../effect";
8
+ extend({ ScanlineEffect });
9
+ const defaultOptions = {
10
+ density: 1.25,
11
+ };
12
+ export class NgtpScanline {
13
+ constructor() {
14
+ this.effect = inject(NgtpEffect, { host: true });
15
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtpScanline, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtpScanline, isStandalone: true, selector: "ngtp-scanline", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.OVERLAY })], hostDirectives: [{ directive: i1.NgtpEffect, inputs: ["blendFunction", "blendFunction", "opacity", "opacity", "effectRef", "effectRef"] }], ngImport: i0, template: `
19
+ <ngt-scanline-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
20
+ <ngtp-effect-blend-mode />
21
+ <ng-content />
22
+ </ngt-scanline-effect>
23
+ `, 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 }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtpScanline, decorators: [{
26
+ type: Component,
27
+ args: [{
28
+ selector: 'ngtp-scanline',
29
+ template: `
30
+ <ngt-scanline-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
31
+ <ngtp-effect-blend-mode />
32
+ <ng-content />
33
+ </ngt-scanline-effect>
34
+ `,
35
+ standalone: true,
36
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
37
+ changeDetection: ChangeDetectionStrategy.OnPush,
38
+ imports: [NgtArgs, NgtpEffectBlendMode],
39
+ hostDirectives: [NgtpEffectHostDirective],
40
+ providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.OVERLAY })],
41
+ }]
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbmxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9zY2FubGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRWxILE1BQU0sQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7QUFJM0IsTUFBTSxjQUFjLEdBQWlEO0lBQ3BFLE9BQU8sRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQWlCRixNQUFNLE9BQU8sWUFBWTtJQWZ6QjtRQWdCQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLFlBQU8sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDNUU7OEdBSFksWUFBWTtrR0FBWixZQUFZLHNNQUZiLENBQUMsMkJBQTJCLENBQUMsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsc0tBWHhFOzs7OztFQUtULDREQUlTLE9BQU8sZ0ZBQUUsbUJBQW1COzsyRkFJMUIsWUFBWTtrQkFmeEIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFOzs7OztFQUtUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQztvQkFDdkMsY0FBYyxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2lCQUNsRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGV4dGVuZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQmxlbmRGdW5jdGlvbiwgU2NhbmxpbmVFZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBOZ3RwRWZmZWN0LCBOZ3RwRWZmZWN0QmxlbmRNb2RlLCBOZ3RwRWZmZWN0SG9zdERpcmVjdGl2ZSwgcHJvdmlkZURlZmF1bHRFZmZlY3RPcHRpb25zIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgU2NhbmxpbmVFZmZlY3QgfSk7XG5cbmV4cG9ydCB0eXBlIFNjYW5saW5lRWZmZWN0T3B0aW9ucyA9IFBhcnRpYWw8Tm9uTnVsbGFibGU8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBTY2FubGluZUVmZmVjdD5bMF0+PjtcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE9taXQ8U2NhbmxpbmVFZmZlY3RPcHRpb25zLCAnYmxlbmRGdW5jdGlvbic+ID0ge1xuXHRkZW5zaXR5OiAxLjI1LFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1zY2FubGluZScsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1zY2FubGluZS1lZmZlY3QgKmFyZ3M9XCJbb3B0aW9ucygpXVwiIFtjYW1lcmFdPVwiZWZmZWN0LmNhbWVyYSgpXCIgW3JlZl09XCJlZmZlY3QuZWZmZWN0UmVmKClcIiBuZ3RDb21wb3VuZD5cblx0XHRcdDxuZ3RwLWVmZmVjdC1ibGVuZC1tb2RlIC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXNjYW5saW5lLWVmZmVjdD5cblx0YCxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5ndHBFZmZlY3RCbGVuZE1vZGVdLFxuXHRob3N0RGlyZWN0aXZlczogW05ndHBFZmZlY3RIb3N0RGlyZWN0aXZlXSxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZURlZmF1bHRFZmZlY3RPcHRpb25zKHsgYmxlbmRGdW5jdGlvbjogQmxlbmRGdW5jdGlvbi5PVkVSTEFZIH0pXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cFNjYW5saW5lIHtcblx0ZWZmZWN0ID0gaW5qZWN0KE5ndHBFZmZlY3QsIHsgaG9zdDogdHJ1ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xufVxuIl19
@@ -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 { SepiaEffect } from 'postprocessing';
4
+ import { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../effect";
7
+ extend({ SepiaEffect });
8
+ export class NgtpSepia {
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.3", ngImport: i0, type: NgtpSepia, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtpSepia, isStandalone: true, selector: "ngtp-sepia", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtpEffect, inputs: ["blendFunction", "blendFunction", "opacity", "opacity", "effectRef", "effectRef"] }], ngImport: i0, template: `
15
+ <ngt-sepia-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
16
+ <ngtp-effect-blend-mode />
17
+ <ng-content />
18
+ </ngt-sepia-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.3", ngImport: i0, type: NgtpSepia, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'ngtp-sepia',
25
+ template: `
26
+ <ngt-sepia-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
27
+ <ngtp-effect-blend-mode />
28
+ <ng-content />
29
+ </ngt-sepia-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VwaWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Bvc3Rwcm9jZXNzaW5nL3NyYy9saWIvZWZmZWN0cy9zZXBpYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUVyRixNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBa0J4QixNQUFNLE9BQU8sU0FBUztJQWR0QjtRQWVDLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUErQyxDQUFDLENBQUM7S0FDakU7OEdBSFksU0FBUztrR0FBVCxTQUFTLDRWQVpYOzs7OztFQUtULDREQUlTLE9BQU8sZ0ZBQUUsbUJBQW1COzsyRkFHMUIsU0FBUztrQkFkckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFOzs7OztFQUtUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQztvQkFDdkMsY0FBYyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBTZXBpYUVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIE5ndHBFZmZlY3RCbGVuZE1vZGUsIE5ndHBFZmZlY3RIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgU2VwaWFFZmZlY3QgfSk7XG5cbmV4cG9ydCB0eXBlIFNlcGlhRWZmZWN0T3B0aW9ucyA9IFBhcnRpYWw8Tm9uTnVsbGFibGU8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBTZXBpYUVmZmVjdD5bMF0+PjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1zZXBpYScsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1zZXBpYS1lZmZlY3QgKmFyZ3M9XCJbb3B0aW9ucygpXVwiIFtjYW1lcmFdPVwiZWZmZWN0LmNhbWVyYSgpXCIgW3JlZl09XCJlZmZlY3QuZWZmZWN0UmVmKClcIiBuZ3RDb21wb3VuZD5cblx0XHRcdDxuZ3RwLWVmZmVjdC1ibGVuZC1tb2RlIC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXNlcGlhLWVmZmVjdD5cblx0YCxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5ndHBFZmZlY3RCbGVuZE1vZGVdLFxuXHRob3N0RGlyZWN0aXZlczogW05ndHBFZmZlY3RIb3N0RGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cFNlcGlhIHtcblx0ZWZmZWN0ID0gaW5qZWN0KE5ndHBFZmZlY3QsIHsgaG9zdDogdHJ1ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIE9taXQ8U2VwaWFFZmZlY3RPcHRpb25zLCAnYmxlbmRGdW5jdGlvbic+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 { ShockWaveEffect } from 'postprocessing';
4
+ import { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../effect";
7
+ extend({ ShockWaveEffect });
8
+ export class NgtpShockWave {
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.3", ngImport: i0, type: NgtpShockWave, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtpShockWave, isStandalone: true, selector: "ngtp-shock-wave", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtpEffect, inputs: ["blendFunction", "blendFunction", "opacity", "opacity", "effectRef", "effectRef"] }], ngImport: i0, template: `
15
+ <ngt-shock-wave-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
16
+ <ngtp-effect-blend-mode />
17
+ <ng-content />
18
+ </ngt-shock-wave-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.3", ngImport: i0, type: NgtpShockWave, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'ngtp-shock-wave',
25
+ template: `
26
+ <ngt-shock-wave-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
27
+ <ngtp-effect-blend-mode />
28
+ <ng-content />
29
+ </ngt-shock-wave-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvY2std2F2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL3Nob2NrLXdhdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFckYsTUFBTSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztBQWtCNUIsTUFBTSxPQUFPLGFBQWE7SUFkMUI7UUFlQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBbUQsQ0FBQyxDQUFDO0tBQ3JFOzhHQUhZLGFBQWE7a0dBQWIsYUFBYSxpV0FaZjs7Ozs7RUFLVCw0REFJUyxPQUFPLGdGQUFFLG1CQUFtQjs7MkZBRzFCLGFBQWE7a0JBZHpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7OztFQUtUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQztvQkFDdkMsY0FBYyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBTaG9ja1dhdmVFZmZlY3QgfSBmcm9tICdwb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBOZ3RwRWZmZWN0LCBOZ3RwRWZmZWN0QmxlbmRNb2RlLCBOZ3RwRWZmZWN0SG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uL2VmZmVjdCc7XG5cbmV4dGVuZCh7IFNob2NrV2F2ZUVmZmVjdCB9KTtcblxuZXhwb3J0IHR5cGUgU2hvY2tXYXZlRWZmZWN0T3B0aW9ucyA9IFBhcnRpYWw8Tm9uTnVsbGFibGU8Q29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBTaG9ja1dhdmVFZmZlY3Q+WzBdPj47XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtc2hvY2std2F2ZScsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1zaG9jay13YXZlLWVmZmVjdCAqYXJncz1cIltvcHRpb25zKCldXCIgW2NhbWVyYV09XCJlZmZlY3QuY2FtZXJhKClcIiBbcmVmXT1cImVmZmVjdC5lZmZlY3RSZWYoKVwiIG5ndENvbXBvdW5kPlxuXHRcdFx0PG5ndHAtZWZmZWN0LWJsZW5kLW1vZGUgLz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3Qtc2hvY2std2F2ZS1lZmZlY3Q+XG5cdGAsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RwRWZmZWN0QmxlbmRNb2RlXSxcblx0aG9zdERpcmVjdGl2ZXM6IFtOZ3RwRWZmZWN0SG9zdERpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHBTaG9ja1dhdmUge1xuXHRlZmZlY3QgPSBpbmplY3QoTmd0cEVmZmVjdCwgeyBob3N0OiB0cnVlIH0pO1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgT21pdDxTaG9ja1dhdmVFZmZlY3RPcHRpb25zLCAnYmxlbmRGdW5jdGlvbic+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 { SMAAEffect } from 'postprocessing';
4
+ import { NgtpEffect, NgtpEffectBlendMode, NgtpEffectHostDirective } from '../effect';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../effect";
7
+ extend({ SMAAEffect });
8
+ export class NgtpSMAA {
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.3", ngImport: i0, type: NgtpSMAA, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtpSMAA, isStandalone: true, selector: "ngtp-smaa", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtpEffect, inputs: ["blendFunction", "blendFunction", "opacity", "opacity", "effectRef", "effectRef"] }], ngImport: i0, template: `
15
+ <ngt-sMAA-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
16
+ <ngtp-effect-blend-mode />
17
+ <ng-content />
18
+ </ngt-sMAA-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.3", ngImport: i0, type: NgtpSMAA, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'ngtp-smaa',
25
+ template: `
26
+ <ngt-sMAA-effect *args="[options()]" [camera]="effect.camera()" [ref]="effect.effectRef()" ngtCompound>
27
+ <ngtp-effect-blend-mode />
28
+ <ng-content />
29
+ </ngt-sMAA-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvc3JjL2xpYi9lZmZlY3RzL3NtYWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFckYsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQWtCdkIsTUFBTSxPQUFPLFFBQVE7SUFkckI7UUFlQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBOEMsQ0FBQyxDQUFDO0tBQ2hFOzhHQUhZLFFBQVE7a0dBQVIsUUFBUSwyVkFaVjs7Ozs7RUFLVCw0REFJUyxPQUFPLGdGQUFFLG1CQUFtQjs7MkZBRzFCLFFBQVE7a0JBZHBCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRTs7Ozs7RUFLVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3ZDLGNBQWMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEFyZ3MsIGV4dGVuZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgU01BQUVmZmVjdCB9IGZyb20gJ3Bvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IE5ndHBFZmZlY3QsIE5ndHBFZmZlY3RCbGVuZE1vZGUsIE5ndHBFZmZlY3RIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZWZmZWN0JztcblxuZXh0ZW5kKHsgU01BQUVmZmVjdCB9KTtcblxuZXhwb3J0IHR5cGUgU01BQUVmZmVjdE9wdGlvbnMgPSBQYXJ0aWFsPE5vbk51bGxhYmxlPENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgU01BQUVmZmVjdD5bMF0+PjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cC1zbWFhJyxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXNNQUEtZWZmZWN0ICphcmdzPVwiW29wdGlvbnMoKV1cIiBbY2FtZXJhXT1cImVmZmVjdC5jYW1lcmEoKVwiIFtyZWZdPVwiZWZmZWN0LmVmZmVjdFJlZigpXCIgbmd0Q29tcG91bmQ+XG5cdFx0XHQ8bmd0cC1lZmZlY3QtYmxlbmQtbW9kZSAvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1zTUFBLWVmZmVjdD5cblx0YCxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5ndHBFZmZlY3RCbGVuZE1vZGVdLFxuXHRob3N0RGlyZWN0aXZlczogW05ndHBFZmZlY3RIb3N0RGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cFNNQUEge1xuXHRlZmZlY3QgPSBpbmplY3QoTmd0cEVmZmVjdCwgeyBob3N0OiB0cnVlIH0pO1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgT21pdDxTTUFBRWZmZWN0T3B0aW9ucywgJ2JsZW5kRnVuY3Rpb24nPik7XG59XG4iXX0=