1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2345],{32345:(e,t,r)=>{r.r(t),r.d(t,{convertSvgToDxfBrowser:()=>p,svgToDxfBrowserConverter:()=>m});var a=r(90816),i=r(10651);let s=new Map,n=new Map;async function o(e){let{name:t,importFn:r,global:a,retries:i=3,timeout:o=3e4}=e;if(s.has(t))return s.get(t);if(n.has(t))return n.get(t);let h=l(t,r,i,o,a).then(e=>(s.set(t,e),n.delete(t),e)).catch(e=>{throw n.delete(t),e});return n.set(t,h),h}async function l(e,t,r,a,s){let n=null;for(let i=0;i<=r;i++)try{let r=new Promise((t,r)=>{setTimeout(()=>{r(Error(`Loading ${e} timed out after ${a}ms`))},a)}),i=await Promise.race([t(),r]);if(s&&window[s])return window[s];return i}catch(e){if(n=e,i<r){await new Promise(e=>setTimeout(e,1e3*(i+1)));continue}}throw new i.zx(`Failed to load ${e} library after ${r+1} attempts: ${n?.message}`,"LIBRARY_LOAD_FAILED")}let h={dxfWriter:{name:"dxf-writer",importFn:()=>r.e(4402).then(r.t.bind(r,14402,23))}};var c=r(44134).Buffer;class f extends a.k{async loadLibraries(){let e=await o(h.dxfWriter);this.DxfWriter=e.default||e}async performConversionWithLibraries(e,t={}){try{let r=e.toString("utf8");if(!r.includes("<svg")&&!r.includes("<?xml"))throw new i.OD("Invalid SVG: Missing SVG tag");this.reportProgress(t,.4);let a=new DOMParser().parseFromString(r,"image/svg+xml"),s=a.querySelector("parsererror");if(s)throw new i.zx("Failed to parse SVG: "+s.textContent,"SVG_PARSE_ERROR");let n=a.documentElement;if(!n||"svg"!==n.tagName.toLowerCase())throw new i.zx("Invalid SVG document structure","SVG_INVALID_STRUCTURE");let o=this.extractSvgElements(n,t.preserveLayers);if(0===o.length)throw new i.zx("No convertible elements found in SVG","SVG_NO_ELEMENTS");this.reportProgress(t,.6);let l=new this.DxfWriter;t.units&&l.setUnits(t.units);let h=n.viewBox.baseVal,f=h.width||n.width.baseVal.value||100,m=h.height||n.height.baseVal.value||100,p=0;for(let e of o){this.convertElementToDxf(l,e,m,t),p++;let r=.6+.3*(p/o.length);this.reportProgress(t,r)}let u=l.toDxfString(),d=c.from(u,"utf8");return this.createSuccessResult(d,"application/dxf",{elementCount:o.length,units:t.units||"Millimeters",dimensions:{width:f,height:m}}
1)}catch(e){if(e instanceof i.OD||e instanceof i.zx)throw e;throw new i.zx(`SVG to DXF conversion failed: ${e instanceof Error?e.message:"Unknown error"}`,"SVG_TO_DXF_FAILED")}}extractSvgElements(e,t=!1,r,a){let i=[],s=r||new DOMMatrix;if(e instanceof SVGGraphicsElement&&e.transform){let t=e.transform.baseVal.consolidate();t&&(s=s.multiply(t.matrix))}"g"===e.tagName&&t&&(a=e.id||e.getAttribute("inkscape:label")||`layer_${Date.now()}`);let n=e.tagName.toLowerCase();for(let r of(["line","circle","rect","path","ellipse","polyline","polygon","text"].includes(n)&&i.push({type:n,element:e,transform:s,style:window.getComputedStyle(e),layer:a}),e.children))i.push(...this.extractSvgElements(r,t,s,a));return i}convertElementToDxf(e,t,r,a){let i=a.precision||6;a.preserveLayers&&t.layer&&(e.addLayer(t.layer,this.DxfWriter.ACI.WHITE,"CONTINUOUS"),e.setActiveLayer(t.layer));let s=(e,a)=>{if(a=r-a,t.transform){let r=new DOMPoint(e,a).matrixTransform(t.transform);return[parseFloat(r.x.toFixed(i)),parseFloat(r.y.toFixed(i))]}return[parseFloat(e.toFixed(i)),parseFloat(a.toFixed(i))]};switch(t.type){case"line":{let r=t.element,[a,i]=s(r.x1.baseVal.value,r.y1.baseVal.value),[n,o]=s(r.x2.baseVal.value,r.y2.baseVal.value);e.drawLine(a,i,n,o);break}case"circle":{let r=t.element,[a,i]=s(r.cx.baseVal.value,r.cy.baseVal.value),n=r.r.baseVal.value;e.drawCircle(a,i,n);break}case"rect":{let r=t.element,a=r.x.baseVal.value,i=r.y.baseVal.value,n=r.width.baseVal.value,o=r.height.baseVal.value,l=[s(a,i),s(a+n,i),s(a+n,i+o),s(a,i+o)];e.drawPolyline(l,!0);break}case"ellipse":{let r=t.element,[a,i]=s(r.cx.baseVal.value,r.cy.baseVal.value),n=r.rx.baseVal.value,o=r.ry.baseVal.value;if(n===o)e.drawCircle(a,i,n);else{let t=[];for(let e=0;e<=64;e++){let r=e/64*2*Math.PI,l=a+n*Math.cos(r),h=i+o*Math.sin(r);t.push(s(l,h))}e.drawPolyline(t,!0)}break}case"polyline":case"polygon":{let r=t.element,a=[];for(let e=0;e<r.points.numberOfItems;e++){let t=r.points.getItem(e);a.push(s(t.x,t.y))}let i="polygon"===t.type;e.drawPolyline(a,i);break}case"path":{let r=t.element,a=r.getAttribute("d");if(!a)break;let i=this.pathToPolyline(r,s);if(i.length>0){let t=a.includes("Z")||a.includes("z");e.drawPolyline(i,t)}break}case"text":{let r=t.element,a=r.textContent||"",[i,n]=s(r.x.baseVal.getItem(0)?.value||0,r.y.baseVal.getItem(0)?.value||0),o=parseFloat(t.style?.fontSize||"12");e.drawText(i,n,o,0,a)}}}pathToPolyline(e,t){let r=[],a=e.getTotalLength(),i=Math.max(100,Math.ceil(a/5));for(let s=0;s<=i;s++){let n=s/i*a,o=e.getPointAtLength(n);r.push(t(o.x,o.y))}return r}constructor(...e){super(...e),this.name="SVG to DXF",this.from="svg",this.to="dxf",this.description="Convert SVG files to DXF (Drawing Exchange Format) for CAD applications",this.isClientSide=!0,this.DxfWriter=null}}let m=new f;async function p(e,t={}){let r;if(e instanceof File||e instanceof Blob){let t=await e.arrayBuffer();r=c.from(t)}else if(e instanceof ArrayBuffer)r=c.from(e);else if("string"==typeof e)r=c.from(e,"utf8");else throw new i.zx("Invalid input type. Expected File, Blob, ArrayBuffer, or string.","INVALID_INPUT_TYPE");return m.handler(r,t)}},90816:(e,t,r)=>{r.d(t,{I:()=>n,k:()=>o});var a=r(10651),i=r(119),s=r(44134).Buffer;class n{get handler(){return this.handleConversion.bind(this)}async handleConversion(e,t={}){let r;try{let a=this.normalizeInput(e);r=a.length,Date.now(),await this.trackConversionStart(r,t),await this.validateInput(a,t),this.reportProgress(t,.1),await this.trackConversionProgress(.1);let i=await this.performConversion(a,t);return this.reportProgress(t,1),await this.trackConversionProgress(1),await this.trackConversionComplete(!0,i,void 0,r),i}catch(e){if(await this.trackConversionComplete(!1,null,e,r),e instanceof a.zx||e instanceof a.OD)throw e;throw new a.zx((0,a.JX)(e),`${this.from.toUpperCase()}_TO_${this.to.toUpperCase()}_FAILED`)}}normalizeInput(e){return"string"==typeof e?s.from(e,"base64"):e}async validateInput(e,t){let r=(0,i.nJ)(e,{allowedFormats:[this.from],targetFormat:this.to});if(!r.isValid)throw new a.OD(r.error);let s=(0,i.XN)(this.from,this.to);if(!s.supported)throw new a.zx(s.reason,"UNSUPPORTED_CONVERSION");let n=(0,i.Ln)(t,this.from,this.to);if(!n.isValid)throw new a.zx(n.error,"INVALID_PARAMETERS")}reportProgress(e,t){if(e.onProgress&&"function"==typeof e.onProgress)try{e.onProgress(Math.min(1,Math.max(0,t)))}catch(e){}}async trackConversionStart(e,t){try{let{trackConversionStart:a}=await r.e(5804).then(r.bind(r,45804));a(this.name,this.from,this.to,e,t)}catch{}}async trackConversionProgress(e){try{let{trackConversionProgress:t}=await r.e(5804).then(r.bind(r,45804));t(this.name,this.from,this.to,e)}catch{}}async trackConversionComplete(e,t,a,i){try{let{trackConversionComplete:i}=await r.e(5804).then(r.bind(r,45804));i(this.name,this.from,this.to,e,t,a)}catch{}}async trackLibraryLoad(e,t,a,i){try{let{trackLibraryLoad:s}=await r.e(5804).then(r.bind(r,45804));s(this.name,e,t,a,i)}catch{}}createSuccessResult(e,t,r){return{success:!0,data:e,mimeType:t,metadata:{format:this.to,size:"string"==typeof e?s.byteLength(e,"utf8"):e.length,...r}}}getOutputMimeType(){return({png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",bmp:"image/bmp",svg:"image/svg+xml",pdf:"application/pdf",ico:"image/x-icon",tiff:"image/tiff",eps:"application/postscript",ai:"application/illustrator",dxf:"application/dxf",stl:"model/stl",avif:"image/avif",cdr:"application/x-coreldraw",mp4:"video/mp4",html:"text/html",ttf:"font/ttf",emf:"image/x-emf",wmf:"image/x-wmf",image:"application/octet-stream"})[this.to]||"application/octet-stream"}constructor(){this.isClientSide=!0,this.isPremium=!1}}class o extends n{async ensureLibrariesLoaded(){if(this.libraryLoaded)return;if(this.loadingPromise)return void await this.loadingPromise;let e=Date.now();this.loadingPromise=this.loadLibraries().then(async()=>{this.libraryLoaded=!0;let t=Date.now()-e;await this.trackLibraryLoad("main",t,!0)}).catch(async t=>{this.loadingPromise=null;let r=Date.now()-e;throw await this.trackLibraryLoad("main",r,!1,t.message),new a.zx(`Failed to load required libraries for ${this.name}: ${t.message}`,"LIBRARY_LOAD_FAILED")}),await this.loadingPromise}async performConversion(e,t){await this.ensureLibrariesLoaded(),this.reportProgress(t,.3),await this.trackConversionProgress(.3);let r=await this.performConversionWithLibraries(e,t);return this.reportProgress(t,.9),await this.trackConversionProgress(.9),r}constructor(...e){super(...e),this.libraryLoaded=!1,this.loadingPromise=null}}}}]);
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.