1import{r as p,j as e}from"./react-core-CtJOhYur.js";import{X as b,E as J,aW as Q,b2 as $,al as ee,am as te,an as se,ao as ie,ap as K,B as _,o as re}from"./index-CPcMczU2.js";import{S as N}from"./slider-YBjAyq3M.js";import{S as ae}from"./switch-Dz55Bdob.js";import{S as ne}from"./scroll-area-CHi7HEdr.js";import{bi as oe}from"./useEditorTools-6N-Ghc-D.js";import{R as me}from"./rotate-ccw-BU32FtYl.js";import"./image-tools-bOCyGMXp.js";import"./radix-Dp6HzbEj.js";import"./supabase-D-PrslnG.js";import"./framer-motion-CdTbmNa9.js";import"./bug-CxwXlxoO.js";import"./resizable-DRqeYf5R.js";import"./grip-vertical-CjFvuaTy.js";import"./chevron-left-Cs2lVnQV.js";import"./useStorageQuota-T7QPe0rt.js";import"./separator-BCX3kEXB.js";import"./toggle-group-CFrearsI.js";import"./zoom-out-Cmk4HqP9.js";import"./useGoogleFonts-CdA5FTav.js";import"./eraser-IigmC3Cv.js";import"./paintbrush-Dl0kVAvY.js";import"./waves-xpdLck-a.js";import"./move-tmQDBeRt.js";import"./crop-x7Cl4cWe.js";import"./maximize-2-C7gb0q0s.js";import"./square-Q28HMzxv.js";import"./stamp-BLf7Vlng.js";import"./wind-DTFFrjyx.js";import"./folder-open-C-q0uS-s.js";import"./save-DfgnYQjm.js";import"./rotate-cw-BywV7YDY.js";import"./ruler-BxS2d1n5.js";import"./file-image-EmjwF9sb.js";import"./command-Da-j3y0I.js";import"./keyboard-Cv_stmwj.js";import"./circle-help-Cs_5BL-a.js";import"./pencil-Bv974PHA.js";import"./undo-2-Bj5gTKhz.js";import"./redo-2-B_-iAsHg.js";import"./history-DJk5GOXJ.js";import"./share-2--aJ5C_Em.js";import"./credit-card-CA6dTCQU.js";import"./chart-column-CQb-MzYh.js";import"./settings-lHq-_unV.js";import"./log-out-DBqu8iiT.js";import"./collapsible-C9xK1krL.js";import"./lightbulb-BXslmiga.js";import"./search-B9mm3iZQ.js";import"./info-BSfkbh6A.js";import"./image-plus-Btd32SRv.js";import"./rocket-DGO5g0il.js";import"./paint-bucket-CkoUutbE.js";import"./message-square-C0Zxq7wE.js";import"./sliders-vertical-C1GWkn9V.js";import"./copy-DOf3UI5S.js";import"./smartphone-ClFgUoli.js";import"./hand-CssNTVdB.js";import"./book-open-CKEkdRq8.js";import"./external-link-3dIY_KIS.js";import"./crosshair-CD4QGyML.js";import"./mountain-CVJ8TS3J.js";import"./focus-D02Cgytx.js";import"./droplets-CVzvPTHv.js";import"./circle-dot-BY8GRBnr.js";import"./volume-x-2Sr41ipk.js";import"./shapes-DpEuQRd_.js";import"./play-DlprT_AM.js";import"./upload-CidU6WLz.js";import"./layout-grid-BvAGEkDP.js";import"./maximize-DRjlYaNj.js";import"./heart-CzTVRqFN.js";import"./skeleton-B-URCQYA.js";import"./camera-BQywMLL2.js";import"./popover-BHt4iV7p.js";import"./checkbox-BW7Z1Iis.js";import"./useBrandKit-DhwFm5Lr.js";import"./plus-B0DfO5Lc.js";import"./trash-2-CCy9xV6P.js";import"./star-CIZThn2o.js";import"./quote-l7xqv7Dh.js";import"./wine-BeutBYR4.js";import"./minus-E4h8FpNp.js";import"./activity-D-7KAr0y.js";import"./terminal-CTLxANBX.js";import"./archive-D5yCIw_M.js";import"./folder-plus-BCp6KF9P.js";import"./arrow-down-BWo1ljli.js";import"./arrow-left-right-C1J-yvhb.js";import"./arrow-left-tDZsTtOT.js";import"./BeforeAfterSlider-Bjr2oTGW.js";import"./useBillingProfile-Dgpfpghx.js";import"./circle-alert-RwkD1Bxb.js";import"./usePromoCodes-DUXvDMFz.js";import"./percent-CHL4T1z6.js";import"./layout-dashboard-CtUUN890.js";import"./format-Bh_JTbK5.js";import"./de-C2C2CbzV.js";import"./languages-CUVQngh4.js";import"./arrow-up-down-DLtGTYaG.js";import"./arrow-up-right-CVd-JhuG.js";import"./award-BXvYsazl.js";import"./square-check-big-BYNhGocC.js";import"./ban-DLUlccdO.js";import"./bell-BqjCzTbY.js";import"./bot-CweD6kys.js";import"./building-2-BfIcDPn1.js";import"./building-CFx8GkWB.js";import"./calculator-vXkQCWQ2.js";import"./calendar-BNQgz8gy.js";import"./message-circle-D_TXZXiK.js";import"./paperclip-DSU6QV9y.js";import"./circle-check-big-B_1dOycO.js";import"./circle-check-6491ODbs.js";import"./circle-play-B1UTDVB_.js";import"./user-check-De9h9_bR.js";import"./circle-x-C2TTRMnZ.js";import"./clapperboard-KbYlWOUR.js";import"./code-xml-B0tdg7d3.js";import"./code-JgSNYIvI.js";import"./panel-left-DGODjCsM.js";import"./construction-CRGTCWJH.js";import"./database-pMQKJL9x.js";import"./minimize-2-C1HqT1Su.js";import"./dice-5-DpEcKED3.js";import"./disc-3-gEAdxaAQ.js";import"./ellipsis-vertical-DdtnHB0V.js";import"./ellipsis-Dn4VLwNd.js";import"./euro-DftOGvoH.js";import"./expand-C6PEz-Vp.js";import"./linkedin-DG4cnKuf.js";import"./fast-forward-CCp8P9ym.js";import"./ExportPresets-CS9cRDUj.js";import"./file-pen-BPWfrTS_.js";import"./file-plus-2-aMj99Qp6.js";import"./file-up-B0y9yGzf.js";import"./file-spreadsheet-CeX0Jlnd.js";import"./file-vExbHZsV.js";import"./filter-CQYgpiHg.js";import"./folder-kanban-Bdj3jIvi.js";import"./folder-yLpFtbBv.js";import"./hash-7uFOs5PK.js";import"./git-compare-CpPlSgaL.js";import"./graduation-cap-B56bBvJu.js";import"./hard-drive-DfiDSQU4.js";import"./headphones-DwncyM_l.js";import"./image-off-Cqxa0X3A.js";
1import"./image-up-GfRElnHO.js";import"./key-round-C_q0xg_r.js";import"./webhook-CuPFUPGd.js";import"./layout-template-BCvVjCeG.js";import"./library-qTgL9TDL.js";import"./life-buoy-Bkw2cPe3.js";import"./link-2-Bt1AQ_li.js";import"./list-checks-BiU_2QA4.js";import"./package-plus-aeBcTzpi.js";import"./list-sWqJ74hh.js";import"./lock-open-CU6xe46i.js";import"./mail-x-DU3Zi0Bp.js";import"./map-pin-GVz_3Yxk.js";import"./map-5CNc60A8.js";import"./megaphone-CuXjqGUh.js";import"./mic-vocal-B1_rUhfb.js";import"./monitor-smartphone-BBwugNsl.js";import"./package-DXfjr6MR.js";import"./pause-DT3ZKp9i.js";import"./pen-line-8uHNvFzA.js";import"./pencil-ruler-CA1RvMU0.js";import"./scissors-line-dashed-WQSRv_p6.js";import"./plug-DnHLzaBy.js";import"./printer-B_gaDc93.js";import"./qr-code-OUWXrEpD.js";import"./receipt-Bu2GE3u9.js";import"./replace-Cn8vFKAC.js";import"./scale-efqdpRWC.js";import"./send-BeKKnH-E.js";import"./shield-off-DNGtFkBf.js";import"./trending-down-C9pJhLzY.js";import"./sliders-horizontal-iQXKR6y-.js";import"./snowflake-Dh7mCL_L.js";import"./sparkle-C3qVnfuw.js";import"./square-user-round-CPkSeFqB.js";import"./sticker-Bw-NZBCc.js";import"./store-C0ONrJ5X.js";import"./sunset-BxP8qT71.js";import"./user-round-D8A8fyAM.js";import"./thumbs-down-G9xvxtXc.js";import"./thumbs-up-BsAu2rXG.js";import"./tree-pine-B0tBUmC2.js";import"./trophy-DP5pF-bo.js";import"./truck-CxfHrEQ1.js";import"./users-DZ86FORq.js";import"./wifi-off-CxZwXfIp.js";import"./wifi-wG0rmeNf.js";import"./workflow-Byyk4kY2.js";import"./wrench-ouSRUnLh.js";import"./fontawesome-Bjro87BM.js";import"./textarea-D1zJFNqL.js";import"./addDays-C_c2HQ4y.js";import"./progress-BwwlOaTG.js";import"./hasEnoughCredits-Cx-8hiQ3.js";import"./imageUtils-CLuuA6p_.js";import"./radio-group-DaIhg5XF.js";import"./accordion-SDs-ijf5.js";import"./formatDistanceToNow-BEYZE7_f.js";import"./command-ByKHAdR3.js";import"./useProjectShare-Bgsgs5MV.js";import"./clipboard-UQ9HlVBY.js";const q=[{id:"subtle",name:"Subtil",nameEn:"Subtle",settings:{redOffsetX:2,redOffsetY:0,blueOffsetX:-2,blueOffsetY:0,intensity:50,type:"radial",edgeIntensity:60}},{id:"vhs",name:"VHS Tape",nameEn:"VHS Tape",settings:{redOffsetX:4,redOffsetY:1,blueOffsetX:-3,blueOffsetY:-1,intensity:70,type:"linear",edgeIntensity:30}},{id:"lomo",name:"Lomographie",nameEn:"Lomography",settings:{redOffsetX:3,redOffsetY:0,blueOffsetX:-3,blueOffsetY:0,intensity:60,type:"radial",edgeIntensity:80}}
1,{id:"broken-lens",name:"Kaputte Linse",nameEn:"Broken Lens",settings:{redOffsetX:8,redOffsetY:2,blueOffsetX:-6,blueOffsetY:-3,intensity:85,type:"barrel",edgeIntensity:90}},{id:"cinematic",name:"Kinematisch",nameEn:"Cinematic Edge",settings:{redOffsetX:2,redOffsetY:0,blueOffsetX:-2,blueOffsetY:0,intensity:40,type:"radial",edgeIntensity:100}},{id:"glitch",name:"Glitch",nameEn:"Glitch",settings:{redOffsetX:6,redOffsetY:0,blueOffsetX:-6,blueOffsetY:0,intensity:100,type:"linear",edgeIntensity:0}},{id:"prism",name:"Prisma",nameEn:"Prism",settings:{redOffsetX:5,redOffsetY:2,blueOffsetX:-4,blueOffsetY:-2,intensity:75,type:"radial",edgeIntensity:50}},{id:"analog",name:"Analog",nameEn:"Analog",settings:{redOffsetX:1,redOffsetY:0,blueOffsetX:-1,blueOffsetY:0,intensity:35,type:"barrel",edgeIntensity:70,blurAmount:1}}],U={redOffsetX:3,redOffsetY:0,blueOffsetX:-3,blueOffsetY:0,intensity:50,type:"radial",edgeIntensity:50,blurAmount:0};function le(){const[s,f]=p.useState(U),[n,m]=p.useState(!1),[I,P]=p.useState(!0),T=p.useCallback(i=>{f(d=>({...d,...i}))},[]),X=p.useCallback(i=>{const d=q.find(o=>o.id===i);d&&f({...U,...d.settings})},[]),k=p.useCallback(()=>{f(U)},[]),u=p.useCallback(async i=>(m(!0),new Promise((d,o)=>{try{const c=document.createElement("canvas"),g=c.getContext("2d");if(!g)return m(!1),o(new Error("Canvas context unavailable"));const r=i instanceof HTMLCanvasElement?i.width:i.naturalWidth,l=i instanceof HTMLCanvasElement?i.height:i.naturalHeight;c.width=r,c.height=l;const x=document.createElement("canvas");x.width=r,x.height=l;const t=x.getContext("2d");t.drawImage(i,0,0);const y=t.getImageData(0,0,r,l).data;x.width=0,x.height=0,x.width=0,x.height=0;const W=g.createImageData(r,l),j=W.data,R=r/2,L=l/2,Z=Math.sqrt(R*R+L*L),Y=s.intensity/100;for(let v=0;v<l;v++)for(let O=0;O<r;O++){const h=(v*r+O)*4,V=O-R,D=v-L,H=Math.sqrt(V*V+D*D)/Z;let w=1;(s.type==="radial"||s.type==="barrel")&&(w=H*(s.edgeIntensity/100)+(1-s.edgeIntensity/100));let E=s.redOffsetX,S=s.redOffsetY,C=s.blueOffsetX,M=s.blueOffsetY;if(s.type==="radial"){const a=Math.atan2(D,V);E=Math.cos(a)*s.redOffsetX-Math.sin(a)*s.redOffsetY,S=Math.sin(a)*s.redOffsetX+Math.cos(a)*s.redOffsetY,C=Math.cos(a)*s.blueOffsetX-Math.sin(a)*s.blueOffsetY,M=Math.sin(a)*s.blueOffsetX+Math.cos(a)*s.blueOffsetY}else if(s.type==="barrel"){const a=H*H;E=s.redOffsetX*a,S=s.redOffsetY*a,C=s.blueOffsetX*a,M=s.blueOffsetY*a}E*=Y*w,S*=Y*w,C*=Y*w,M*=Y*w;const B=Math.round(O+E),z=Math.round(v+S);if(B>=0&&B<r&&z>=0&&z<l){const a=(z*r+B)*4;j[h]=y[a]}else j[h]=y[h];j[h+1]=y[h+1];const F=Math.round(O+C),G=Math.round(v+M);if(F>=0&&F<r&&G>=0&&G<l){const a=(G*r+F)*4;j[h+2]=y[a+2]}else j[h+2]=y[h+2];j[h+3]=y[h+3]}g.putImageData(W,0,0),m(!1),d(c)}catch(c){m(!1),o(c)}})),[s]),A=p.useCallback(async(i,d=.5)=>{const o=document.createElement("canvas"),c=o.getContext("2d"),g=i instanceof HTMLCanvasElement?i.width:i.naturalWidth,r=i instanceof HTMLCanvasElement?i.height:i.naturalHeight;o.width=Math.floor(g*d),o.height=Math.floor(r*d),c.drawImage(i,0,0,o.width,o.height);const l=await u(o);return o.width=0,o.height=0,l},[u]);return{settings:s,updateSettings:T,applyPreset:X,resetSettings:k,applyEffect:u,generatePreview:A,isProcessing:n,previewEnabled:I,setPreviewEnabled:P,presets:q}}function ir({onApply:s,sourceImage:f}){const{settings:n,updateSettings:m,applyPreset:I,resetSettings:P,applyEffect:T,generatePreview:X,isProcessing:k,previewEnabled:u,setPreviewEnabled:A,presets:i}=le(),[d,o]=p.useState(null),[c,g]=p.useState(null),r=p.useRef();p.useEffect(()=>{if(!f||!u){g(null);return}return r.current&&clearTimeout(r.current),r.current=setTimeout(async()=>{try{const t=await X(f,.3);g(t.toDataURL())}catch(t){console.error("Preview generation failed:",t)}},150),()=>{r.current&&clearTimeout(r.current)}},[f,n,u,X]);const l=t=>{o(t),I(t)},x=async()=>{if(!f||!s)return;const t=await T(f);s(t)};return e.jsx(ne,{className:"h-full",children:e.jsxs("div",{className:"p-4 space-y-6",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-[hsl(var(--editor-surface))] flex items-center justify-center",children:e.jsx(oe,{className:"w-5 h-5 text-white"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-[hsl(var(--editor-text))]",children:"Chromatische Aberration"}),e.jsx("p",{className:"text-xs text-[hsl(var(--editor-text-muted))]",children:"RGB-Farbsaum"})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm",children:"Live-Vorschau"}),e.jsxs("div",{className:"flex items-center gap-2",children:[u?e.jsx(J,{className:"w-4 h-4"}):e.jsx(Q,{className:"w-4 h-4"}),e.jsx(ae,{checked:u,onCheckedChange:A})]})]}),c&&e.jsx("div",{className:"aspect-video rounded-lg overflow-hidden bg-[hsl(var(--editor-surface))]",children:e.jsx("img",{src:c,alt:"Preview",className:"w-full h-full object-contain"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Presets"}),e.jsx("div",{className:"grid grid-cols-2 gap-2",children:i.map(t=>e.jsx("button",{onClick:()=>l(t.id),className:$("px-3 py-2 text-xs rounded-lg border transition-all text-left",d===t.id?"border-primary bg-primary/10 text-primary":"border-border hover:border-primary/50 hover:bg-[hsl(var(--editor-surface))]"),children:t.name},t.id))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm",children:"Aberrations-Typ"}),e.jsxs(ee,{value:n.type,onValueChange:t=>m({type:t}),children:[e.jsx(te,{children:e.jsx(se,{})}),e.jsxs(ie,{children:[e.jsx(K,{value:"radial",children:"Radial"}),e.jsx(K,{value:"linear",children:"Linear"}),e.jsx(K,{value:"barrel",children:"Barrel/Tonnenförmig"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx(b,{className:"text-sm",children:"Intensität"}),e.jsxs("span",{className:"text-xs text-[hsl(var(--editor-text-muted))]",children:[n.intensity,"%"]})]}),e.jsx(N,{value:[n.intensity],onValueChange:([t])=>m({intensity:t}),min:0,max:100,step:5})]}),e.jsxs("div",{className:"space-y-2 p-3 rounded-lg bg-red-500/10 border border-red-500/20",children:[e.jsx(b,{className:"text-sm text-[hsl(var(--editor-foreground)/0.5)]",children:"Rot-Kanal"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-xs text-[hsl(var(--editor-text-muted))]",children:"X-Offset"}),e.jsx("span",{className:"text-xs",children:n.redOffsetX})]}),e.jsx(N,{value:[n.redOffsetX],onValueChange:([t])=>m({redOffsetX:t}),min:-20,max:20,step:1})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-xs text-[hsl(var(--editor-text-muted))]",children:"Y-Offset"}),e.jsx("span",{className:"text-xs",children:n.redOffsetY})]}),e.jsx(N,{value:[n.redOffsetY],onValueChange:([t])=>m({redOffsetY:t}),min:-20,max:20,step:1})]})]})]}),e.jsxs("div",{className:"space-y-2 p-3 rounded-lg bg-blue-500/10 border border-blue-500/20",children:[e.jsx(b,{className:"text-sm text-[hsl(var(--editor-foreground)/0.5)]",children:"Blau-Kanal"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-xs text-[hsl(var(--editor-text-muted))]",children:"X-Offset"}),e.jsx("span",{className:"text-xs",children:n.blueOffsetX})]}),e.jsx(N,{value:[n.blueOffsetX],onValueChange:([t])=>m({blueOffsetX:t}),min:-20,max:20,step:1})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-xs text-[hsl(var(--editor-text-muted))]",children:"Y-Offset"}),e.jsx("span",{className:"text-xs",children:n.blueOffsetY})]}),e.jsx(N,{value:[n.blueOffsetY],onValueChange:([t])=>m({blueOffsetY:t}),min:-20,max:20,step:1})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx(b,{className:"text-sm",children:"Rand-Verstärkung"}),e.jsxs("span",{className:"text-xs text-[hsl(var(--editor-text-muted))]",children:[n.edgeIntensity,"%"]})]}),e.jsx(N,{value:[n.edgeIntensity],onValueChange:([t])=>m({edgeIntensity:t}),min:0,max:100,step:5})]}),e.jsxs("div",{className:"flex gap-2 pt-4",children:[e.jsxs(_,{variant:"outline",size:"sm",onClick:P,className:"flex-1",children:[e.jsx(me,{className:"w-4 h-4 mr-2"}),"Zurücksetzen"]}),e.jsxs(_,{size:"sm",onClick:x,disabled:k||!f,className:"flex-1",children:[e.jsx(re,{className:"w-4 h-4 mr-2"}),"Anwenden"]})]})]})})}export{ir as ChromaticAberrationEffectPanel,ir as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.