1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[100],{2487:(e,t,r)=>{r.d(t,{A:()=>a});let a=(0,r(29510).A)("CloudUpload",[["path",{d:"M12 13v8",key:"1l5pq0"}],["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"m8 17 4-4 4 4",key:"1quai1"}]])},20100:(e,t,r)=>{r.r(t),r.d(t,{EpubToPdfTool:()=>K});var a=r(58321),n=r(39349),i=r(46216),s=r.n(i),l=r(27195),o=r(50629),d=r(26123),c=r(84245),u=r(33811),p=r(23065),f=r(24073),h=r(85371),g=r(57390),m=r(26649);let x=[{label:"A4",value:"A4"},{label:"Letter",value:"Letter"}],b=[{label:"Helvetica",value:"Helvetica"},{label:"Times New Roman",value:"TimesRoman"},{label:"Courier",value:"Courier"}],v={},y={h1:1.6,h2:1.4,h3:1.25,h4:1.15,h5:1.1,h6:1.05,body:1,list:1,caption:.9},w={h1:.8,h2:.7,h3:.6,h4:.5,h5:.5,h6:.4,body:.6,list:.4,caption:.4},j=new Set(["script","style","noscript","svg","math","canvas","audio","video","source","iframe","nav","aside","footer","header"]),N=async e=>(v[e]||(v[e]=fetch(e).then(async e=>{if(!e.ok)throw Error("Unicode-Schrift konnte nicht geladen werden.");return new Uint8Array(await e.arrayBuffer())})),v[e]),k=e=>/[^\x00-\x7f]/.test(e),z=e=>/[\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff]/.test(e),E=e=>e.replace(/\r\n/g,"\n").replace(/\r/g,"\n").replace(/[ \t]+\n/g,"\n").replace(/\n{3,}/g,"\n\n").replace(/[ \t]{2,}/g," ").trim(),A=e=>{let t=parseInt(e.replace("#",""),16);return{r:(t>>16&255)/255,g:(t>>8&255)/255,b:(255&t)/255}},P=(e,t)=>{let r=new DOMParser().parseFromString(e,"application/xml");if(r.getElementsByTagName("parsererror").length>0)throw Error("".concat(t," konnte nicht gelesen werden."));return r},B=e=>{let t=e.split("/"),r=[];for(let e of t)if(e&&"."!==e){if(".."===e){r.pop();continue}r.push(e)}return r.join("/")},C=(e,t)=>{let r=t.split("#")[0].split("?")[0];return B(e?"".concat(e,"/").concat(r):r)},S=e=>{let t=P(e,"container.xml").getElementsByTagName("rootfile")[0],r=null==t?void 0:t.getAttribute("full-path");if(!r)throw Error("EPUB Struktur nicht erkannt (rootfile fehlt).");return r},D=(e,t)=>{let r=P(e,"OPF"),a=new Map;Array.from(r.getElementsByTagName("item")).forEach(e=>{let t=e.getAttribute("id"),r=e.getAttribute("href");t&&r&&a.set(t,{href:r,mediaType:e.getAttribute("media-type")})});let n=t.split("/").slice(0,-1).join("/");return Array.from(r.getElementsByTagName("itemref")).map(e=>e.getAttribute("idref")).filter(e=>!!e).map(e=>a.get(e)).filter(e=>!!e).filter(e=>!e.mediaType||e.mediaType.includes("html")||e.mediaType.includes("xhtml")).map(e=>C(n,e.href)).filter(e=>!e.startsWith("http"))},U={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6"},T=e=>j.has(e),F=(e,t,r)=>!e||e.startsWith("http")?null:e.startsWith("data:")?{type:"image",src:e,alt:r}:{type:"image",src:C(t,e),alt:r},M=function(e,t,r,a){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",i=[],s=n,l=()=>{let e=E(s);e&&i.push({type:"text",text:e,variant:r}),s=""};return e.childNodes.forEach(e=>{var r,n,o;if(e.nodeType===Node.TEXT_NODE){s+=null!==(r=e.textContent)&&void 0!==r?r:"";return}if(e.nodeType!==Node.ELEMENT_NODE)return;let d=e.tagName.toLowerCase();if(!T(d)){if("img"===d){l();let r=F(e.getAttribute("src"),t,null!==(n=e.getAttribute("alt"))&&void 0!==n?n:void 0);r&&i.push(r);return}if("br"===d){s+="\n";return}if("hr"===d){l(),i.push({type:"spacer",size:.6});return}if("li"===d){l();let r=" ".repeat(Math.max(a-1,0));i.push(...M(e,t,"list",a+1,"".concat(r,"- ")));return}if("ul"===d||"ol"===d){l(),e.childNodes.forEach(e=>{i.push(...L(e,t,a+1))});return}if(d in U){l(),i.push(...M(e,t,U[d],a));return}if("p"===d||"figure"===d||"figcaption"===d||"blockquote"===d){l(),i.push(...L(e,t,a));return}s+=null!==(o=e.textContent)&&void 0!==o?o:""}}),l(),i},L=function(e,t){var r,a;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(e.nodeType===Node.TEXT_NODE){let t=E(null!==(r=e.textContent)&&void 0!==r?r:"");return t?[{type:"text",text:t,variant:"body"}]:[]}if(e.nodeType!==Node.ELEMENT_NODE)return[];let i=e.tagName.toLowerCase();if(T(i))return[];if("img"===i){let r=F(e.getAttribute("src"),t,null!==(a=e.getAttribute("alt"))&&void 0!==a?a:void 0);return r?[r]:[]}if("br"===i)return[{type:"spacer",size:.6}];if("hr"===i)return[{type:"spacer",size:1}];if(i in U)return M(e,t,U[i],n);if("p"===i)return M(e,t,"body",n);if("figcaption"===i)return M(e,t,"caption",n);if("li"===i){let r=" ".repeat(Math.max(n-1,0));return M(e,t,"list",n,"".concat(r,"- "))}if("ul"===i||"ol"===i){let r=[];
1return e.childNodes.forEach(e=>{r.push(...L(e,t,n+1))}),r}if("table"===i)return M(e,t,"body",n);let s=[];return e.childNodes.forEach(e=>{s.push(...L(e,t,n))}),s},_=(e,t)=>{let r=new DOMParser().parseFromString(e,"text/html").body;if(!r)return[];let a=[];return r.childNodes.forEach(e=>{a.push(...L(e,t))}),a},R=e=>e.length<4?null:255===e[0]&&216===e[1]?"jpg":137===e[0]&&80===e[1]&&78===e[2]&&71===e[3]?"png":null,I=e=>{let t=e.match(/^data:(image\/[a-zA-Z0-9.+-]+);base64,(.+)$/);if(!t)return null;let r=t[1].toLowerCase(),a=atob(t[2]),n=new Uint8Array(a.length);for(let e=0;e<a.length;e+=1)n[e]=a.charCodeAt(e);return r.includes("png")?{bytes:n,type:"png"}:r.includes("jpeg")||r.includes("jpg")?{bytes:n,type:"jpg"}:null},O=async(e,t)=>{var r;if(t.startsWith("data:"))return I(t);let a=t.replace(/^\/+/,""),n=null!==(r=e.file(a))&&void 0!==r?r:e.file(t);if(!n)return null;let i=await n.async("uint8array"),s=R(i);if(s)return{bytes:i,type:s};let l=a.toLowerCase();return l.endsWith(".png")?{bytes:i,type:"png"}:l.endsWith(".jpg")||l.endsWith(".jpeg")?{bytes:i,type:"jpg"}:null};async function W(e){let t=await l.PDFDocument.create(),r=await t.embedFont(l.StandardFonts[e.font]),a=l.PageSizes[e.pageSize],n=A(e.color),i=null,s=null,d=async e=>{if(!k(e))return r;if(t.registerFontkit(o.A),z(e)){if(!s){let e=await N("/fonts/NotoSansCJKsc-Regular.otf");s=await t.embedFont(e,{subset:!0})}return s}if(!i){let e=await N("/fonts/LiberationSans-Regular.ttf");i=await t.embedFont(e,{subset:!0})}return i},c=t.addPage(a),u=c.getHeight()-72,p=c.getWidth()-144,f=0,h=e=>{u<72+e&&(u=(c=t.addPage(a)).getHeight()-72)};for(let r of e.blocks){if("spacer"===r.type){u-=e.fontSize*r.size;continue}if("text"===r.type){let t=E(r.text);if(!t)continue;let a=e.fontSize*y[r.variant],i=await d(t),s=1.35*a;for(let e of t.split("\n")){if(!e.length){u-=s;continue}let t=e.split(" "),r="";for(let e of t){let t=r.length>0?"".concat(r," ").concat(e):e;i.widthOfTextAtSize(t,a)<=p?r=t:(h(s),c.drawText(r,{x:72,y:u,font:i,size:a,color:(0,l.rgb)(n.r,n.g,n.b)}),u-=s,r=e)}r.length&&(h(s),c.drawText(r,{x:72,y:u,font:i,size:a,color:(0,l.rgb)(n.r,n.g,n.b)}),u-=s),u-=.25*s}u-=e.fontSize*w[r.variant];continue}if("image"===r.type){let n=await O(e.zip,r.src);if(!n){f+=1;continue}let i="png"===n.type?await t.embedPng(n.bytes):await t.embedJpg(n.bytes),s=c.getWidth()-144,l=c.getHeight()-144,o=Math.min(s/i.width,l/i.height,1),d=i.width*o,p=i.height*o;u-p<72&&(u=(c=t.addPage(a)).getHeight()-72,o=Math.min(s/i.width,l/i.height,1),d=i.width*o,p=i.height*o);let h=72+(s-d)/2,g=u-p;c.drawImage(i,{x:h,y:g,width:d,height:p}),u=g-.8*e.fontSize}}return{pdfBytes:await t.save(),skippedImages:f}}async function H(e){let t=await e.arrayBuffer(),r=await s().loadAsync(t);if(r.file("META-INF/encryption.xml"))throw Error("Dieses EPUB ist DRM-geschuetzt und kann nicht konvertiert werden.");let a=r.file("META-INF/container.xml");if(!a)throw Error("container.xml fehlt. EPUB konnte nicht gelesen werden.");let n=S(await a.async("text")),i=r.file(n);if(!i)throw Error("Inhaltsdatei (OPF) konnte nicht gefunden werden.");let l=D(await i.async("text"),n);if(!l.length)throw Error("Keine EPUB Kapitel gefunden.");let o=[];for(let e=0;e<l.length;e+=1){let t=l[e],a=r.file(t);if(!a)continue;let n=_(await a.async("text"),t.split("/").slice(0,-1).join("/"));n.length&&(o.push(...n),e<l.length-1&&o.push({type:"spacer",size:1.2}))}if(!o.length)throw Error("Keine lesbaren Inhalte im EPUB gefunden.");return{blocks:o,zip:r}}function K(){let{downloadBlob:e}=(0,g.m)(),[t,r]=(0,n.useState)(!1),[i,s]=(0,n.useState)("A4"),[l,o]=(0,n.useState)("Helvetica"),[v,y]=(0,n.useState)(12),{items:w,getRootProps:j,getInputProps:N,isDragActive:k,open:z,removeFile:E,clearFiles:A}=(0,m.i)({maxFiles:1,accept:{"application/epub+zip":[".epub"]},onFilesAdded:e=>{d.toast.success("".concat(e.length," EPUB-Datei geladen"))}}),P=(0,n.useCallback)(async()=>{if(!w.length){d.toast.error("Bitte zuerst eine EPUB-Datei auswaehlen");return}r(!0);try{let t=w[0],{blocks:r,zip:a}=await H(t.file),{pdfBytes:n,skippedImages:s}=await W({blocks:r,zip:a,font:l,fontSize:v,pageSize:i,color:"#111827"});e(new Blob([n.buffer],{type:"application/pdf"}),"".concat(t.file.name.replace(/\.[^/.]+$/,""),".pdf")),d.toast.success("EPUB erfolgreich in PDF konvert
1iert"),s>0&&d.toast.warning("".concat(s," Bilddatei(en) konnten nicht eingebettet werden")),A()}catch(e){console.error("EPUB conversion error:",e),d.toast.error(e instanceof Error?e.message:"EPUB zu PDF konvertieren fehlgeschlagen")}finally{r(!1)}},[w,l,v,i,e,A]);return(0,a.jsxs)(h.Cf,{title:"EPUB in PDF umwandeln",description:"Konvertieren Sie EPUB-Dateien lokal im Browser in PDF-Dokumente mit Text und Bildern. Layout und Kapitelreihenfolge werden bestmoeglich erhalten.",children:[(0,a.jsx)(h.u3,{getRootProps:j,getInputProps:N,isDragActive:k,open:z,title:"Ziehen Sie Ihre EPUB-Datei hierher",description:"Unterstuetzt EPUB-Dateien mit Text und Bildern. Layout wird bestmoeglich uebernommen. DRM-geschuetzte Dateien koennen nicht konvertiert werden.",disabled:t}),w.length>0&&(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)(h.$c,{items:w,onRemove:E,disabled:t}),(0,a.jsx)("div",{className:"rounded-2xl border border-border/70 bg-card/80 p-6",children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-lg font-semibold text-foreground",children:"Ausgabeoptionen"}),(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"EPUB wird in eine PDF mit Text und Bildern umgewandelt. Sie koennen das Seitenformat und die Schriftgroesse anpassen."})]}),(0,a.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(p.J,{htmlFor:"epub-page-size",className:"text-sm font-medium text-foreground",children:"Seitenformat"}),(0,a.jsxs)(f.l6,{value:i,onValueChange:e=>s(e),disabled:t,children:[(0,a.jsx)(f.bq,{id:"epub-page-size",className:"w-full",children:(0,a.jsx)(f.yv,{placeholder:"A4"})}),(0,a.jsx)(f.gC,{children:x.map(e=>(0,a.jsx)(f.eb,{value:e.value,children:e.label},e.value))})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(p.J,{htmlFor:"epub-font",className:"text-sm font-medium text-foreground",children:"Schriftart"}),(0,a.jsxs)(f.l6,{value:l,onValueChange:e=>o(e),disabled:t,children:[(0,a.jsx)(f.bq,{id:"epub-font",className:"w-full",children:(0,a.jsx)(f.yv,{placeholder:"Helvetica"})}),(0,a.jsx)(f.gC,{children:b.map(e=>(0,a.jsx)(f.eb,{value:e.value,children:e.label},e.value))})]})]}),(0,a.jsxs)("div",{className:"space-y-2 md:col-span-2",children:[(0,a.jsxs)(p.J,{htmlFor:"epub-font-size",className:"text-sm font-medium text-foreground",children:["Schriftgroesse: ",v," pt"]}),(0,a.jsx)(u.p,{id:"epub-font-size",type:"range",min:"10",max:"18",step:"1",value:v,onChange:e=>y(Number(e.target.value)),disabled:t,className:"w-full accent-primary"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Standard ist 12 pt fuer klare Lesbarkeit und Druck."})]})]}),(0,a.jsxs)("div",{className:"rounded-lg border border-amber-200 bg-amber-50 p-4 text-amber-900 dark:border-amber-800 dark:bg-amber-950/30 dark:text-amber-100",children:[(0,a.jsx)("h4",{className:"mb-2 text-sm font-medium",children:"Hinweis zu Layout & DRM"}),(0,a.jsx)("p",{className:"text-xs text-amber-800 dark:text-amber-200",children:"Das Tool uebernimmt Text und Bilder in EPUB-Reihenfolge. Komplexe Layouts, Spalten oder Spezialschriften koennen vereinfacht werden. DRM-geschuetzte EPUBs lassen sich nicht konvertieren. Nicht-ASCII Zeichen (z.B. Umlaute oder Anfuehrungszeichen) nutzen automatisch eine Unicode-Schrift."})]})]})}),(0,a.jsx)(c.$,{type:"button",onClick:P,disabled:t,className:"w-full",children:t?"Konvertiere EPUB...":"EPUB in PDF umwandeln"})]})]})}},23065:(e,t,r)=>{r.d(t,{J:()=>s});var a=r(58321);r(39349);var n=r(90559),i=r(50706);function s(e){let{className:t,...r}=e;return(0,a.jsx)(n.b,{"data-slot":"label",className:(0,i.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...r})}},24073:(e,t,r)=>{r.d(t,{bq:()=>u,eb:()=>f,gC:()=>p,l6:()=>d,yv:()=>c});var a=r(58321);r(39349);var n=r(90486),i=r(71316),s=r(85862),l=r(30773),o=r(50706);function d(e){let{...t}=e;return(0,a.jsx)(n.bL,{"data-slot":"select",...t})}function c(e){let{...t}=e;return(0,a.jsx)(n.WT,{"data-slot":"select-value",...t})}function u(e){let{className:t,size:r="default",children:s,...l}=e;return(0,a.jsxs)(n.l9,{"data-slot":"select-trigger","data-size":r,className:(0,o.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...l,children:[s,(0,a.jsx)(n.In,{asChild:!0,children:(0,a.jsx)(i.A,{className:"size-4 opacity-50"})})]})}function p(e){let{className:t,children:r,position:i="popper",...s}=e;return(0,a.jsx)(n.ZL,{children:(0,a.jsxs)(n.UC,{"data-slot":"select-content",className:(0,o.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:sli
1de-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===i&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:i,...s,children:[(0,a.jsx)(h,{}),(0,a.jsx)(n.LM,{className:(0,o.cn)("p-1","popper"===i&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:r}),(0,a.jsx)(g,{})]})})}function f(e){let{className:t,children:r,...i}=e;return(0,a.jsxs)(n.q7,{"data-slot":"select-item",className:(0,o.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...i,children:[(0,a.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,a.jsx)(n.VF,{children:(0,a.jsx)(s.A,{className:"size-4"})})}),(0,a.jsx)(n.p4,{children:r})]})}function h(e){let{className:t,...r}=e;return(0,a.jsx)(n.PP,{"data-slot":"select-scroll-up-button",className:(0,o.cn)("flex cursor-default items-center justify-center py-1",t),...r,children:(0,a.jsx)(l.A,{className:"size-4"})})}function g(e){let{className:t,...r}=e;return(0,a.jsx)(n.wn,{"data-slot":"select-scroll-down-button",className:(0,o.cn)("flex cursor-default items-center justify-center py-1",t),...r,children:(0,a.jsx)(i.A,{className:"size-4"})})}},26649:(e,t,r)=>{r.d(t,{i:()=>s});var a=r(39349),n=r(4910),i=r(26123);function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{maxFiles:t=0,accept:r={"application/pdf":[".pdf"]},maxSize:s=0x6400000,onFilesAdded:l,onFileProcessed:o,onError:d}=e,[c,u]=(0,a.useState)([]),[p,f]=(0,a.useState)(!1),h=(0,a.useCallback)(e=>{let r=e.map(e=>({id:crypto.randomUUID(),file:e,status:"pending"}));u(e=>{let a=[...e,...r];return t>0?a.slice(0,t):a}),null==l||l(e)},[t,l]),g=(0,a.useCallback)(e=>{u(t=>t.filter(t=>t.id!==e))},[]),m=(0,a.useCallback)(()=>{u([])},[]),x=(0,a.useCallback)((e,t,r,a)=>{u(n=>n.map(n=>n.id===e?{...n,status:t,message:r,resultSize:a}:n)),("done"===t||"error"===t)&&(null==o||o(e,"done"===t?{resultSize:a}:void 0))},[o]),b=(0,a.useCallback)(async e=>{if(!c.length){i.toast.error("Please add files to process first.");return}f(!0);try{await e(c)}catch(t){let e=t instanceof Error?t:Error("Processing failed");i.toast.error(e.message),null==d||d(e)}finally{f(!1)}},[c,d]),{getRootProps:v,getInputProps:y,isDragActive:w,open:j}=(0,n.VB)({accept:r,maxSize:s,multiple:1!==t,onDrop:(e,t)=>{if(t.length>0){let e=t.map(e=>e.errors.map(e=>e.message).join(", ")).join("; ");i.toast.error("Some files were rejected: ".concat(e))}e.length>0&&h(e)}});return{items:c,isProcessing:p,isDragActive:null!=w&&w,addFiles:h,removeFile:g,clearFiles:m,updateFileStatus:x,processFiles:b,getRootProps:null!=v?v:()=>({}),getInputProps:null!=y?y:()=>({}),open:null!=j?j:()=>{},totalSize:c.reduce((e,t)=>e+t.file.size,0),totalProcessedSize:c.reduce((e,t)=>e+("done"===t.status&&t.resultSize?t.resultSize:0),0),hasFiles:c.length>0,processedCount:c.filter(e=>"done"===e.status).length,errorCount:c.filter(e=>"error"===e.status).length}}},29574:(e,t,r)=>{r.d(t,{E:()=>o});var a=r(58321);r(39349);var n=r(61500),i=r(85820),s=r(50706);let l=(0,i.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function o(e){let{className:t,variant:r,asChild:i=!1,...o}=e,d=i?n.DX:"span";return(0,a.jsx)(d,{"data-slot":"badge",className:(0,s.cn)(l({variant:r}),t),...o})}},33811:(e,t,r)=>{r.d(t,{p:()=>i});var a=r(58321);r(39349);var n=r(50706);function i(e){let{className:t,type:r,...i}=e;return(0,a.jsx)("input",{type:r,"data-slot":"input",className:(0,n.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",t),...i})}},39808:(e,t,r)=>{r.d(t,{A:()=>a});let a=(0,r(29510).A)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]])},57390:(e,t,r)=>{r.d(t,{m:()=>s});var a=r(39349),n=r(46216),i=r.n(n);function s(){let e=(0,a.useCallback)((e,t)=>{let r=URL.createObjectURL(e),a=document.createElement("a");a.href=r,a.download=t,document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(r)},[]),t=(0,a.useCallback)(async(t,r)=>{if(1===t.length){let{data:r,filename:a}=t[0];e(r instanceof Blob?r:new Blob([r]),a);return}let a=new(i());
1t.forEach(e=>{let{data:t,filename:r}=e;a.file(r,t)}),e(await a.generateAsync({type:"blob"}),r||"files-".concat(new Date().toISOString().slice(0,10),".zip"))},[e]);return{downloadBlob:e,downloadMultiple:t,downloadFromUrl:(0,a.useCallback)((e,t)=>{let r=document.createElement("a");r.href=e,r.download=t,document.body.appendChild(r),r.click(),r.remove()},[])}}},69320:(e,t,r)=>{r.d(t,{A:()=>a});let a=(0,r(29510).A)("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},84245:(e,t,r)=>{r.d(t,{$:()=>o,r:()=>l});var a=r(58321);r(39349);var n=r(61500),i=r(85820),s=r(50706);let l=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function o(e){let{className:t,variant:r,size:i,asChild:o=!1,...d}=e,c=o?n.DX:"button";return(0,a.jsx)(c,{"data-slot":"button",className:(0,s.cn)(l({variant:r,size:i,className:t})),...d})}},85371:(e,t,r)=>{r.d(t,{$c:()=>p,Cf:()=>g,u3:()=>h});var a=r(58321);r(39349);var n=r(39808),i=r(28844),s=r(69320),l=r(61187),o=r(40919),d=r(84245),c=r(29574),u=r(50706);function p(e){let{items:t,onRemove:r,showSize:p=!0,showStatus:f=!0,disabled:h=!1,className:g}=e;if(!t.length)return null;let m=e=>{if(0===e)return"0 B";let t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(1))+" "+["B","KB","MB","GB"][t]},x=e=>{switch(e){case"pending":return(0,a.jsx)(n.A,{className:"size-4 text-muted-foreground"});case"processing":return(0,a.jsx)(i.A,{className:"size-4 text-primary animate-spin"});case"done":return(0,a.jsx)(s.A,{className:"size-4 text-green-600"});case"error":return(0,a.jsx)(l.A,{className:"size-4 text-destructive"});default:return null}},b=e=>{switch(e){case"done":return"bg-green-50 text-green-700 border-green-200";case"error":return"bg-red-50 text-red-700 border-red-200";case"processing":return"border-primary/20 bg-primary/10 text-primary";default:return"bg-muted text-muted-foreground"}};return(0,a.jsx)("div",{className:(0,u.cn)("space-y-3",g),children:t.map(e=>(0,a.jsxs)("div",{className:(0,u.cn)("flex items-center justify-between rounded-lg border bg-card p-4 shadow-sm",h&&"opacity-50"),children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[f&&x(e.status),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm truncate",title:e.file.name,children:e.file.name}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[p&&(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:m(e.file.size)}),e.resultSize&&e.resultSize!==e.file.size&&(0,a.jsxs)("span",{className:"text-xs text-muted-foreground",children:["â ",m(e.resultSize)]}),f&&(0,a.jsxs)(c.E,{variant:"outline",className:(0,u.cn)("text-xs",b(e.status)),children:["pending"===e.status&&"Wartend","processing"===e.status&&"Verarbeitungâ¦","done"===e.status&&"Fertig","error"===e.status&&"Fehler"]})]}),e.message&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:e.message})]})]}),(0,a.jsx)(d.$,{type:"button",variant:"ghost",size:"icon",className:"text-muted-foreground hover:text-destructive shrink-0",onClick:()=>r(e.id),disabled:h,"aria-label":"Entferne ".concat(e.file.name),children:(0,a.jsx)(o.A,{className:"size-4"})})]},e.id))})}var f=r(2487);
1function h(e){let{getRootProps:t,getInputProps:r,isDragActive:n,open:i,title:s,description:l,buttonText:o="Dateien ausw\xe4hlen",disabled:c=!1,className:p}=e;return(0,a.jsxs)("div",{...t(),className:(0,u.cn)("flex flex-col items-center justify-center gap-4 rounded-3xl border-2 border-dashed border-border/80 bg-muted/30 px-6 py-16 text-center transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",n&&"border-primary bg-primary/5",c&&"opacity-50 cursor-not-allowed",p),children:[(0,a.jsx)("input",{...r(),disabled:c}),(0,a.jsx)(f.A,{className:"size-10 text-primary","aria-hidden":"true"}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold text-foreground",children:s}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:l})]}),(0,a.jsx)(d.$,{type:"button",variant:"default",onClick:e=>{e.preventDefault(),e.stopPropagation(),i()},disabled:c,children:o})]})}function g(e){let{title:t,description:r,children:n,className:i}=e;return(0,a.jsx)("section",{id:"tool","data-tool-wrapper":!0,className:(0,u.cn)("border-b border-border bg-background",i),children:(0,a.jsxs)("div",{"data-tool-wrapper-body":!0,className:"mx-auto flex w-full max-w-6xl flex-col gap-8 px-6 py-16 md:px-8 lg:py-20",children:[(0,a.jsxs)("div",{"data-tool-wrapper-heading":!0,className:"max-w-2xl",children:[(0,a.jsx)("h2",{className:"text-3xl font-semibold text-foreground md:text-4xl",children:t}),(0,a.jsx)("p",{className:"mt-3 text-lg leading-relaxed text-muted-foreground",children:r})]}),n]})})}}}]);
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.