@mlightcad/cad-simple-viewer-cli 1.7.7 → 1.7.8-preview.0

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.
@@ -1,9 +1,9 @@
1
- import{G as at,a as rt,x as ot,b as N,A as Q,m as ht,h as lt,c as ct,d as L,e as tt,f as ut,g as mt,i as et,j as xt,k as gt,l as ft,n as pt,o as H,p as dt,q as O,r as W,s as yt,M as bt,t as vt,u as B,v as w,w as p,y as E,T,z as wt,B as St}from"./index-PbLluBtx.js";import{C as Me,D as Ce}from"./index-PbLluBtx.js";const k=1e10;function _t(r){return Math.max(r.maxX-r.minX,r.maxY-r.minY)>=k?!0:Math.abs(r.minX)>=k||Math.abs(r.minY)>=k||Math.abs(r.maxX)>=k||Math.abs(r.maxY)>=k}function it(r){return r.isEmpty()?!1:Number.isFinite(r.min.x)&&Number.isFinite(r.min.y)&&Number.isFinite(r.max.x)&&Number.isFinite(r.max.y)}function Tt(r){const t=[];for(const l of r)it(l)&&t.push({minX:l.min.x,minY:l.min.y,maxX:l.max.x,maxY:l.max.y});if(t.length===0)return new L;const e=t.filter(l=>!_t(l));if(e.length===0)return new L;const i=e.map(l=>Math.max(l.maxX-l.minX,l.maxY-l.minY,1e-9));i.sort((l,c)=>l-c);const s=i[Math.floor(i.length/2)]||1,n=Math.max(s*50,k),a=[];for(const l of e)Math.max(l.maxX-l.minX,l.maxY-l.minY)<n&&a.push(l);if(a.length===0)return new L;const o=Lt(a),h=Mt(o.length>0?o:a);return h?new L({x:h.minX,y:h.minY},{x:h.maxX,y:h.maxY}):new L}function Lt(r){if(r.length<2)return r;const t=r.map(c=>({x:(c.minX+c.maxX)/2,y:(c.minY+c.maxY)/2,box:c})),e=t.map(c=>c.x).sort((c,m)=>c-m),i=t.map(c=>c.y).sort((c,m)=>c-m),s=e[Math.floor(e.length/2)],n=i[Math.floor(i.length/2)],a=r.map(c=>Math.max(c.maxX-c.minX,c.maxY-c.minY,1e-9));a.sort((c,m)=>c-m);const o=a[Math.floor(a.length/2)]||1,h=Math.max(o*50,k),l=t.filter(c=>Math.hypot(c.x-s,c.y-n)<=h);return l.length>0?l.map(c=>c.box):r}function D(r,t){if(r.length<8)return r;const e=r.map(u=>({value:t==="x"?(u.minX+u.maxX)/2:(u.minY+u.maxY)/2,box:u})).sort((u,d)=>u.value-d.value),i=e[e.length-1].value-e[0].value;if(!(i>0))return r;let s=0,n=0;for(let u=1;u<e.length;u++){const d=e[u].value-e[u-1].value;d>s&&(s=d,n=u)}if(s<i*.2)return r;const a=e.slice(0,n),o=e.slice(n),h=a.length>=o.length?a:o,l=r.map(u=>Math.max(u.maxX-u.minX,u.maxY-u.minY,1e-9));l.sort((u,d)=>u-d);const c=l[Math.floor(l.length/2)]||1,m=[];for(let u=1;u<h.length;u++)m.push(h[u].value-h[u-1].value);m.sort((u,d)=>u-d);const f=m.length>0&&m[Math.floor(m.length/2)]||c,x=Math.max(f*10,c*20);return s<x?r:h.map(u=>u.box)}function G(r){if(r.length===0)return null;let t=1/0,e=1/0,i=-1/0,s=-1/0;for(const n of r)t=Math.min(t,n.minX),e=Math.min(e,n.minY),i=Math.max(i,n.maxX),s=Math.max(s,n.maxY);return{minX:t,minY:e,maxX:i,maxY:s}}function Mt(r){if(r.length===0)return null;const t=G(r);if(r.length<8)return t;let e=r.slice(),i=-1;for(;e.length!==i;)i=e.length,e=D(e,"x"),e=D(e,"y");return G(e)??t}class V{static toSvgTransform(t){const e=t.elements;return`matrix(${e[0]},${e[1]},${e[4]},${e[5]},${e[12]},${e[13]})`}static transformPoint(t,e){const i=t.elements,s=e.x,n=e.y,a=e.z??0,o=i[3]*s+i[7]*n+i[11]*a+i[15],h=o===0?1:1/o;return{x:(i[0]*s+i[4]*n+i[8]*a+i[12])*h,y:(i[1]*s+i[5]*n+i[9]*a+i[13])*h}}static transformBox(t,e){if(t.isEmpty())return;const i=t.min,s=t.max;if(!Number.isFinite(i.x)||!Number.isFinite(i.y)||!Number.isFinite(s.x)||!Number.isFinite(s.y)){t.makeEmpty();return}const n=[{x:i.x,y:i.y,z:0},{x:s.x,y:i.y,z:0},{x:s.x,y:s.y,z:0},{x:i.x,y:s.y,z:0}];let a=1/0,o=1/0,h=-1/0,l=-1/0;for(const c of n){const m=this.transformPoint(e,c);if(!Number.isFinite(m.x)||!Number.isFinite(m.y)){t.makeEmpty();return}a=Math.min(a,m.x),o=Math.min(o,m.y),h=Math.max(h,m.x),l=Math.max(l,m.y)}t.min.set(a,o),t.max.set(h,l)}}class y{constructor(){this._objectId="",this._ownerId="",this._layerName="",this._visible=!0,this._userData={},this._box=new L,this._localSvg="",this._children=[]}get box(){return this._box}set box(t){this._box.copy(t)}get basePoint(){return this._basePoint}set basePoint(t){t==null?this._basePoint=t:this._basePoint=this._basePoint?this._basePoint.copy(t):new yt(t)}get svg(){return this.renderSvg()}set svg(t){this._localSvg=t}getLocalSvg(){return this._localSvg}get childCount(){return this._children.length}renderSvg(){const t=[];this._localSvg&&t.push(this._localSvg);for(const i of this._children){const s=i.renderSvg();s&&t.push(s)}const e=t.join(`
1
+ import{Y as at,K as rt,v as ot,a as N,A as Q,b as ht,u as lt,p as ct,c as L,d as tt,e as ut,f as mt,g as et,h as xt,i as gt,j as ft,k as pt,l as H,m as dt,n as O,o as W,q as yt,M as bt,r as vt,s as B,t as w,w as p,x as E,T,X as wt,y as St}from"./index-CkMa1VwR.js";import{z as Me,B as Ce}from"./index-CkMa1VwR.js";const k=1e10;function _t(r){return Math.max(r.maxX-r.minX,r.maxY-r.minY)>=k?!0:Math.abs(r.minX)>=k||Math.abs(r.minY)>=k||Math.abs(r.maxX)>=k||Math.abs(r.maxY)>=k}function it(r){return r.isEmpty()?!1:Number.isFinite(r.min.x)&&Number.isFinite(r.min.y)&&Number.isFinite(r.max.x)&&Number.isFinite(r.max.y)}function Tt(r){const t=[];for(const l of r)it(l)&&t.push({minX:l.min.x,minY:l.min.y,maxX:l.max.x,maxY:l.max.y});if(t.length===0)return new L;const e=t.filter(l=>!_t(l));if(e.length===0)return new L;const i=e.map(l=>Math.max(l.maxX-l.minX,l.maxY-l.minY,1e-9));i.sort((l,c)=>l-c);const s=i[Math.floor(i.length/2)]||1,n=Math.max(s*50,k),a=[];for(const l of e)Math.max(l.maxX-l.minX,l.maxY-l.minY)<n&&a.push(l);if(a.length===0)return new L;const o=Lt(a),h=Mt(o.length>0?o:a);return h?new L({x:h.minX,y:h.minY},{x:h.maxX,y:h.maxY}):new L}function Lt(r){if(r.length<2)return r;const t=r.map(c=>({x:(c.minX+c.maxX)/2,y:(c.minY+c.maxY)/2,box:c})),e=t.map(c=>c.x).sort((c,m)=>c-m),i=t.map(c=>c.y).sort((c,m)=>c-m),s=e[Math.floor(e.length/2)],n=i[Math.floor(i.length/2)],a=r.map(c=>Math.max(c.maxX-c.minX,c.maxY-c.minY,1e-9));a.sort((c,m)=>c-m);const o=a[Math.floor(a.length/2)]||1,h=Math.max(o*50,k),l=t.filter(c=>Math.hypot(c.x-s,c.y-n)<=h);return l.length>0?l.map(c=>c.box):r}function D(r,t){if(r.length<8)return r;const e=r.map(u=>({value:t==="x"?(u.minX+u.maxX)/2:(u.minY+u.maxY)/2,box:u})).sort((u,d)=>u.value-d.value),i=e[e.length-1].value-e[0].value;if(!(i>0))return r;let s=0,n=0;for(let u=1;u<e.length;u++){const d=e[u].value-e[u-1].value;d>s&&(s=d,n=u)}if(s<i*.2)return r;const a=e.slice(0,n),o=e.slice(n),h=a.length>=o.length?a:o,l=r.map(u=>Math.max(u.maxX-u.minX,u.maxY-u.minY,1e-9));l.sort((u,d)=>u-d);const c=l[Math.floor(l.length/2)]||1,m=[];for(let u=1;u<h.length;u++)m.push(h[u].value-h[u-1].value);m.sort((u,d)=>u-d);const f=m.length>0&&m[Math.floor(m.length/2)]||c,x=Math.max(f*10,c*20);return s<x?r:h.map(u=>u.box)}function G(r){if(r.length===0)return null;let t=1/0,e=1/0,i=-1/0,s=-1/0;for(const n of r)t=Math.min(t,n.minX),e=Math.min(e,n.minY),i=Math.max(i,n.maxX),s=Math.max(s,n.maxY);return{minX:t,minY:e,maxX:i,maxY:s}}function Mt(r){if(r.length===0)return null;const t=G(r);if(r.length<8)return t;let e=r.slice(),i=-1;for(;e.length!==i;)i=e.length,e=D(e,"x"),e=D(e,"y");return G(e)??t}class V{static toSvgTransform(t){const e=t.elements;return`matrix(${e[0]},${e[1]},${e[4]},${e[5]},${e[12]},${e[13]})`}static transformPoint(t,e){const i=t.elements,s=e.x,n=e.y,a=e.z??0,o=i[3]*s+i[7]*n+i[11]*a+i[15],h=o===0?1:1/o;return{x:(i[0]*s+i[4]*n+i[8]*a+i[12])*h,y:(i[1]*s+i[5]*n+i[9]*a+i[13])*h}}static transformBox(t,e){if(t.isEmpty())return;const i=t.min,s=t.max;if(!Number.isFinite(i.x)||!Number.isFinite(i.y)||!Number.isFinite(s.x)||!Number.isFinite(s.y)){t.makeEmpty();return}const n=[{x:i.x,y:i.y,z:0},{x:s.x,y:i.y,z:0},{x:s.x,y:s.y,z:0},{x:i.x,y:s.y,z:0}];let a=1/0,o=1/0,h=-1/0,l=-1/0;for(const c of n){const m=this.transformPoint(e,c);if(!Number.isFinite(m.x)||!Number.isFinite(m.y)){t.makeEmpty();return}a=Math.min(a,m.x),o=Math.min(o,m.y),h=Math.max(h,m.x),l=Math.max(l,m.y)}t.min.set(a,o),t.max.set(h,l)}}class y{constructor(){this._objectId="",this._ownerId="",this._layerName="",this._visible=!0,this._userData={},this._box=new L,this._localSvg="",this._children=[]}get box(){return this._box}set box(t){this._box.copy(t)}get basePoint(){return this._basePoint}set basePoint(t){t==null?this._basePoint=t:this._basePoint=this._basePoint?this._basePoint.copy(t):new yt(t)}get svg(){return this.renderSvg()}set svg(t){this._localSvg=t}getLocalSvg(){return this._localSvg}get childCount(){return this._children.length}renderSvg(){const t=[];this._localSvg&&t.push(this._localSvg);for(const i of this._children){const s=i.renderSvg();s&&t.push(s)}const e=t.join(`
2
2
  `);return e?this._matrix?`<g transform="${V.toSvgTransform(this._matrix)}">
3
3
  ${e}
4
- </g>`:e:""}get objectId(){return this._objectId}set objectId(t){this._objectId=t}get ownerId(){return this._ownerId}set ownerId(t){this._ownerId=t}get layerName(){return this._layerName}set layerName(t){this._layerName=t}get visible(){return this._visible}set visible(t){this._visible=t}get userData(){return this._userData}set userData(t){this._userData=t}applyMatrix(t){this._matrix?this._matrix=t.clone().multiply(this._matrix):this._matrix=t.clone(),this.transformBoxesRecursive(t)}transformBoxesRecursive(t){V.transformBox(this._box,t);for(const e of this._children)e.transformBoxesRecursive(t)}recomputeBoundingBox(){}highlight(){}unhighlight(){}fastDeepClone(){const t=new y;t._objectId=this._objectId,t._ownerId=this._ownerId,t._layerName=this._layerName,t._visible=this._visible,t._userData=this._userData,t._localSvg=this._localSvg,t._box.copy(this._box),this._matrix&&(t._matrix=this._matrix.clone()),this._basePoint&&(t._basePoint=this._basePoint.clone());for(const e of this._children)t._children.push(e.fastDeepClone());return t}addChild(t){t instanceof y&&(this._children.push(t),it(t.box)&&this._box.union(t.box))}}class g{static rgbToHex(t){const e=t>>16&255,i=t>>8&255,s=t&255;return`#${e.toString(16).padStart(2,"0")}${i.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`}static resolveRgb(t,e,i){return t.isBackgroundFill||i==="fill"&&t.color.isForeground&&this.isSolidBackgroundHatch(t)?e.backgroundColor:tt.fromBackgroundColor(e.backgroundColor).resolveSubEntityTraitsRgb(t)}static strokeAttributes(t,e){const i={stroke:this.rgbToHex(this.resolveRgb(t,e,"line")),fill:"none"};if(!e.showLineWeight)i["stroke-width"]="1",i["vector-effect"]="non-scaling-stroke";else{const a=this.resolveStrokeWidth(t.lineWeight);a!=null&&(i["stroke-width"]=String(a))}const s=this.resolveOpacity(t);s!=null&&s<1&&(i["stroke-opacity"]=String(s));const n=this.strokeDasharray(t,e);return n&&(i["stroke-dasharray"]=n),i}static fillAttributes(t,e){const i={fill:this.rgbToHex(this.resolveRgb(t,e,"fill")),stroke:"none"},s=this.resolveOpacity(t);return s!=null&&s<1&&(i["fill-opacity"]=String(s)),i}static textAttributes(t,e){const i={fill:this.rgbToHex(this.resolveRgb(t,e,"text")),stroke:"none"},s=this.resolveOpacity(t);return s!=null&&s<1&&(i["fill-opacity"]=String(s)),i}static pointAttributes(t,e){return this.textAttributes(t,e)}static formatAttributes(t){return Object.entries(t).map(([e,i])=>`${e}="${Ct(i)}"`).join(" ")}static tag(t,e,i){const s=this.formatAttributes(e);return i==null?`<${t} ${s}/>`:`<${t} ${s}>${i}</${t}>`}static isSolidBackgroundHatch(t){if((t.drawOrder??0)>=0)return!1;const e=t.fillType;return e.gradient?!1:!e.definitionLines||e.definitionLines.length===0}static resolveStrokeWidth(t){return t<0?null:Math.max(.01,t/100)}static resolveOpacity(t){const e=t.transparency;if(!(e!=null&&e.isByAlpha))return null;const i=e.alpha;return i==null||Number.isNaN(i)||i<=0?null:Math.min(1,Math.max(0,i/255))}static strokeDasharray(t,e){const i=t.lineType.pattern;if(!i||i.length===0)return;const s=e.ltscale*e.celtscale*t.lineTypeScale,n=this.patternToDashSegments(i,s);if(n.length!==0)return n.join(" ")}static patternToDashSegments(t,e){const i=[];for(const s of t){let n=s.elementLength;n<0&&s.elementTypeFlag!==0&&(n=Math.abs(n)),n*=e,n===0&&(n=.5*e),i.push(Math.abs(n))}return i}}function Ct(r){return r.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;")}class At extends y{constructor(t,e,i,s){super();const n=t.tessellate(s);let a="";for(const o of n){if(o.length===0)continue;const[h,...l]=o;a+=`M${h.x},${h.y}`;for(const c of l)a+=` L${c.x},${c.y}`;a+=" Z";for(const c of o)this._box.expandByPoint(c)}if(a){const o={d:a,"fill-rule":"evenodd",...g.fillAttributes(e,i)};this.svg=g.tag("path",o)}}}class kt extends y{constructor(t,e,i,s){super();const n=t.tessellate(s),a=n.reduce((o,h,l)=>(o+=l===0?"M":"L",o+=`${h.x},${h.y}`,o),"");if(a){const o={d:a,...g.strokeAttributes(e,i)};this.svg=g.tag("path",o)}for(const o of n)this._box.expandByPoint(o)}}class Ft extends y{constructor(t,e,i,s){super();const n=t.tessellate(s),a=n.reduce((o,h,l)=>(o+=l===0?"M":"L",o+=`${h.x},${h.y}`,o),"");if(a){const o={d:a,...g.strokeAttributes(e,i)};this.svg=g.tag("path",o)}for(const o of n)this._box.expandByPoint(o)}}class F{static isSafeEmbeddedUrl(t){const e=t.trim();return e.startsWith("data:")||e.startsWith("#")}static sanitizeExternalReferences(t){return t.replace(/<(?:image|use)\b[^>]*\s(?:xlink:)?href="(?!data:|#)[^"]*"[^>]*\/?>\s*/gi,"")}static stripInvalidXmlChars(t){return t.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\uFFFE\uFFFF]/g,"")}static escapeXml(t){return F.stripInvalidXmlChars(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}static async rasterizeSvgDataUrl(t){return typeof document>"u"?t:new Promise((e,i)=>{const s=new Image;s.onload=()=>{const n=Math.max(1,s.naturalWidth||1),a=Math.max(1,s.naturalHeight||1),o=document.createElement("canvas");o.width=n,o.height=a;const h=o.getContext("2d");if(!h){i(new Error("Canvas 2D context unavailable"));return}h.drawImage(s,0,0,n,a),e(o.toDataURL("image/png"))},s.onerror=()=>i(new Error("Failed to rasterize embedded SVG image")),s.src=t})}}class Pt extends y{constructor(t){super();for(const e of t)this.addChild(e)}}class I extends y{constructor(t,e,i,s){super();const{boundary:n}=e;if(n.length<2||!F.isSafeEmbeddedUrl(t))return;let a=1/0,o=1/0,h=-1/0,l=-1/0;for(const x of n)x.x<a&&(a=x.x),x.y<o&&(o=x.y),x.x>h&&(h=x.x),x.y>l&&(l=x.y),this._box.expandByPoint(x);const c=h-a,m=l-o,f=Yt(t);this._localSvg=`<image x="${a}" y="${o}" width="${c}" height="${m}" href="${f}" xlink:href="${f}" transform="scale(1,-1) translate(0,${-(o*2+m)})"/>`}static async fromBlob(t,e,i,s){let n=await Rt(t);if(t.type==="image/svg+xml"||n.startsWith("data:image/svg+xml"))try{n=await F.rasterizeSvgDataUrl(n)}catch{return new I("",e,i,s)}return new I(n,e,i,s)}}function Rt(r){return new Promise((t,e)=>{const i=new FileReader;i.onload=()=>t(i.result),i.onerror=e,i.readAsDataURL(r)})}function Yt(r){return r.replace(/&/g,"&amp;").replace(/"/g,"&quot;")}class Bt extends y{constructor(t,e,i){super();const s=t.reduce((n,a,o)=>(n+=o===0?"M":"L",n+=a.x+","+a.y,this.box.expandByPoint(a),n),"");if(s){const n={d:s,...g.strokeAttributes(e,i)};this.svg=g.tag("path",n)}}}class Et extends y{constructor(t,e,i,s,n){super();const a=g.strokeAttributes(s,n),o=[];for(let h=0;h+1<i.length;h+=2){const l=i[h]*e,c=i[h+1]*e,m=t[l],f=t[l+1],x=t[c],u=t[c+1];o.push(g.tag("line",{x1:String(m),y1:String(f),x2:String(x),y2:String(u),...a})),this._box.expandByPoint({x:m,y:f}),this._box.expandByPoint({x,y:u})}this.svg=o.join(`
5
- `)}}const st=/\.(shx|ttf|otf|woff2?)$/i,It={txt:"Lucida Console, Courier New, monospace",simplex:"Arial, Helvetica, sans-serif",romans:'"Times New Roman", Times, serif',romanc:'"Times New Roman", Times, serif',romand:'"Times New Roman", Times, serif',romant:'"Times New Roman", Times, serif',italic:'"Times New Roman", Times, serif',italict:'"Times New Roman", Times, serif',italicc:'"Times New Roman", Times, serif',monotxt:'"Courier New", Courier, monospace',isocp:"Arial, Helvetica, sans-serif",isocp2:"Arial, Helvetica, sans-serif",isocp3:"Arial, Helvetica, sans-serif",isoct:"Arial, Helvetica, sans-serif",isoct2:"Arial, Helvetica, sans-serif",isoct3:"Arial, Helvetica, sans-serif",gdt:"Arial, Helvetica, sans-serif",greekc:'"Times New Roman", Times, serif',greeks:'"Times New Roman", Times, serif',simsun:'SimSun, "Songti SC", STSong, serif',simhei:'SimHei, "Heiti SC", STHeiti, sans-serif',simkai:'KaiTi, "Kaiti SC", STKaiti, serif',simfang:'FangSong, "Fangsong SC", STFangsong, serif',msyh:'"Microsoft YaHei", "PingFang SC", sans-serif',dengxian:'DengXian, "Microsoft YaHei", sans-serif',arial:"Arial, Helvetica, sans-serif","times new roman":'"Times New Roman", Times, serif',courier:'"Courier New", Courier, monospace',tahoma:"Tahoma, Geneva, sans-serif",verdana:"Verdana, Geneva, sans-serif"},Xt={arial:"1",romans:"1.05",txt:"1.1",simplex:"1.05",isocp:"1"};let U={},j={};function z(r){return r.trim().replace(st,"").toLowerCase()}function X(r,t){const e=(t==null?void 0:t.trim())||"sans-serif";if(!(r!=null&&r.trim()))return X(e,"sans-serif");const i=z(r);return(U[i]??It[i]??U[r.toLowerCase()])||(st.test(r)?e:r.includes(",")?r:`"${r}", ${e}`)}function Nt(r){if(!(r!=null&&r.trim()))return 1;const t=z(r),e=j[t]??Xt[t]??j[r.toLowerCase()];if(e==null)return 1;const i=Number(e);return Number.isFinite(i)&&i>0?i:1}function $(r){return z(r)}const Ht=1,q=5/3,zt=.3,$t=.6,Ot=1,Wt=4,Dt=.7;function Gt(r){if(!r||r.length!==1)return!1;const t=r.codePointAt(0)??0;return t>=4352&&t<=4607||t>=11904&&t<=40959||t>=63744&&t<=64255||t>=65040&&t<=65135||t>=65280&&t<=65376||t>=131072&&t<=196607}function Vt(r,t){const e=typeof t.lineSpaceFactor=="number"?t.lineSpaceFactor:Ht,i=r*Math.max(e,0)*q;return t.lineSpaceStyle===2?i:Math.max(i,r*q)}function Ut(r){return!Number.isFinite(r.width)||r.width<=0?null:r.width}function jt(r){switch(r){case B.RIGHT_TO_LEFT:return 1;case B.TOP_TO_BOTTOM:return 2;case B.BOTTOM_TO_TOP:return 3;case B.LEFT_TO_RIGHT:case B.BY_STYLE:default:return 0}}function qt(r){const t=r.directionVector;return t&&(t.x!==0||t.y!==0)?Math.atan2(t.y,t.x):r.rotation??0}function Kt(r){const t=r.width;if(!Number.isFinite(t)||t<=0||r.attachmentPoint==null)return w.LEFT;switch(r.attachmentPoint){case p.TopCenter:case p.MiddleCenter:case p.BottomCenter:case p.BaselineCenter:return w.CENTER;case p.TopRight:case p.MiddleRight:case p.BottomRight:case p.BaselineRight:return w.RIGHT;default:return w.LEFT}}function Jt(r){return{minX:r.minX,maxX:r.maxX,minY:-r.maxY,maxY:-r.minY,baselineY:-r.firstBaselineY}}function Zt(r,t){const e=Jt(t),i=(e.minX+e.maxX)/2,s=(e.minY+e.maxY)/2;switch(r){case p.TopCenter:return{x:-i,y:-e.maxY};case p.TopRight:return{x:-e.maxX,y:-e.maxY};case p.MiddleLeft:return{x:-e.minX,y:-s};case p.MiddleCenter:return{x:-i,y:-s};case p.MiddleRight:return{x:-e.maxX,y:-s};case p.BottomLeft:return{x:-e.minX,y:-e.minY};case p.BottomCenter:return{x:-i,y:-e.minY};case p.BottomRight:return{x:-e.maxX,y:-e.minY};case p.BaselineCenter:return{x:-i,y:-e.baselineY};case p.BaselineRight:return{x:-e.maxX,y:-e.baselineY};case p.BaselineLeft:return{x:-e.minX,y:-e.baselineY};case p.TopLeft:default:return{x:-e.minX,y:-e.maxY}}}function Qt(r,t,e,i){const s=new L,{text:n,height:a,position:o}=r;if(!n||a<=0)return{localSvg:"",box:s};const h=a,l=Vt(h,r),c=Ut(r),m=jt(r.drawingDirection),f=X(t.extendedFont||t.font,"sans-serif"),x=typeof r.widthFactor=="number"&&r.widthFactor>0?r.widthFactor:typeof t.widthFactor=="number"&&t.widthFactor>0?t.widthFactor:1,u=new bt;u.capHeight={value:h,isRelative:!1},u.widthFactor={value:x,isRelative:!1},u.paragraph.align=Kt(r),typeof t.obliqueAngle=="number"&&(u.oblique=t.obliqueAngle),u.fontFace.family=$(t.extendedFont||t.font||f);const d=new vt(n,u,{resetParagraphParameters:!1,yieldPropertyCommands:!0}),S=new ee(h,l,c,m,f,x,t,e,i,u);for(const nt of d.parse())S.consume(nt);S.finish();const M=S.bounds,P=c!=null?{...M,minX:0,maxX:c}:M,b=Zt(r.attachmentPoint,P),{x:_,y:v}=o,C=qt(r)*180/Math.PI,A=[`translate(${_},${v})`];C!==0&&A.push(`rotate(${-C})`),A.push(`translate(${b.x},${b.y})`),A.push("scale(1,-1)");const R=[S.runMarkup,S.decorationMarkup].join(""),Y=g.tag("g",{transform:A.join(" ")},R);return te(s,M,b,_,v),{localSvg:Y,box:s}}function te(r,t,e,i,s){if(t.maxX<=t.minX&&t.maxY<=t.minY)return;const n=[{x:t.minX+e.x,y:e.y-t.minY},{x:t.maxX+e.x,y:e.y-t.minY},{x:t.minX+e.x,y:e.y-t.maxY},{x:t.maxX+e.x,y:e.y-t.maxY}];for(const a of n)r.expandByPoint({x:i+a.x,y:s+a.y})}class ee{constructor(t,e,i,s,n,a,o,h,l,c){this.baseHeight=t,this.lineAdvance=e,this.wrapWidth=i,this.flowMode=s,this.defaultFont=n,this.traits=h,this.ctx=l,this.x=0,this.y=0,this.lineStartX=0,this.columnStartY=0,this.columnAdvance=0,this.isLineStart=!0,this.firstLineOfParagraph=!0,this.currentLine=null,this.lines=[],this.stackBars=[],this.decorationLines=[],this.activeLineIndex=0,this.minX=0,this.maxX=0,this.minY=0,this.maxY=0,this.firstBaselineY=0,this.hasContent=!1,this.heightScale=1,this.tracking=1,this.oblique=0,this.bold=!1,this.italic=!1,this.underline=!1,this.overline=!1,this.strikeThrough=!1,this.lineAlign=E.BOTTOM,this.prevCtx=c,this.hScale=a,this.oblique=typeof o.obliqueAngle=="number"?o.obliqueAngle:0,this.fontFamily=X(c.fontFace.family,n),this.fill=K(c.color,h,l),this.resetParagraphPosition(c)}get runMarkup(){let t="";for(const e of this.lines)for(const i of e.spans)t+=this.emitRunGroup(i);return t}get decorationMarkup(){return[...this.stackBars,...this.decorationLines].map(t=>g.tag("line",{x1:String(t.x1),y1:String(t.y1),x2:String(t.x2),y2:String(t.y2),stroke:t.stroke,"stroke-width":String(Math.max(this.baseHeight*.05,.05)),"stroke-linecap":"butt"})).join("")}get bounds(){return{minX:this.minX,maxX:this.maxX,minY:this.minY,maxY:this.maxY,firstBaselineY:this.firstBaselineY}}consume(t){switch(this.applyCtx(t.ctx),t.type){case T.WORD:this.emitText(String(t.data??""),t.ctx);break;case T.SPACE:this.emitSpace(t.ctx);break;case T.NBSP:this.emitText(" ",t.ctx);break;case T.TABULATOR:this.advanceToTab(t.ctx);break;case T.NEW_PARAGRAPH:this.newParagraph(t.ctx);break;case T.NEW_COLUMN:this.newColumn(t.ctx);break;case T.WRAP_AT_DIMLINE:this.wrapLine(t.ctx);break;case T.PROPERTIES_CHANGED:this.applyPropertyChange(t.data);break;case T.STACK:Array.isArray(t.data)&&t.data.length===3&&this.emitStack(t.data,t.ctx);break}}finish(){this.finalizeCurrentLine(),this.applyVerticalLineAlignment(),this.applyLineAlignment(),this.recomputeBoundsFromLines(),this.emitDecorationLines()}applyCtx(t){const e=t.capHeight;(e.value!==this.prevCtx.capHeight.value||e.isRelative!==this.prevCtx.capHeight.isRelative)&&(e.isRelative?this.heightScale*=e.value:this.heightBase=e.value);const i=t.widthFactor;(i.value!==this.prevCtx.widthFactor.value||i.isRelative!==this.prevCtx.widthFactor.isRelative)&&(this.hScale=i.isRelative?this.hScale*i.value:i.value);const s=t.charTrackingFactor;(s.value!==this.prevCtx.charTrackingFactor.value||s.isRelative!==this.prevCtx.charTrackingFactor.isRelative)&&(this.tracking=s.isRelative?s.value+1:s.value),t.oblique!==this.prevCtx.oblique&&(this.oblique=t.oblique),JSON.stringify(t.fontFace)!==JSON.stringify(this.prevCtx.fontFace)&&this.applyFontFaceChange(t.fontFace),(t.color.aci!==this.prevCtx.color.aci||t.color.rgbValue!==this.prevCtx.color.rgbValue||t.color.isRgb!==this.prevCtx.color.isRgb)&&(this.fill=K(t.color,this.traits,this.ctx)),this.underline=t.underline,this.overline=t.overline,this.strikeThrough=t.strikeThrough,this.lineAlign=t.align,this.prevCtx=t}currentStyle(){const t=this.prevCtx.fontFace.family||this.defaultFont;return{size:(this.heightBase??this.baseHeight)*this.heightScale*Nt(t),hScale:this.hScale,tracking:this.tracking,oblique:this.oblique,fontFamily:this.fontFamily,bold:this.bold,italic:this.italic,fill:this.fill,underline:this.underline,overline:this.overline,strikeThrough:this.strikeThrough,align:this.lineAlign}}applyPropertyChange(t){var e,i;if(((e=t.changes.paragraph)==null?void 0:e.align)!=null&&t.changes.paragraph.align!==w.DEFAULT&&this.currentLine&&(this.currentLine.paragraphAlign=t.changes.paragraph.align),t.command==="f"||t.command==="F")this.applyFontFaceChange(t.changes.fontFace);else if(t.command==="p"&&((i=t.changes.paragraph)==null?void 0:i.indent)!=null&&this.firstLineOfParagraph){const s=t.changes.paragraph.indent*this.baseHeight;this.isHorizontalRtl()?this.x-=s:this.isVertical()||(this.x+=s)}}applyFontFaceChange(t){if(t){if(t.family){const e=$(t.family);this.fontFamily=X(e,this.defaultFont)}this.applyFontFaceWeightAndStyle(t)}}applyFontFaceWeightAndStyle(t){t&&(this.bold=(t.weight??400)>=700,this.italic=t.style==="Italic")}applyVerticalLineAlignment(){for(const t of this.lines){if(t.spans.length===0)continue;let e=0;for(const i of t.spans)e=Math.max(e,i.style.size);if(!(e<=0))for(const i of t.spans){const s=i.style.size;let n=0;switch(i.style.align){case E.TOP:n=s-e;break;case E.MIDDLE:n=(s-e)/2;break;case E.BOTTOM:default:n=0;break}i.y+=n}}}applyLineAlignment(){var t,e;if(this.wrapWidth!=null)for(let i=0;i<this.lines.length;i++){const s=this.lines[i];if(s.maxX-s.minX<=0)continue;const n=((t=s.spans[0])==null?void 0:t.paragraphLeft)??0,a=((e=s.spans[0])==null?void 0:e.paragraphRight)??0,o=this.wrapWidth-n-a;let h=0;switch(s.paragraphAlign){case w.CENTER:h=s.columnLeft+o/2-(s.minX+s.maxX)/2;break;case w.RIGHT:h=s.columnLeft+o-s.maxX;break;case w.JUSTIFIED:case w.DISTRIBUTED:case w.LEFT:case w.DEFAULT:default:h=0;break}if(h!==0){for(const l of s.spans)l.x+=h;s.minX+=h,s.maxX+=h;for(const l of this.stackBars)l.lineIndex===i&&(l.x1+=h,l.x2+=h)}}}recomputeBoundsFromLines(){this.minX=0,this.maxX=0,this.minY=0,this.maxY=0,this.hasContent=!1;for(const t of this.lines)for(const e of t.spans)this.includeSpanBounds(e)}emitDecorationLines(){this.decorationLines.length=0;for(let t=0;t<this.lines.length;t++){const e=this.lines[t];for(const i of e.spans)this.pushRunDecorations(i,t)}}pushRunDecorations(t,e){const{style:i,advance:s}=t;if(s<=0)return;const n=this.isHorizontalRtl()?t.x-s:t.x,a=n+s,o=i.fill,h=i.size;i.underline&&this.decorationLines.push({x1:n,y1:t.y+h*.12,x2:a,y2:t.y+h*.12,stroke:o,lineIndex:e}),i.overline&&this.decorationLines.push({x1:n,y1:t.y-h*.95,x2:a,y2:t.y-h*.95,stroke:o,lineIndex:e}),i.strikeThrough&&this.decorationLines.push({x1:n,y1:t.y-h*.4,x2:a,y2:t.y-h*.4,stroke:o,lineIndex:e})}emitRunGroup(t){const{style:e}=t,i=[`translate(${this.isHorizontalRtl()?t.x-t.advance:t.x},${t.y})`];e.hScale!==1&&i.push(`scale(${e.hScale},1)`),e.oblique!==0&&i.push(`skewX(${-e.oblique})`);const s={"font-size":String(e.size),"font-family":e.fontFamily,fill:e.fill};e.bold&&(s["font-weight"]="700"),e.italic&&(s["font-style"]="italic");const n=g.tag("text",s,ie(t.text));return g.tag("g",{transform:i.join(" ")},n)}emitSpace(t){const e=this.currentStyle(),i=this.runAdvance(" ",e);this.isLineStart||this.isHorizontal()&&(this.ensureFits(i,t),this.isLineStart)||this.advancePosition(i,e.size)}emitText(t,e,i){if(!t)return;const s=i??this.currentStyle();if(this.isVertical()){for(const a of t)this.emitTextRun(a,e,s);return}if(this.wrapWidth!=null){const a=this.runAdvance(t,s);!this.isLineStart&&a>0&&this.penOffset(e)+a>this.maxLineWidth(e)&&this.wrapLine(e)}if(s.tracking!==1){for(const a of t)this.emitTextRun(a,e,s);return}if(this.wrapWidth==null){this.emitTextRun(t,e,s);return}let n="";for(const a of t){if(n.length>0){const o=this.runAdvance(n+a,s);this.penOffset(e)+o>this.maxLineWidth(e)&&(this.emitTextRun(n,e,s),n="",this.wrapLine(e))}n+=a}n&&this.emitTextRun(n,e,s)}emitTextRun(t,e,i){var s;if(!t)return;const n=i??this.currentStyle(),a=this.runAdvance(t,n),o=this.isVertical()?n.size:a;this.ensureFits(o,e);const h=this.currentPosition(),l={text:t,x:h.x,y:h.y,advance:a,style:{...n},paragraphLeft:this.paragraphLeft(e),paragraphRight:this.rightMargin(e)};(s=this.currentLine)==null||s.spans.push(l),this.includeSpanBounds(l),this.advancePosition(a,n.size),this.firstLineOfParagraph=!1}emitStack(t,e){const[i,s,n]=t,a=this.currentPosition(),o=this.isLineStart,h=this.currentStyle(),l=h.size,c={...h,size:l*Dt};if(n==="^"){if(i&&!s){this.setPosition(a.x,a.y-l*.35),this.isLineStart=!0,this.emitText(i,e,c);const b=this.measureHorizontalSpan(a,this.currentPosition());this.setPosition(a.x+b,a.y)}else if(!i&&s){this.setPosition(a.x,a.y+l*.2),this.isLineStart=!0,this.emitText(s,e,c);const b=this.measureHorizontalSpan(a,this.currentPosition());this.setPosition(a.x+b,a.y)}else if(i&&s){const b=this.runAdvance(i,c),_=this.runAdvance(s,c),v=Math.max(b,_);this.setPosition(a.x+(v-b)/2,a.y-l*.35),this.isLineStart=!0,this.emitText(i,e,c),this.setPosition(a.x+(v-_)/2,a.y+l*.2),this.isLineStart=!0,this.emitText(s,e,c);const C=this.isHorizontalRtl()?a.x-v:a.x+v;this.setPosition(C,a.y)}this.isLineStart=o;return}const m=this.runAdvance(i,c),f=this.runAdvance(s,c),x=Math.max(m,f),u=(x-m)/2,d=(x-f)/2,S=h.fill;this.setPosition(a.x+u,a.y-l*.35),this.isLineStart=!0,this.emitText(i,e,c),this.setPosition(a.x+d,a.y+l*.2),this.isLineStart=!0,this.emitText(s,e,c);const M=a.y-l*.05+this.baseHeight*zt;this.stackBars.push({x1:a.x,y1:M,x2:a.x+x,y2:M,stroke:S,lineIndex:this.activeLineIndex});const P=this.isHorizontalRtl()?a.x-x:a.x+x;this.setPosition(P,a.y),this.isLineStart=o}newParagraph(t){if(this.finalizeCurrentLine(),this.isVertical()){this.newColumn(t);return}this.y+=this.lineAdvance,this.columnStartY=this.y,this.resetParagraphPosition(t)}wrapLine(t){if(this.finalizeCurrentLine(),this.isVertical()){this.newColumn(t);return}this.y+=this.lineAdvance,this.columnStartY=this.y,this.resetLinePosition(t)}newColumn(t){if(this.finalizeCurrentLine(),this.isVertical()){this.x+=this.columnAdvance>0?this.columnAdvance:this.baseHeight,this.columnAdvance=0,this.isVerticalTtb()&&(this.columnStartY=0),this.resetParagraphPosition(t);return}this.x+=this.wrapWidth??this.baseHeight*4,this.resetParagraphPosition(t)}finalizeCurrentLine(){this.currentLine&&this.currentLine.spans.length>0&&(this.lines.push(this.currentLine),this.activeLineIndex=this.lines.length),this.currentLine=null}resetParagraphPosition(t){this.firstLineOfParagraph=!0,this.resetLinePosition(t)}resetLinePosition(t){const e=this.paragraphLeft(t),i=this.firstLineOfParagraph?this.firstLineIndent(t):0,s=this.lineLimits(t);this.isHorizontalRtl()?(this.x=s.right-i,this.y=this.columnStartY):this.isVerticalTtb()?(this.x=e,this.y=this.columnStartY+i):this.isVerticalBtt()?(this.x=e,this.y=(this.wrapWidth!=null?this.wrapWidth:this.baseHeight*10)-i,this.columnStartY=this.y):(this.x=e+i,this.y=this.columnStartY),this.lineStartX=e,this.isLineStart=!0,this.currentLine={spans:[],minX:this.x,maxX:this.x,minY:this.y,maxY:this.y,baselineY:this.y,columnLeft:e,paragraphAlign:t.paragraph.align}}wouldOverflow(t,e){if(this.wrapWidth==null||t<=0||this.isLineStart)return!1;if(this.isHorizontal())return this.penOffset(e)+t>this.maxLineWidth(e);const i=this.verticalLimits(e);return this.isVerticalTtb()?this.y+t>i.bottom:this.y-t<i.top}penOffset(t){return this.isHorizontalRtl()?this.lineLimits(t).right-this.x:this.x-this.paragraphLeft(t)}maxLineWidth(t){return this.wrapWidth==null?Number.POSITIVE_INFINITY:this.wrapWidth-this.paragraphLeft(t)-this.rightMargin(t)}ensureFits(t,e){this.wrapWidth!=null&&this.isHorizontal()&&!this.isLineStart&&this.penOffset(e)>this.maxLineWidth(e)&&this.wrapLine(e),this.wouldOverflow(t,e)&&this.wrapLine(e)}advancePosition(t,e){this.isHorizontalRtl()?this.x-=t:this.isVerticalTtb()?this.y+=e:this.isVerticalBtt()?this.y-=e:this.x+=t,this.isLineStart=!1,this.columnAdvance=Math.max(this.columnAdvance,t)}advanceToTab(t){const e=this.baseHeight*Wt,i=t.paragraph.tabs,s=this.currentStyle();if(i.length===0){const n=this.isHorizontalRtl()?Math.floor(this.x/e)*e:Math.ceil((this.x+1)/e)*e,a=this.isHorizontalRtl()?this.x-n:n-this.x;this.advancePosition(Math.max(0,a),s.size);return}for(const n of i){const a=this.lineStartX+(typeof n=="number"?n*this.baseHeight:parseFloat(String(n))*this.baseHeight);if(this.isHorizontalRtl()){if(!Number.isNaN(a)&&a<this.x){this.advancePosition(this.x-a,s.size);return}}else if(!Number.isNaN(a)&&a>this.x){this.advancePosition(a-this.x,s.size);return}}this.advancePosition(e,s.size)}lineLimits(t){const e=this.paragraphLeft(t),i=t.paragraph.right*this.baseHeight,s=this.wrapWidth!=null?e+this.wrapWidth-i:Number.POSITIVE_INFINITY;return{left:e,right:s}}verticalLimits(t){if(this.isVerticalBtt()){const s=this.columnStartY-t.paragraph.right*this.baseHeight;return{top:this.wrapWidth!=null?this.columnStartY-this.wrapWidth+this.firstLineIndent(t):Number.NEGATIVE_INFINITY,bottom:s}}const e=this.columnStartY+this.firstLineIndent(t),i=this.wrapWidth!=null?this.columnStartY+this.wrapWidth-t.paragraph.right*this.baseHeight:Number.POSITIVE_INFINITY;return{top:e,bottom:i}}currentPosition(){return{x:this.x,y:this.y}}setPosition(t,e){this.x=t,this.y=e}includeSpanBounds(t){const e=t.advance,i=this.isHorizontalRtl()?t.x-e:t.x,s=this.isHorizontalRtl()?t.x:t.x+e,n=t.y-t.style.size,a=t.y;this.hasContent?(this.minX=Math.min(this.minX,i),this.maxX=Math.max(this.maxX,s),this.minY=Math.min(this.minY,n),this.maxY=Math.max(this.maxY,a)):(this.minX=i,this.maxX=s,this.minY=n,this.maxY=a,this.firstBaselineY=t.y,this.hasContent=!0),this.currentLine&&(this.currentLine.minX=Math.min(this.currentLine.minX,i),this.currentLine.maxX=Math.max(this.currentLine.maxX,s),this.currentLine.minY=Math.min(this.currentLine.minY,n),this.currentLine.maxY=Math.max(this.currentLine.maxY,a))}measureHorizontalSpan(t,e){return Math.abs(e.x-t.x)}runAdvance(t,e){let i=0,s=0;for(const a of t){const o=Gt(a)?Ot:$t;i+=e.size*o,s+=1}const n=i*e.hScale;return e.tracking===1||s===0?n:n+s*(e.tracking-1)*e.size*e.hScale}paragraphLeft(t){return t.paragraph.left*this.baseHeight}firstLineIndent(t){return t.paragraph.indent*this.baseHeight}rightMargin(t){return((t==null?void 0:t.paragraph.right)??0)*this.baseHeight}isHorizontal(){return this.flowMode===0||this.flowMode===1}isHorizontalRtl(){return this.flowMode===1}isVertical(){return this.flowMode===2||this.flowMode===3}isVerticalTtb(){return this.flowMode===2}isVerticalBtt(){return this.flowMode===3}}function K(r,t,e){if(r.isRgb&&r.rgbValue!=null)return g.rgbToHex(r.rgbValue);if(r.aci===256||r.aci==null||r.aci===0)return g.rgbToHex(g.resolveRgb(t,e,"text"));const i=new et;i.colorIndex=r.aci;const s=i.RGB;return typeof s=="number"?g.rgbToHex(s):g.rgbToHex(g.resolveRgb(t,e,"text"))}function ie(r){return F.escapeXml(r)}class se extends y{constructor(t,e,i,s){super();const n=Qt(t,e,i,s);this._localSvg=n.localSvg,this._box=n.box}}const ne=.5;class ae extends y{constructor(t,e,i,s){super();const n=e.displaySize>0?e.displaySize/2:ne,a={cx:String(t.x),cy:String(t.y),r:String(n),...g.pointAttributes(i,s)};this.svg=g.tag("circle",a),this._box.expandByPoint(t)}}function re(r,t,e,i){const s=new L,n={localSvg:"",box:s},a=r.size,o=r.position;if(!o||!(a>0))return n;const h=ce(r,t);if(!(h!=null&&h.length))return n;const l=r.widthFactor??t.widthFactor??1,c=(t.obliqueAngle??0)*Math.PI/180,m=c!==0?Math.tan(c):0,f=oe(h,l,m);if(f.length===0)return n;const x=he(f),u=le(r.rotation,r.directionVector),d=Math.cos(u),S=Math.sin(u),M=g.strokeAttributes(e,i),P=[];for(const b of f){let _="";for(let v=0;v<b.length;v++){const C=b[v].x+x.x,A=b[v].y+x.y,R=C*d-A*S+o.x,Y=C*S+A*d+o.y;_+=v===0?`M${R},${Y}`:`L${R},${Y}`,s.expandByPoint({x:R,y:Y})}_&&P.push(g.tag("path",{d:_,...M}))}return{localSvg:P.join(`
6
- `),box:s}}function oe(r,t,e){const i=[];for(const s of r){if(s.length<2)continue;const n=[];for(const a of s){let o=a.x*t;const h=a.y;e!==0&&(o+=e*h),n.push({x:o,y:h})}i.push(n)}return i}function he(r){let t=1/0,e=1/0;for(const i of r)for(const s of i)t=Math.min(t,s.x),e=Math.min(e,s.y);return{x:Number.isFinite(t)?-t:0,y:Number.isFinite(e)?-e:0}}function le(r,t){if(!t)return r??0;const e=t.x??0,i=t.y??0,s=t.z??1,n=Math.hypot(e,i,s);if(n<1e-12)return r??0;const a=e/n,o=i/n,h=s/n;return Math.hypot(a,o)<1e-10&&h>0?r??0:Math.acos(Math.min(1,Math.max(-1,h)))}function ce(r,t){var e;const i=$(t.font),s=r.size,n=(e=r.name)==null?void 0:e.trim(),a=r.shapeNumber,o=wt.instance,h=n&&o.getShapeByName(n,i,s)||(a!=null&&a!==0?o.getShapeByCode(a,i,s):void 0);if(h)return ue(h);const l=o.getFontByName(i,!1);if((l==null?void 0:l.type)!=="shx")return;const c=new St(l.data);try{const m=n&&c.getShapeByName(n,s)||(a!=null&&a!==0?c.getCharShape(a,s):void 0),f=m==null?void 0:m.polylines;return f!=null&&f.some(x=>x.length>=2)?f:void 0}finally{c.release()}}function ue(r){var t;const e=(t=r.shape)==null?void 0:t.polylines;if(e!=null&&e.some(i=>i.length>=2))return e}class me extends y{constructor(t,e,i,s){super();const n=re(t,e,i,s);this._localSvg=n.localSvg,this._box=n.box}}const xe=200;class J{constructor(){this._ltscale=1,this._celtscale=1,this._currentBackgroundColor=0,this._foregroundColor=0,this._showLineWeight=!1,this._entities=[],this._bbox=new L,this._fontMapping={},this._pendingImages=[],this._context=tt.fromBackgroundColor(this._currentBackgroundColor),this._subEntityTraits={color:new et,lineType:{type:"ByLayer",name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0},lineTypeScale:1,lineWeight:mt.ByLayer,fillType:{solidFill:!0,patternAngle:0,definitionLines:[]},transparency:new ut,thickness:0,layer:"0",drawOrder:0}}static prepareExport(){xt.instance.clear()}get subEntityTraits(){return this._subEntityTraits}get context(){return this._context}setFontMapping(t){this._fontMapping=t}set ltscale(t){this._ltscale=t}set celtscale(t){this._celtscale=t}get currentBackgroundColor(){return this._currentBackgroundColor}set currentBackgroundColor(t){this._currentBackgroundColor=t,this._context.backgroundIsDark=!gt(t),this._context.foregroundOnDark=ft,this._context.foregroundOnLight=pt}changeForeground(t){this._foregroundColor=t}get showLineWeight(){return this._showLineWeight}set showLineWeight(t){this._showLineWeight=t}get styleContext(){return{ltscale:this._ltscale,celtscale:this._celtscale,backgroundColor:this._currentBackgroundColor,foregroundColor:this._foregroundColor,showLineWeight:this._showLineWeight}}pushEntity(t){return this._entities.push(t),t}removeEntities(t){for(const e of t){const i=this._entities.indexOf(e);i>=0&&this._entities.splice(i,1)}}group(t){return this.removeEntities(t),this.pushEntity(new Pt(t))}point(t,e){return this.pushEntity(new ae(t,e,this._subEntityTraits,this.styleContext))}circularArc(t){return this.pushEntity(new kt(t,this._subEntityTraits,this.styleContext,H(this)))}ellipticalArc(t){return this.pushEntity(new Ft(t,this._subEntityTraits,this.styleContext,H(this)))}lines(t){return this.pushEntity(new Bt(t,this._subEntityTraits,this.styleContext))}lineSegments(t,e,i){return this.pushEntity(new Et(t,e,i,this._subEntityTraits,this.styleContext))}area(t){return this.pushEntity(new At(t,this._subEntityTraits,this.styleContext,H(this)))}offsetRing(t,e){const i=new dt;i.add(new O(t.map(a=>new W(a.x,a.y)),!0)),i.add(new O(e.map(a=>new W(a.x,a.y)),!0));const s=this.area(i),n=fe(t,e);return n?this.group([s,this.lines(n)]):s}mtext(t,e,i){const s=this._fontMapping[e.font]??e.font,n=s!==e.font?{...e,font:s}:e;return this.pushEntity(new se(t,n,this._subEntityTraits,this.styleContext))}shape(t,e,i){const s=this._fontMapping[e.font]??e.font,n=s!==e.font?{...e,font:s}:e;return this.pushEntity(new me(t,n,this._subEntityTraits,this.styleContext))}image(t,e){const i={...this._subEntityTraits},s=this.styleContext,n=I.fromBlob(t,e,i,s).then(a=>this.pushEntity(a));return this._pendingImages.push(n.then(()=>{})),ge}async exportAsync(t){return await Promise.all(this._pendingImages),this.exportMarkup(!0,t)}export(t){return this.exportMarkup(!1,t)}resetCollected(){this._entities.length=0}exportMarkup(t,e){return t?this.exportMarkupCooperative(e):this.assembleMarkup(this.collectEntityParts(e))}collectEntityParts(t){const e=t??this._entities,i=[],s=[];for(const n of e){const a=n.renderSvg();a&&(i.push(a),s.push(n.box))}return{parts:i,boxes:s}}async exportMarkupCooperative(t){const e=t??this._entities,i=[],s=[],n=new Q(xe),a=()=>new Promise(o=>setTimeout(o,0));for(const o of e){const h=o.renderSvg();h&&(i.push(h),s.push(o.box)),await n.maybeYield(a)}return await a(),this.assembleMarkup({parts:i,boxes:s})}assembleMarkup(t){this._bbox=Tt(t.boxes);const e=t.parts.join(`
4
+ </g>`:e:""}get objectId(){return this._objectId}set objectId(t){this._objectId=t}get ownerId(){return this._ownerId}set ownerId(t){this._ownerId=t}get layerName(){return this._layerName}set layerName(t){this._layerName=t}get visible(){return this._visible}set visible(t){this._visible=t}get userData(){return this._userData}set userData(t){this._userData=t}applyMatrix(t){this._matrix?this._matrix=t.clone().multiply(this._matrix):this._matrix=t.clone(),this.transformBoxesRecursive(t)}transformBoxesRecursive(t){V.transformBox(this._box,t);for(const e of this._children)e.transformBoxesRecursive(t)}recomputeBoundingBox(){}highlight(){}unhighlight(){}fastDeepClone(){const t=new y;t._objectId=this._objectId,t._ownerId=this._ownerId,t._layerName=this._layerName,t._visible=this._visible,t._userData=this._userData,t._localSvg=this._localSvg,t._box.copy(this._box),this._matrix&&(t._matrix=this._matrix.clone()),this._basePoint&&(t._basePoint=this._basePoint.clone());for(const e of this._children)t._children.push(e.fastDeepClone());return t}addChild(t){t instanceof y&&(this._children.push(t),it(t.box)&&this._box.union(t.box))}}class g{static rgbToHex(t){const e=t>>16&255,i=t>>8&255,s=t&255;return`#${e.toString(16).padStart(2,"0")}${i.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`}static resolveRgb(t,e,i){return t.isBackgroundFill||i==="fill"&&t.color.isForeground&&this.isSolidBackgroundHatch(t)?e.backgroundColor:tt.fromBackgroundColor(e.backgroundColor).resolveSubEntityTraitsRgb(t)}static strokeAttributes(t,e){const i={stroke:this.rgbToHex(this.resolveRgb(t,e,"line")),fill:"none"};if(!e.showLineWeight)i["stroke-width"]="1",i["vector-effect"]="non-scaling-stroke";else{const a=this.resolveStrokeWidth(t.lineWeight);a!=null&&(i["stroke-width"]=String(a))}const s=this.resolveOpacity(t);s!=null&&s<1&&(i["stroke-opacity"]=String(s));const n=this.strokeDasharray(t,e);return n&&(i["stroke-dasharray"]=n),i}static fillAttributes(t,e){const i={fill:this.rgbToHex(this.resolveRgb(t,e,"fill")),stroke:"none"},s=this.resolveOpacity(t);return s!=null&&s<1&&(i["fill-opacity"]=String(s)),i}static textAttributes(t,e){const i={fill:this.rgbToHex(this.resolveRgb(t,e,"text")),stroke:"none"},s=this.resolveOpacity(t);return s!=null&&s<1&&(i["fill-opacity"]=String(s)),i}static pointAttributes(t,e){return this.textAttributes(t,e)}static formatAttributes(t){return Object.entries(t).map(([e,i])=>`${e}="${Ct(i)}"`).join(" ")}static tag(t,e,i){const s=this.formatAttributes(e);return i==null?`<${t} ${s}/>`:`<${t} ${s}>${i}</${t}>`}static isSolidBackgroundHatch(t){if((t.drawOrder??0)>=0)return!1;const e=t.fillType;return e.gradient?!1:!e.definitionLines||e.definitionLines.length===0}static resolveStrokeWidth(t){return t<0?null:Math.max(.01,t/100)}static resolveOpacity(t){const e=t.transparency;if(!(e!=null&&e.isByAlpha))return null;const i=e.alpha;return i==null||Number.isNaN(i)||i<=0?null:Math.min(1,Math.max(0,i/255))}static strokeDasharray(t,e){const i=t.lineType.pattern;if(!i||i.length===0)return;const s=e.ltscale*e.celtscale*t.lineTypeScale,n=this.patternToDashSegments(i,s);if(n.length!==0)return n.join(" ")}static patternToDashSegments(t,e){const i=[];for(const s of t){let n=s.elementLength;n<0&&s.elementTypeFlag!==0&&(n=Math.abs(n)),n*=e,n===0&&(n=.5*e),i.push(Math.abs(n))}return i}}function Ct(r){return r.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;")}class At extends y{constructor(t,e,i,s){super();const n=t.tessellate(s);let a="";for(const o of n){if(o.length===0)continue;const[h,...l]=o;a+=`M${h.x},${h.y}`;for(const c of l)a+=` L${c.x},${c.y}`;a+=" Z";for(const c of o)this._box.expandByPoint(c)}if(a){const o={d:a,"fill-rule":"evenodd",...g.fillAttributes(e,i)};this.svg=g.tag("path",o)}}}class kt extends y{constructor(t,e,i,s){super();const n=t.tessellate(s),a=n.reduce((o,h,l)=>(o+=l===0?"M":"L",o+=`${h.x},${h.y}`,o),"");if(a){const o={d:a,...g.strokeAttributes(e,i)};this.svg=g.tag("path",o)}for(const o of n)this._box.expandByPoint(o)}}class Ft extends y{constructor(t,e,i,s){super();const n=t.tessellate(s),a=n.reduce((o,h,l)=>(o+=l===0?"M":"L",o+=`${h.x},${h.y}`,o),"");if(a){const o={d:a,...g.strokeAttributes(e,i)};this.svg=g.tag("path",o)}for(const o of n)this._box.expandByPoint(o)}}class F{static isSafeEmbeddedUrl(t){const e=t.trim();return e.startsWith("data:")||e.startsWith("#")}static sanitizeExternalReferences(t){return t.replace(/<(?:image|use)\b[^>]*\s(?:xlink:)?href="(?!data:|#)[^"]*"[^>]*\/?>\s*/gi,"")}static stripInvalidXmlChars(t){return t.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\uFFFE\uFFFF]/g,"")}static escapeXml(t){return F.stripInvalidXmlChars(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}static async rasterizeSvgDataUrl(t){return typeof document>"u"?t:new Promise((e,i)=>{const s=new Image;s.onload=()=>{const n=Math.max(1,s.naturalWidth||1),a=Math.max(1,s.naturalHeight||1),o=document.createElement("canvas");o.width=n,o.height=a;const h=o.getContext("2d");if(!h){i(new Error("Canvas 2D context unavailable"));return}h.drawImage(s,0,0,n,a),e(o.toDataURL("image/png"))},s.onerror=()=>i(new Error("Failed to rasterize embedded SVG image")),s.src=t})}}class Pt extends y{constructor(t){super();for(const e of t)this.addChild(e)}}class X extends y{constructor(t,e,i,s){super();const{boundary:n}=e;if(n.length<2||!F.isSafeEmbeddedUrl(t))return;let a=1/0,o=1/0,h=-1/0,l=-1/0;for(const x of n)x.x<a&&(a=x.x),x.y<o&&(o=x.y),x.x>h&&(h=x.x),x.y>l&&(l=x.y),this._box.expandByPoint(x);const c=h-a,m=l-o,f=Yt(t);this._localSvg=`<image x="${a}" y="${o}" width="${c}" height="${m}" href="${f}" xlink:href="${f}" transform="scale(1,-1) translate(0,${-(o*2+m)})"/>`}static async fromBlob(t,e,i,s){let n=await Rt(t);if(t.type==="image/svg+xml"||n.startsWith("data:image/svg+xml"))try{n=await F.rasterizeSvgDataUrl(n)}catch{return new X("",e,i,s)}return new X(n,e,i,s)}}function Rt(r){return new Promise((t,e)=>{const i=new FileReader;i.onload=()=>t(i.result),i.onerror=e,i.readAsDataURL(r)})}function Yt(r){return r.replace(/&/g,"&amp;").replace(/"/g,"&quot;")}class Bt extends y{constructor(t,e,i){super();const s=t.reduce((n,a,o)=>(n+=o===0?"M":"L",n+=a.x+","+a.y,this.box.expandByPoint(a),n),"");if(s){const n={d:s,...g.strokeAttributes(e,i)};this.svg=g.tag("path",n)}}}class Et extends y{constructor(t,e,i,s,n){super();const a=g.strokeAttributes(s,n),o=[];for(let h=0;h+1<i.length;h+=2){const l=i[h]*e,c=i[h+1]*e,m=t[l],f=t[l+1],x=t[c],u=t[c+1];o.push(g.tag("line",{x1:String(m),y1:String(f),x2:String(x),y2:String(u),...a})),this._box.expandByPoint({x:m,y:f}),this._box.expandByPoint({x,y:u})}this.svg=o.join(`
5
+ `)}}const st=/\.(shx|ttf|otf|woff2?)$/i,Xt={txt:"Lucida Console, Courier New, monospace",simplex:"Arial, Helvetica, sans-serif",romans:'"Times New Roman", Times, serif',romanc:'"Times New Roman", Times, serif',romand:'"Times New Roman", Times, serif',romant:'"Times New Roman", Times, serif',italic:'"Times New Roman", Times, serif',italict:'"Times New Roman", Times, serif',italicc:'"Times New Roman", Times, serif',monotxt:'"Courier New", Courier, monospace',isocp:"Arial, Helvetica, sans-serif",isocp2:"Arial, Helvetica, sans-serif",isocp3:"Arial, Helvetica, sans-serif",isoct:"Arial, Helvetica, sans-serif",isoct2:"Arial, Helvetica, sans-serif",isoct3:"Arial, Helvetica, sans-serif",gdt:"Arial, Helvetica, sans-serif",greekc:'"Times New Roman", Times, serif',greeks:'"Times New Roman", Times, serif',simsun:'SimSun, "Songti SC", STSong, serif',simhei:'SimHei, "Heiti SC", STHeiti, sans-serif',simkai:'KaiTi, "Kaiti SC", STKaiti, serif',simfang:'FangSong, "Fangsong SC", STFangsong, serif',msyh:'"Microsoft YaHei", "PingFang SC", sans-serif',dengxian:'DengXian, "Microsoft YaHei", sans-serif',arial:"Arial, Helvetica, sans-serif","times new roman":'"Times New Roman", Times, serif',courier:'"Courier New", Courier, monospace',tahoma:"Tahoma, Geneva, sans-serif",verdana:"Verdana, Geneva, sans-serif"},It={arial:"1",romans:"1.05",txt:"1.1",simplex:"1.05",isocp:"1"};let U={},j={};function z(r){return r.trim().replace(st,"").toLowerCase()}function I(r,t){const e=(t==null?void 0:t.trim())||"sans-serif";if(!(r!=null&&r.trim()))return I(e,"sans-serif");const i=z(r);return(U[i]??Xt[i]??U[r.toLowerCase()])||(st.test(r)?e:r.includes(",")?r:`"${r}", ${e}`)}function Nt(r){if(!(r!=null&&r.trim()))return 1;const t=z(r),e=j[t]??It[t]??j[r.toLowerCase()];if(e==null)return 1;const i=Number(e);return Number.isFinite(i)&&i>0?i:1}function $(r){return z(r)}const Ht=1,q=5/3,zt=.3,$t=.6,Ot=1,Wt=4,Dt=.7;function Gt(r){if(!r||r.length!==1)return!1;const t=r.codePointAt(0)??0;return t>=4352&&t<=4607||t>=11904&&t<=40959||t>=63744&&t<=64255||t>=65040&&t<=65135||t>=65280&&t<=65376||t>=131072&&t<=196607}function Vt(r,t){const e=typeof t.lineSpaceFactor=="number"?t.lineSpaceFactor:Ht,i=r*Math.max(e,0)*q;return t.lineSpaceStyle===2?i:Math.max(i,r*q)}function Ut(r){return!Number.isFinite(r.width)||r.width<=0?null:r.width}function jt(r){switch(r){case B.RIGHT_TO_LEFT:return 1;case B.TOP_TO_BOTTOM:return 2;case B.BOTTOM_TO_TOP:return 3;case B.LEFT_TO_RIGHT:case B.BY_STYLE:default:return 0}}function qt(r){const t=r.directionVector;return t&&(t.x!==0||t.y!==0)?Math.atan2(t.y,t.x):r.rotation??0}function Kt(r){const t=r.width;if(!Number.isFinite(t)||t<=0||r.attachmentPoint==null)return w.LEFT;switch(r.attachmentPoint){case p.TopCenter:case p.MiddleCenter:case p.BottomCenter:case p.BaselineCenter:return w.CENTER;case p.TopRight:case p.MiddleRight:case p.BottomRight:case p.BaselineRight:return w.RIGHT;default:return w.LEFT}}function Jt(r){return{minX:r.minX,maxX:r.maxX,minY:-r.maxY,maxY:-r.minY,baselineY:-r.firstBaselineY}}function Zt(r,t){const e=Jt(t),i=(e.minX+e.maxX)/2,s=(e.minY+e.maxY)/2;switch(r){case p.TopCenter:return{x:-i,y:-e.maxY};case p.TopRight:return{x:-e.maxX,y:-e.maxY};case p.MiddleLeft:return{x:-e.minX,y:-s};case p.MiddleCenter:return{x:-i,y:-s};case p.MiddleRight:return{x:-e.maxX,y:-s};case p.BottomLeft:return{x:-e.minX,y:-e.minY};case p.BottomCenter:return{x:-i,y:-e.minY};case p.BottomRight:return{x:-e.maxX,y:-e.minY};case p.BaselineCenter:return{x:-i,y:-e.baselineY};case p.BaselineRight:return{x:-e.maxX,y:-e.baselineY};case p.BaselineLeft:return{x:-e.minX,y:-e.baselineY};case p.TopLeft:default:return{x:-e.minX,y:-e.maxY}}}function Qt(r,t,e,i){const s=new L,{text:n,height:a,position:o}=r;if(!n||a<=0)return{localSvg:"",box:s};const h=a,l=Vt(h,r),c=Ut(r),m=jt(r.drawingDirection),f=I(t.extendedFont||t.font,"sans-serif"),x=typeof r.widthFactor=="number"&&r.widthFactor>0?r.widthFactor:typeof t.widthFactor=="number"&&t.widthFactor>0?t.widthFactor:1,u=new bt;u.capHeight={value:h,isRelative:!1},u.widthFactor={value:x,isRelative:!1},u.paragraph.align=Kt(r),typeof t.obliqueAngle=="number"&&(u.oblique=t.obliqueAngle),u.fontFace.family=$(t.extendedFont||t.font||f);const d=new vt(n,u,{resetParagraphParameters:!1,yieldPropertyCommands:!0}),S=new ee(h,l,c,m,f,x,t,e,i,u);for(const nt of d.parse())S.consume(nt);S.finish();const M=S.bounds,P=c!=null?{...M,minX:0,maxX:c}:M,b=Zt(r.attachmentPoint,P),{x:_,y:v}=o,C=qt(r)*180/Math.PI,A=[`translate(${_},${v})`];C!==0&&A.push(`rotate(${-C})`),A.push(`translate(${b.x},${b.y})`),A.push("scale(1,-1)");const R=[S.runMarkup,S.decorationMarkup].join(""),Y=g.tag("g",{transform:A.join(" ")},R);return te(s,M,b,_,v),{localSvg:Y,box:s}}function te(r,t,e,i,s){if(t.maxX<=t.minX&&t.maxY<=t.minY)return;const n=[{x:t.minX+e.x,y:e.y-t.minY},{x:t.maxX+e.x,y:e.y-t.minY},{x:t.minX+e.x,y:e.y-t.maxY},{x:t.maxX+e.x,y:e.y-t.maxY}];for(const a of n)r.expandByPoint({x:i+a.x,y:s+a.y})}class ee{constructor(t,e,i,s,n,a,o,h,l,c){this.baseHeight=t,this.lineAdvance=e,this.wrapWidth=i,this.flowMode=s,this.defaultFont=n,this.traits=h,this.ctx=l,this.x=0,this.y=0,this.lineStartX=0,this.columnStartY=0,this.columnAdvance=0,this.isLineStart=!0,this.firstLineOfParagraph=!0,this.currentLine=null,this.lines=[],this.stackBars=[],this.decorationLines=[],this.activeLineIndex=0,this.minX=0,this.maxX=0,this.minY=0,this.maxY=0,this.firstBaselineY=0,this.hasContent=!1,this.heightScale=1,this.tracking=1,this.oblique=0,this.bold=!1,this.italic=!1,this.underline=!1,this.overline=!1,this.strikeThrough=!1,this.lineAlign=E.BOTTOM,this.prevCtx=c,this.hScale=a,this.oblique=typeof o.obliqueAngle=="number"?o.obliqueAngle:0,this.fontFamily=I(c.fontFace.family,n),this.fill=K(c.color,h,l),this.resetParagraphPosition(c)}get runMarkup(){let t="";for(const e of this.lines)for(const i of e.spans)t+=this.emitRunGroup(i);return t}get decorationMarkup(){return[...this.stackBars,...this.decorationLines].map(t=>g.tag("line",{x1:String(t.x1),y1:String(t.y1),x2:String(t.x2),y2:String(t.y2),stroke:t.stroke,"stroke-width":String(Math.max(this.baseHeight*.05,.05)),"stroke-linecap":"butt"})).join("")}get bounds(){return{minX:this.minX,maxX:this.maxX,minY:this.minY,maxY:this.maxY,firstBaselineY:this.firstBaselineY}}consume(t){switch(this.applyCtx(t.ctx),t.type){case T.WORD:this.emitText(String(t.data??""),t.ctx);break;case T.SPACE:this.emitSpace(t.ctx);break;case T.NBSP:this.emitText(" ",t.ctx);break;case T.TABULATOR:this.advanceToTab(t.ctx);break;case T.NEW_PARAGRAPH:this.newParagraph(t.ctx);break;case T.NEW_COLUMN:this.newColumn(t.ctx);break;case T.WRAP_AT_DIMLINE:this.wrapLine(t.ctx);break;case T.PROPERTIES_CHANGED:this.applyPropertyChange(t.data);break;case T.STACK:Array.isArray(t.data)&&t.data.length===3&&this.emitStack(t.data,t.ctx);break}}finish(){this.finalizeCurrentLine(),this.applyVerticalLineAlignment(),this.applyLineAlignment(),this.recomputeBoundsFromLines(),this.emitDecorationLines()}applyCtx(t){const e=t.capHeight;(e.value!==this.prevCtx.capHeight.value||e.isRelative!==this.prevCtx.capHeight.isRelative)&&(e.isRelative?this.heightScale*=e.value:this.heightBase=e.value);const i=t.widthFactor;(i.value!==this.prevCtx.widthFactor.value||i.isRelative!==this.prevCtx.widthFactor.isRelative)&&(this.hScale=i.isRelative?this.hScale*i.value:i.value);const s=t.charTrackingFactor;(s.value!==this.prevCtx.charTrackingFactor.value||s.isRelative!==this.prevCtx.charTrackingFactor.isRelative)&&(this.tracking=s.isRelative?s.value+1:s.value),t.oblique!==this.prevCtx.oblique&&(this.oblique=t.oblique),JSON.stringify(t.fontFace)!==JSON.stringify(this.prevCtx.fontFace)&&this.applyFontFaceChange(t.fontFace),(t.color.aci!==this.prevCtx.color.aci||t.color.rgbValue!==this.prevCtx.color.rgbValue||t.color.isRgb!==this.prevCtx.color.isRgb)&&(this.fill=K(t.color,this.traits,this.ctx)),this.underline=t.underline,this.overline=t.overline,this.strikeThrough=t.strikeThrough,this.lineAlign=t.align,this.prevCtx=t}currentStyle(){const t=this.prevCtx.fontFace.family||this.defaultFont;return{size:(this.heightBase??this.baseHeight)*this.heightScale*Nt(t),hScale:this.hScale,tracking:this.tracking,oblique:this.oblique,fontFamily:this.fontFamily,bold:this.bold,italic:this.italic,fill:this.fill,underline:this.underline,overline:this.overline,strikeThrough:this.strikeThrough,align:this.lineAlign}}applyPropertyChange(t){var e,i;if(((e=t.changes.paragraph)==null?void 0:e.align)!=null&&t.changes.paragraph.align!==w.DEFAULT&&this.currentLine&&(this.currentLine.paragraphAlign=t.changes.paragraph.align),t.command==="f"||t.command==="F")this.applyFontFaceChange(t.changes.fontFace);else if(t.command==="p"&&((i=t.changes.paragraph)==null?void 0:i.indent)!=null&&this.firstLineOfParagraph){const s=t.changes.paragraph.indent*this.baseHeight;this.isHorizontalRtl()?this.x-=s:this.isVertical()||(this.x+=s)}}applyFontFaceChange(t){if(t){if(t.family){const e=$(t.family);this.fontFamily=I(e,this.defaultFont)}this.applyFontFaceWeightAndStyle(t)}}applyFontFaceWeightAndStyle(t){t&&(this.bold=(t.weight??400)>=700,this.italic=t.style==="Italic")}applyVerticalLineAlignment(){for(const t of this.lines){if(t.spans.length===0)continue;let e=0;for(const i of t.spans)e=Math.max(e,i.style.size);if(!(e<=0))for(const i of t.spans){const s=i.style.size;let n=0;switch(i.style.align){case E.TOP:n=s-e;break;case E.MIDDLE:n=(s-e)/2;break;case E.BOTTOM:default:n=0;break}i.y+=n}}}applyLineAlignment(){var t,e;if(this.wrapWidth!=null)for(let i=0;i<this.lines.length;i++){const s=this.lines[i];if(s.maxX-s.minX<=0)continue;const n=((t=s.spans[0])==null?void 0:t.paragraphLeft)??0,a=((e=s.spans[0])==null?void 0:e.paragraphRight)??0,o=this.wrapWidth-n-a;let h=0;switch(s.paragraphAlign){case w.CENTER:h=s.columnLeft+o/2-(s.minX+s.maxX)/2;break;case w.RIGHT:h=s.columnLeft+o-s.maxX;break;case w.JUSTIFIED:case w.DISTRIBUTED:case w.LEFT:case w.DEFAULT:default:h=0;break}if(h!==0){for(const l of s.spans)l.x+=h;s.minX+=h,s.maxX+=h;for(const l of this.stackBars)l.lineIndex===i&&(l.x1+=h,l.x2+=h)}}}recomputeBoundsFromLines(){this.minX=0,this.maxX=0,this.minY=0,this.maxY=0,this.hasContent=!1;for(const t of this.lines)for(const e of t.spans)this.includeSpanBounds(e)}emitDecorationLines(){this.decorationLines.length=0;for(let t=0;t<this.lines.length;t++){const e=this.lines[t];for(const i of e.spans)this.pushRunDecorations(i,t)}}pushRunDecorations(t,e){const{style:i,advance:s}=t;if(s<=0)return;const n=this.isHorizontalRtl()?t.x-s:t.x,a=n+s,o=i.fill,h=i.size;i.underline&&this.decorationLines.push({x1:n,y1:t.y+h*.12,x2:a,y2:t.y+h*.12,stroke:o,lineIndex:e}),i.overline&&this.decorationLines.push({x1:n,y1:t.y-h*.95,x2:a,y2:t.y-h*.95,stroke:o,lineIndex:e}),i.strikeThrough&&this.decorationLines.push({x1:n,y1:t.y-h*.4,x2:a,y2:t.y-h*.4,stroke:o,lineIndex:e})}emitRunGroup(t){const{style:e}=t,i=[`translate(${this.isHorizontalRtl()?t.x-t.advance:t.x},${t.y})`];e.hScale!==1&&i.push(`scale(${e.hScale},1)`),e.oblique!==0&&i.push(`skewX(${-e.oblique})`);const s={"font-size":String(e.size),"font-family":e.fontFamily,fill:e.fill};e.bold&&(s["font-weight"]="700"),e.italic&&(s["font-style"]="italic");const n=g.tag("text",s,ie(t.text));return g.tag("g",{transform:i.join(" ")},n)}emitSpace(t){const e=this.currentStyle(),i=this.runAdvance(" ",e);this.isLineStart||this.isHorizontal()&&(this.ensureFits(i,t),this.isLineStart)||this.advancePosition(i,e.size)}emitText(t,e,i){if(!t)return;const s=i??this.currentStyle();if(this.isVertical()){for(const a of t)this.emitTextRun(a,e,s);return}if(this.wrapWidth!=null){const a=this.runAdvance(t,s);!this.isLineStart&&a>0&&this.penOffset(e)+a>this.maxLineWidth(e)&&this.wrapLine(e)}if(s.tracking!==1){for(const a of t)this.emitTextRun(a,e,s);return}if(this.wrapWidth==null){this.emitTextRun(t,e,s);return}let n="";for(const a of t){if(n.length>0){const o=this.runAdvance(n+a,s);this.penOffset(e)+o>this.maxLineWidth(e)&&(this.emitTextRun(n,e,s),n="",this.wrapLine(e))}n+=a}n&&this.emitTextRun(n,e,s)}emitTextRun(t,e,i){var s;if(!t)return;const n=i??this.currentStyle(),a=this.runAdvance(t,n),o=this.isVertical()?n.size:a;this.ensureFits(o,e);const h=this.currentPosition(),l={text:t,x:h.x,y:h.y,advance:a,style:{...n},paragraphLeft:this.paragraphLeft(e),paragraphRight:this.rightMargin(e)};(s=this.currentLine)==null||s.spans.push(l),this.includeSpanBounds(l),this.advancePosition(a,n.size),this.firstLineOfParagraph=!1}emitStack(t,e){const[i,s,n]=t,a=this.currentPosition(),o=this.isLineStart,h=this.currentStyle(),l=h.size,c={...h,size:l*Dt};if(n==="^"){if(i&&!s){this.setPosition(a.x,a.y-l*.35),this.isLineStart=!0,this.emitText(i,e,c);const b=this.measureHorizontalSpan(a,this.currentPosition());this.setPosition(a.x+b,a.y)}else if(!i&&s){this.setPosition(a.x,a.y+l*.2),this.isLineStart=!0,this.emitText(s,e,c);const b=this.measureHorizontalSpan(a,this.currentPosition());this.setPosition(a.x+b,a.y)}else if(i&&s){const b=this.runAdvance(i,c),_=this.runAdvance(s,c),v=Math.max(b,_);this.setPosition(a.x+(v-b)/2,a.y-l*.35),this.isLineStart=!0,this.emitText(i,e,c),this.setPosition(a.x+(v-_)/2,a.y+l*.2),this.isLineStart=!0,this.emitText(s,e,c);const C=this.isHorizontalRtl()?a.x-v:a.x+v;this.setPosition(C,a.y)}this.isLineStart=o;return}const m=this.runAdvance(i,c),f=this.runAdvance(s,c),x=Math.max(m,f),u=(x-m)/2,d=(x-f)/2,S=h.fill;this.setPosition(a.x+u,a.y-l*.35),this.isLineStart=!0,this.emitText(i,e,c),this.setPosition(a.x+d,a.y+l*.2),this.isLineStart=!0,this.emitText(s,e,c);const M=a.y-l*.05+this.baseHeight*zt;this.stackBars.push({x1:a.x,y1:M,x2:a.x+x,y2:M,stroke:S,lineIndex:this.activeLineIndex});const P=this.isHorizontalRtl()?a.x-x:a.x+x;this.setPosition(P,a.y),this.isLineStart=o}newParagraph(t){if(this.finalizeCurrentLine(),this.isVertical()){this.newColumn(t);return}this.y+=this.lineAdvance,this.columnStartY=this.y,this.resetParagraphPosition(t)}wrapLine(t){if(this.finalizeCurrentLine(),this.isVertical()){this.newColumn(t);return}this.y+=this.lineAdvance,this.columnStartY=this.y,this.resetLinePosition(t)}newColumn(t){if(this.finalizeCurrentLine(),this.isVertical()){this.x+=this.columnAdvance>0?this.columnAdvance:this.baseHeight,this.columnAdvance=0,this.isVerticalTtb()&&(this.columnStartY=0),this.resetParagraphPosition(t);return}this.x+=this.wrapWidth??this.baseHeight*4,this.resetParagraphPosition(t)}finalizeCurrentLine(){this.currentLine&&this.currentLine.spans.length>0&&(this.lines.push(this.currentLine),this.activeLineIndex=this.lines.length),this.currentLine=null}resetParagraphPosition(t){this.firstLineOfParagraph=!0,this.resetLinePosition(t)}resetLinePosition(t){const e=this.paragraphLeft(t),i=this.firstLineOfParagraph?this.firstLineIndent(t):0,s=this.lineLimits(t);this.isHorizontalRtl()?(this.x=s.right-i,this.y=this.columnStartY):this.isVerticalTtb()?(this.x=e,this.y=this.columnStartY+i):this.isVerticalBtt()?(this.x=e,this.y=(this.wrapWidth!=null?this.wrapWidth:this.baseHeight*10)-i,this.columnStartY=this.y):(this.x=e+i,this.y=this.columnStartY),this.lineStartX=e,this.isLineStart=!0,this.currentLine={spans:[],minX:this.x,maxX:this.x,minY:this.y,maxY:this.y,baselineY:this.y,columnLeft:e,paragraphAlign:t.paragraph.align}}wouldOverflow(t,e){if(this.wrapWidth==null||t<=0||this.isLineStart)return!1;if(this.isHorizontal())return this.penOffset(e)+t>this.maxLineWidth(e);const i=this.verticalLimits(e);return this.isVerticalTtb()?this.y+t>i.bottom:this.y-t<i.top}penOffset(t){return this.isHorizontalRtl()?this.lineLimits(t).right-this.x:this.x-this.paragraphLeft(t)}maxLineWidth(t){return this.wrapWidth==null?Number.POSITIVE_INFINITY:this.wrapWidth-this.paragraphLeft(t)-this.rightMargin(t)}ensureFits(t,e){this.wrapWidth!=null&&this.isHorizontal()&&!this.isLineStart&&this.penOffset(e)>this.maxLineWidth(e)&&this.wrapLine(e),this.wouldOverflow(t,e)&&this.wrapLine(e)}advancePosition(t,e){this.isHorizontalRtl()?this.x-=t:this.isVerticalTtb()?this.y+=e:this.isVerticalBtt()?this.y-=e:this.x+=t,this.isLineStart=!1,this.columnAdvance=Math.max(this.columnAdvance,t)}advanceToTab(t){const e=this.baseHeight*Wt,i=t.paragraph.tabs,s=this.currentStyle();if(i.length===0){const n=this.isHorizontalRtl()?Math.floor(this.x/e)*e:Math.ceil((this.x+1)/e)*e,a=this.isHorizontalRtl()?this.x-n:n-this.x;this.advancePosition(Math.max(0,a),s.size);return}for(const n of i){const a=this.lineStartX+(typeof n=="number"?n*this.baseHeight:parseFloat(String(n))*this.baseHeight);if(this.isHorizontalRtl()){if(!Number.isNaN(a)&&a<this.x){this.advancePosition(this.x-a,s.size);return}}else if(!Number.isNaN(a)&&a>this.x){this.advancePosition(a-this.x,s.size);return}}this.advancePosition(e,s.size)}lineLimits(t){const e=this.paragraphLeft(t),i=t.paragraph.right*this.baseHeight,s=this.wrapWidth!=null?e+this.wrapWidth-i:Number.POSITIVE_INFINITY;return{left:e,right:s}}verticalLimits(t){if(this.isVerticalBtt()){const s=this.columnStartY-t.paragraph.right*this.baseHeight;return{top:this.wrapWidth!=null?this.columnStartY-this.wrapWidth+this.firstLineIndent(t):Number.NEGATIVE_INFINITY,bottom:s}}const e=this.columnStartY+this.firstLineIndent(t),i=this.wrapWidth!=null?this.columnStartY+this.wrapWidth-t.paragraph.right*this.baseHeight:Number.POSITIVE_INFINITY;return{top:e,bottom:i}}currentPosition(){return{x:this.x,y:this.y}}setPosition(t,e){this.x=t,this.y=e}includeSpanBounds(t){const e=t.advance,i=this.isHorizontalRtl()?t.x-e:t.x,s=this.isHorizontalRtl()?t.x:t.x+e,n=t.y-t.style.size,a=t.y;this.hasContent?(this.minX=Math.min(this.minX,i),this.maxX=Math.max(this.maxX,s),this.minY=Math.min(this.minY,n),this.maxY=Math.max(this.maxY,a)):(this.minX=i,this.maxX=s,this.minY=n,this.maxY=a,this.firstBaselineY=t.y,this.hasContent=!0),this.currentLine&&(this.currentLine.minX=Math.min(this.currentLine.minX,i),this.currentLine.maxX=Math.max(this.currentLine.maxX,s),this.currentLine.minY=Math.min(this.currentLine.minY,n),this.currentLine.maxY=Math.max(this.currentLine.maxY,a))}measureHorizontalSpan(t,e){return Math.abs(e.x-t.x)}runAdvance(t,e){let i=0,s=0;for(const a of t){const o=Gt(a)?Ot:$t;i+=e.size*o,s+=1}const n=i*e.hScale;return e.tracking===1||s===0?n:n+s*(e.tracking-1)*e.size*e.hScale}paragraphLeft(t){return t.paragraph.left*this.baseHeight}firstLineIndent(t){return t.paragraph.indent*this.baseHeight}rightMargin(t){return((t==null?void 0:t.paragraph.right)??0)*this.baseHeight}isHorizontal(){return this.flowMode===0||this.flowMode===1}isHorizontalRtl(){return this.flowMode===1}isVertical(){return this.flowMode===2||this.flowMode===3}isVerticalTtb(){return this.flowMode===2}isVerticalBtt(){return this.flowMode===3}}function K(r,t,e){if(r.isRgb&&r.rgbValue!=null)return g.rgbToHex(r.rgbValue);if(r.aci===256||r.aci==null||r.aci===0)return g.rgbToHex(g.resolveRgb(t,e,"text"));const i=new et;i.colorIndex=r.aci;const s=i.RGB;return typeof s=="number"?g.rgbToHex(s):g.rgbToHex(g.resolveRgb(t,e,"text"))}function ie(r){return F.escapeXml(r)}class se extends y{constructor(t,e,i,s){super();const n=Qt(t,e,i,s);this._localSvg=n.localSvg,this._box=n.box}}const ne=.5;class ae extends y{constructor(t,e,i,s){super();const n=e.displaySize>0?e.displaySize/2:ne,a={cx:String(t.x),cy:String(t.y),r:String(n),...g.pointAttributes(i,s)};this.svg=g.tag("circle",a),this._box.expandByPoint(t)}}function re(r,t,e,i){const s=new L,n={localSvg:"",box:s},a=r.size,o=r.position;if(!o||!(a>0))return n;const h=ce(r,t);if(!(h!=null&&h.length))return n;const l=r.widthFactor??t.widthFactor??1,c=(t.obliqueAngle??0)*Math.PI/180,m=c!==0?Math.tan(c):0,f=oe(h,l,m);if(f.length===0)return n;const x=he(f),u=le(r.rotation,r.directionVector),d=Math.cos(u),S=Math.sin(u),M=g.strokeAttributes(e,i),P=[];for(const b of f){let _="";for(let v=0;v<b.length;v++){const C=b[v].x+x.x,A=b[v].y+x.y,R=C*d-A*S+o.x,Y=C*S+A*d+o.y;_+=v===0?`M${R},${Y}`:`L${R},${Y}`,s.expandByPoint({x:R,y:Y})}_&&P.push(g.tag("path",{d:_,...M}))}return{localSvg:P.join(`
6
+ `),box:s}}function oe(r,t,e){const i=[];for(const s of r){if(s.length<2)continue;const n=[];for(const a of s){let o=a.x*t;const h=a.y;e!==0&&(o+=e*h),n.push({x:o,y:h})}i.push(n)}return i}function he(r){let t=1/0,e=1/0;for(const i of r)for(const s of i)t=Math.min(t,s.x),e=Math.min(e,s.y);return{x:Number.isFinite(t)?-t:0,y:Number.isFinite(e)?-e:0}}function le(r,t){if(!t)return r??0;const e=t.x??0,i=t.y??0,s=t.z??1,n=Math.hypot(e,i,s);if(n<1e-12)return r??0;const a=e/n,o=i/n,h=s/n;return Math.hypot(a,o)<1e-10&&h>0?r??0:Math.acos(Math.min(1,Math.max(-1,h)))}function ce(r,t){var e;const i=$(t.font),s=r.size,n=(e=r.name)==null?void 0:e.trim(),a=r.shapeNumber,o=wt.instance,h=n&&o.getShapeByName(n,i,s)||(a!=null&&a!==0?o.getShapeByCode(a,i,s):void 0);if(h)return ue(h);const l=o.getFontByName(i,!1);if((l==null?void 0:l.type)!=="shx")return;const c=new St(l.data);try{const m=n&&c.getShapeByName(n,s)||(a!=null&&a!==0?c.getCharShape(a,s):void 0),f=m==null?void 0:m.polylines;return f!=null&&f.some(x=>x.length>=2)?f:void 0}finally{c.release()}}function ue(r){var t;const e=(t=r.shape)==null?void 0:t.polylines;if(e!=null&&e.some(i=>i.length>=2))return e}class me extends y{constructor(t,e,i,s){super();const n=re(t,e,i,s);this._localSvg=n.localSvg,this._box=n.box}}const xe=200;class J{constructor(){this._ltscale=1,this._celtscale=1,this._currentBackgroundColor=0,this._foregroundColor=0,this._showLineWeight=!1,this._entities=[],this._bbox=new L,this._fontMapping={},this._pendingImages=[],this._context=tt.fromBackgroundColor(this._currentBackgroundColor),this._subEntityTraits={color:new et,lineType:{type:"ByLayer",name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0},lineTypeScale:1,lineWeight:mt.ByLayer,fillType:{solidFill:!0,patternAngle:0,definitionLines:[]},transparency:new ut,thickness:0,layer:"0",drawOrder:0}}static prepareExport(){xt.instance.clear()}get subEntityTraits(){return this._subEntityTraits}get context(){return this._context}setFontMapping(t){this._fontMapping=t}set ltscale(t){this._ltscale=t}set celtscale(t){this._celtscale=t}get currentBackgroundColor(){return this._currentBackgroundColor}set currentBackgroundColor(t){this._currentBackgroundColor=t,this._context.backgroundIsDark=!gt(t),this._context.foregroundOnDark=ft,this._context.foregroundOnLight=pt}changeForeground(t){this._foregroundColor=t}get showLineWeight(){return this._showLineWeight}set showLineWeight(t){this._showLineWeight=t}get styleContext(){return{ltscale:this._ltscale,celtscale:this._celtscale,backgroundColor:this._currentBackgroundColor,foregroundColor:this._foregroundColor,showLineWeight:this._showLineWeight}}pushEntity(t){return this._entities.push(t),t}removeEntities(t){for(const e of t){const i=this._entities.indexOf(e);i>=0&&this._entities.splice(i,1)}}group(t){return this.removeEntities(t),this.pushEntity(new Pt(t))}point(t,e){return this.pushEntity(new ae(t,e,this._subEntityTraits,this.styleContext))}circularArc(t){return this.pushEntity(new kt(t,this._subEntityTraits,this.styleContext,H(this)))}ellipticalArc(t){return this.pushEntity(new Ft(t,this._subEntityTraits,this.styleContext,H(this)))}lines(t){return this.pushEntity(new Bt(t,this._subEntityTraits,this.styleContext))}lineSegments(t,e,i){return this.pushEntity(new Et(t,e,i,this._subEntityTraits,this.styleContext))}area(t){return this.pushEntity(new At(t,this._subEntityTraits,this.styleContext,H(this)))}offsetRing(t,e){const i=new dt;i.add(new O(t.map(a=>new W(a.x,a.y)),!0)),i.add(new O(e.map(a=>new W(a.x,a.y)),!0));const s=this.area(i),n=fe(t,e);return n?this.group([s,this.lines(n)]):s}mtext(t,e,i){const s=this._fontMapping[e.font]??e.font,n=s!==e.font?{...e,font:s}:e;return this.pushEntity(new se(t,n,this._subEntityTraits,this.styleContext))}shape(t,e,i){const s=this._fontMapping[e.font]??e.font,n=s!==e.font?{...e,font:s}:e;return this.pushEntity(new me(t,n,this._subEntityTraits,this.styleContext))}image(t,e){const i={...this._subEntityTraits},s=this.styleContext,n=X.fromBlob(t,e,i,s).then(a=>this.pushEntity(a));return this._pendingImages.push(n.then(()=>{})),ge}async exportAsync(t){return await Promise.all(this._pendingImages),this.exportMarkup(!0,t)}export(t){return this.exportMarkup(!1,t)}resetCollected(){this._entities.length=0}exportMarkup(t,e){return t?this.exportMarkupCooperative(e):this.assembleMarkup(this.collectEntityParts(e))}collectEntityParts(t){const e=t??this._entities,i=[],s=[];for(const n of e){const a=n.renderSvg();a&&(i.push(a),s.push(n.box))}return{parts:i,boxes:s}}async exportMarkupCooperative(t){const e=t??this._entities,i=[],s=[],n=new Q(xe),a=()=>new Promise(o=>setTimeout(o,0));for(const o of e){const h=o.renderSvg();h&&(i.push(h),s.push(o.box)),await n.maybeYield(a)}return await a(),this.assembleMarkup({parts:i,boxes:s})}assembleMarkup(t){this._bbox=Tt(t.boxes);const e=t.parts.join(`
7
7
  `),i=this._bbox.isEmpty()?0:Math.max(this._bbox.max.x-this._bbox.min.x,this._bbox.max.y-this._bbox.min.y)*.02,s=this._bbox.isEmpty()?{x:0,y:0,width:0,height:0}:{x:this._bbox.min.x-i,y:-(this._bbox.max.y+i),width:this._bbox.max.x-this._bbox.min.x+i*2,height:this._bbox.max.y-this._bbox.min.y+i*2},n=Math.max(s.width,1),a=Math.max(s.height,1),o=this.buildBackgroundRect({...s,width:n,height:a}),h=F.sanitizeExternalReferences(`<?xml version="1.0" encoding="UTF-8"?>
8
8
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"
9
9
  preserveAspectRatio="xMinYMin meet"
@@ -13,4 +13,4 @@ ${o}
13
13
  <g transform="matrix(1,0,0,-1,0,0)">
14
14
  ${e}
15
15
  </g>
16
- </svg>`);return F.stripInvalidXmlChars(h)}buildBackgroundRect(t){const e=g.rgbToHex(this._currentBackgroundColor),i=Math.max(t.width,1),s=Math.max(t.height,1);return` <rect x="${t.x}" y="${t.y}" width="${i}" height="${s}" fill="${e}"/>`}}const ge=new y;function fe(r,t){const e=Z(r),i=Z(t);if(e!==i||e<2)return null;const s=new Array(e+1);for(let a=0;a<e;a++){const o=r[a],h=t[a];s[a]={x:(o.x+h.x)*.5,y:(o.y+h.y)*.5,z:((o.z??0)+(h.z??0))*.5}}const n=s[0];return s[e]={x:n.x,y:n.y,z:n.z},s}function Z(r){const t=r.length;return t>1&&r[0].x===r[t-1].x&&r[0].y===r[t-1].y?t-1:t}const pe=200;class de{async convert(t){await ot.instance.withBusyIndicator(async()=>{await N(),J.prepareExport();const e=t.doc.database.tables.blockTable.modelSpace.newIterator(),i=new J;this.configureRenderer(i,t);const s=new Q(pe),n=()=>new Promise(l=>setTimeout(l,0)),a=[];for(const l of e){const c=l.worldDraw(i);c instanceof y&&a.push(c),await s.maybeYield(n)}await N();const o=await i.exportAsync(a);await N();const h=ht(t.doc.fileName||t.doc.docTitle,"svg");this.createFileAndDownloadIt(o,h)},lt.t("main.message.exportingSvg"))}configureRenderer(t,e){const i=e.doc.database;t.ltscale=i.ltscale,t.celtscale=i.celtscale,t.showLineWeight=!!i.lwdisplay,t.setFontMapping(ct.instance.fontMapping);const s=e.view,n=(s==null?void 0:s.backgroundColor)??16777215;t.currentBackgroundColor=n,t.changeForeground(n===0?16777215:0)}createFileAndDownloadIt(t,e){const i=new Blob([t],{type:"image/svg+xml;charset=utf-8"}),s=URL.createObjectURL(i),n=document.createElement("a");n.href=s,n.download=e,document.body.appendChild(n),n.click(),document.body.removeChild(n),window.setTimeout(()=>URL.revokeObjectURL(s),6e4)}}class ye extends rt{async execute(t){await new de().convert(t)}}const be="1.7.7",ve={version:be};class we{constructor(){this.name="SvgPlugin",this.version=ve.version,this.description="SVG export (csvg) command",this.registeredCommands=[]}onLoad(t,e){const i=at.SYSTEMT_COMMAND_GROUP_NAME;e.addCommand(i,"csvg","csvg",new ye),this.registeredCommands.push({group:i,name:"csvg"})}onUnload(t,e){for(const i of this.registeredCommands)e.removeCmd(i.group,i.name);this.registeredCommands=[]}}async function _e(){return new we}export{ye as AcApConvertToSvgCmd,de as AcApSvgConvertor,J as AcSvgRenderer,Me as SVG_PLUGIN_NAME,Ce as SVG_PLUGIN_TRIGGERS,_e as createSvgPlugin};
16
+ </svg>`);return F.stripInvalidXmlChars(h)}buildBackgroundRect(t){const e=g.rgbToHex(this._currentBackgroundColor),i=Math.max(t.width,1),s=Math.max(t.height,1);return` <rect x="${t.x}" y="${t.y}" width="${i}" height="${s}" fill="${e}"/>`}}const ge=new y;function fe(r,t){const e=Z(r),i=Z(t);if(e!==i||e<2)return null;const s=new Array(e+1);for(let a=0;a<e;a++){const o=r[a],h=t[a];s[a]={x:(o.x+h.x)*.5,y:(o.y+h.y)*.5,z:((o.z??0)+(h.z??0))*.5}}const n=s[0];return s[e]={x:n.x,y:n.y,z:n.z},s}function Z(r){const t=r.length;return t>1&&r[0].x===r[t-1].x&&r[0].y===r[t-1].y?t-1:t}const pe=200;class de{async convert(t){await ot.instance.withBusyIndicator(async()=>{await N(),J.prepareExport();const e=t.doc.database.tables.blockTable.modelSpace.newIterator(),i=new J;this.configureRenderer(i,t);const s=new Q(pe),n=()=>new Promise(l=>setTimeout(l,0)),a=[];for(const l of e){const c=l.worldDraw(i);c instanceof y&&a.push(c),await s.maybeYield(n)}await N();const o=await i.exportAsync(a);await N();const h=ht(t.doc.fileName||t.doc.docTitle,"svg");this.createFileAndDownloadIt(o,h)},lt.t("main.message.exportingSvg"))}configureRenderer(t,e){const i=e.doc.database;t.ltscale=i.ltscale,t.celtscale=i.celtscale,t.showLineWeight=!!i.lwdisplay,t.setFontMapping(ct.instance.fontMapping);const s=e.view,n=(s==null?void 0:s.backgroundColor)??16777215;t.currentBackgroundColor=n,t.changeForeground(n===0?16777215:0)}createFileAndDownloadIt(t,e){const i=new Blob([t],{type:"image/svg+xml;charset=utf-8"}),s=URL.createObjectURL(i),n=document.createElement("a");n.href=s,n.download=e,document.body.appendChild(n),n.click(),document.body.removeChild(n),window.setTimeout(()=>URL.revokeObjectURL(s),6e4)}}class ye extends rt{async execute(t){await new de().convert(t)}}const be="1.7.8-preview.0",ve={version:be};class we{constructor(){this.name="SvgPlugin",this.version=ve.version,this.description="SVG export (csvg) command",this.registeredCommands=[]}onLoad(t,e){const i=at.SYSTEMT_COMMAND_GROUP_NAME;e.addCommand(i,"csvg","csvg",new ye),this.registeredCommands.push({group:i,name:"csvg"})}onUnload(t,e){for(const i of this.registeredCommands)e.removeCmd(i.group,i.name);this.registeredCommands=[]}}async function _e(){return new we}export{ye as AcApConvertToSvgCmd,de as AcApSvgConvertor,J as AcSvgRenderer,Me as SVG_PLUGIN_NAME,Ce as SVG_PLUGIN_TRIGGERS,_e as createSvgPlugin};