@mlightcad/cad-simple-viewer-cli 1.7.8-preview.6 → 1.8.0-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.
package/README.md CHANGED
@@ -105,6 +105,21 @@ quit
105
105
 
106
106
  Useful commands (non-exhaustive): `zoom`, `pngout`, `cdxf`, `-chtml`, `chtml`, `cpdf`, `csvg`, `-layer`, `qnew`, `line`, `circle`, …
107
107
 
108
+ ### PDF export prompts (`-cpdf`)
109
+
110
+ `-cpdf` asks four questions, in order. An empty line accepts the default.
111
+
112
+ | Prompt | Keywords | Default |
113
+ |--------|----------|---------|
114
+ | Model space frame | `Extents` / `Display` | `Extents` |
115
+ | Export layouts | `Yes` / `No` | `Yes` |
116
+ | Text rendering | `Text` / `Vector` | `Text` |
117
+ | Color mode | `Color` / `Monochrome` | `Color` |
118
+
119
+ `Monochrome` writes white paper with black linework and text; solid fills print in grey. Scripts written before the color prompt existed should add a `Color` (or empty) line after the text-rendering answer.
120
+
121
+ For PDF export without a browser, see [`@mlightcad/cad-pdf-exporter`](../cad-pdf-exporter).
122
+
108
123
  Layer edits need `--mode write`. Export commands write files via browser download; the CLI captures them into `-o`.
109
124
 
110
125
  ## Sample scripts
@@ -117,6 +132,8 @@ After install, examples live under `node_modules/@mlightcad/cad-simple-viewer-cl
117
132
  | `export-html.scr` | Offline HTML (`-chtml`) |
118
133
  | `export-html-multi.scr` | Multi-file ACEX package zip (`-chtml` Multi) |
119
134
  | `export-html-multi-preview.scr` | Multi ACEX zip + zoom-extents JPEG preview (one run) |
135
+ | `export-pdf.scr` | Zoom extents → vector PDF in color, every layout (`-cpdf`) |
136
+ | `export-pdf-monochrome.scr` | Print-ready PDF: white paper, black linework and text, grey fills (`-cpdf` … `Monochrome`) |
120
137
  | `export-dxf.scr` | DXF download (`cdxf`) |
121
138
  | `create-drawing-dxf.scr` | Blank drawing + LINE → DXF (no `-i`) |
122
139
  | `create-shapes-dxf.scr` | Blank drawing + LINE + CIRCLE → DXF |
@@ -124,6 +141,7 @@ After install, examples live under `node_modules/@mlightcad/cad-simple-viewer-cl
124
141
  | `freeze-layer-png.scr` | `-layer` Off then PNG (`--mode write`; edit `LAYER_NAME`) |
125
142
  | `batch-export-png.mjs` | Scan a folder of drawings → PNG |
126
143
  | `batch-export-html.mjs` | Scan a folder → HTML |
144
+ | `batch-export-pdf.mjs` | Scan a folder → PDF (`--color-mode monochrome` for black and white) |
127
145
  | `batch-export-html-multi-preview.mjs` | Scan a folder → multi ACEX + preview, demo-drawings layout |
128
146
 
129
147
  Batch helpers (from your project after `npm install -D`):
@@ -131,6 +149,7 @@ Batch helpers (from your project after `npm install -D`):
131
149
  ```bash
132
150
  node node_modules/@mlightcad/cad-simple-viewer-cli/examples/batch-export-png.mjs ./drawings ./out-png
133
151
  node node_modules/@mlightcad/cad-simple-viewer-cli/examples/batch-export-html.mjs ./drawings ./out-html
152
+ node node_modules/@mlightcad/cad-simple-viewer-cli/examples/batch-export-pdf.mjs ./drawings ./out-pdf --color-mode monochrome
134
153
  node node_modules/@mlightcad/cad-simple-viewer-cli/examples/batch-export-html-multi-preview.mjs ./drawings ./out-demo
135
154
  ```
136
155
 
@@ -1,6 +1,6 @@
1
- import{D as Xr,E as Gt,F as Yr,V as Gr,G as $e,H as Wr,I as He,J as Kr,K as Zr,L as Jr,N as ut,g as qr,O as Qr,P as Pa,Q as tn,R as en,S as an,U as za,W as rn,Y as nn,Z as on,_ as je,a0 as sn,a1 as ln,a2 as cn,a3 as dn,a4 as un,a5 as mn,a6 as ue,a7 as pn,a8 as hn,a9 as fn,aa as gn,ab as bn,ac as wn,ad as xn,ae as yn,af as vn,ag as kn,ah as An,ai as Mn,aj as En,ak as Bn,al as Cn,am as In,an as Fn,ao as Sn,ap as Ln,aq as Pn,ar as V,as as zn,at as lt,au as Ua,av as Un,aw as me,o as Dn,ax as Nn,ay as Tn,az as _n,aA as Rn,q as On,$ as $n,aB as pt,h as x,v as J,aC as B,aD as Hn,aE as jn,a as j,aF as Vn,e as Ve,aG as Xn}from"./index-BCz7pt73.js";import{aH as Sl,aI as Ll}from"./index-BCz7pt73.js";var z=Uint8Array,N=Uint16Array,pe=Int32Array,he=new z([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),fe=new z([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Xe=new z([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Da=function(t,e){for(var a=new N(31),r=0;r<31;++r)a[r]=e+=1<<t[r-1];for(var n=new pe(a[30]),r=1;r<30;++r)for(var i=a[r];i<a[r+1];++i)n[i]=i-a[r]<<5|r;return{b:a,r:n}},Na=Da(he,2),Yn=Na.b,qt=Na.r;Yn[28]=258,qt[258]=28;var Gn=Da(fe,0),Ye=Gn.r,Qt=new N(32768);for(var M=0;M<32768;++M){var K=(M&43690)>>1|(M&21845)<<1;K=(K&52428)>>2|(K&13107)<<2,K=(K&61680)>>4|(K&3855)<<4,Qt[M]=((K&65280)>>8|(K&255)<<8)>>1}var wt=(function(t,e,a){for(var r=t.length,n=0,i=new N(e);n<r;++n)t[n]&&++i[t[n]-1];var o=new N(e);for(n=1;n<e;++n)o[n]=o[n-1]+i[n-1]<<1;var s;if(a){s=new N(1<<e);var l=15-e;for(n=0;n<r;++n)if(t[n])for(var c=n<<4|t[n],d=e-t[n],u=o[t[n]-1]++<<d,p=u|(1<<d)-1;u<=p;++u)s[Qt[u]>>l]=c}else for(s=new N(r),n=0;n<r;++n)t[n]&&(s[n]=Qt[o[t[n]-1]++]>>15-t[n]);return s}),tt=new z(288);for(var M=0;M<144;++M)tt[M]=8;for(var M=144;M<256;++M)tt[M]=9;for(var M=256;M<280;++M)tt[M]=7;for(var M=280;M<288;++M)tt[M]=8;var It=new z(32);for(var M=0;M<32;++M)It[M]=5;var Wn=wt(tt,9,0),Kn=wt(It,5,0),Ta=function(t){return(t+7)/8|0},_a=function(t,e,a){return(a==null||a>t.length)&&(a=t.length),new z(t.subarray(e,a))},Zn=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Tt=function(t,e,a){var r=new Error(e||Zn[t]);if(r.code=t,Error.captureStackTrace&&Error.captureStackTrace(r,Tt),!a)throw r;return r},Y=function(t,e,a){a<<=e&7;var r=e/8|0;t[r]|=a,t[r+1]|=a>>8},ht=function(t,e,a){a<<=e&7;var r=e/8|0;t[r]|=a,t[r+1]|=a>>8,t[r+2]|=a>>16},Wt=function(t,e){for(var a=[],r=0;r<t.length;++r)t[r]&&a.push({s:r,f:t[r]});var n=a.length,i=a.slice();if(!n)return{t:Oa,l:0};if(n==1){var o=new z(a[0].s+1);return o[a[0].s]=1,{t:o,l:1}}a.sort(function(I,C){return I.f-C.f}),a.push({s:-1,f:25001});var s=a[0],l=a[1],c=0,d=1,u=2;for(a[0]={s:-1,f:s.f+l.f,l:s,r:l};d!=n-1;)s=a[a[c].f<a[u].f?c++:u++],l=a[c!=d&&a[c].f<a[u].f?c++:u++],a[d++]={s:-1,f:s.f+l.f,l:s,r:l};for(var p=i[0].s,r=1;r<n;++r)i[r].s>p&&(p=i[r].s);var m=new N(p+1),h=te(a[d-1],m,0);if(h>e){var r=0,f=0,g=h-e,w=1<<g;for(i.sort(function(C,E){return m[E.s]-m[C.s]||C.f-E.f});r<n;++r){var b=i[r].s;if(m[b]>e)f+=w-(1<<h-m[b]),m[b]=e;else break}for(f>>=g;f>0;){var A=i[r].s;m[A]<e?f-=1<<e-m[A]++-1:++r}for(;r>=0&&f;--r){var y=i[r].s;m[y]==e&&(--m[y],++f)}h=e}return{t:new z(m),l:h}},te=function(t,e,a){return t.s==-1?Math.max(te(t.l,e,a+1),te(t.r,e,a+1)):e[t.s]=a},Ge=function(t){for(var e=t.length;e&&!t[--e];);for(var a=new N(++e),r=0,n=t[0],i=1,o=function(l){a[r++]=l},s=1;s<=e;++s)if(t[s]==n&&s!=e)++i;else{if(!n&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(n),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(n);i=1,n=t[s]}return{c:a.subarray(0,r),n:e}},ft=function(t,e){for(var a=0,r=0;r<e.length;++r)a+=t[r]*e[r];return a},Ra=function(t,e,a){var r=a.length,n=Ta(e+2);t[n]=r&255,t[n+1]=r>>8,t[n+2]=t[n]^255,t[n+3]=t[n+1]^255;for(var i=0;i<r;++i)t[n+i+4]=a[i];return(n+4+r)*8},We=function(t,e,a,r,n,i,o,s,l,c,d){Y(e,d++,a),++n[256];for(var u=Wt(n,15),p=u.t,m=u.l,h=Wt(i,15),f=h.t,g=h.l,w=Ge(p),b=w.c,A=w.n,y=Ge(f),I=y.c,C=y.n,E=new N(19),v=0;v<b.length;++v)++E[b[v]&31];for(var v=0;v<I.length;++v)++E[I[v]&31];for(var k=Wt(E,7),U=k.t,rt=k.l,D=19;D>4&&!U[Xe[D-1]];--D);var nt=c+5<<3,T=ft(n,tt)+ft(i,It)+o,_=ft(n,p)+ft(i,f)+o+14+3*D+ft(E,U)+2*E[16]+3*E[17]+7*E[18];if(l>=0&&nt<=T&&nt<=_)return Ra(e,d,t.subarray(l,l+c));var O,L,R,W;if(Y(e,d,1+(_<T)),d+=2,_<T){O=wt(p,m,0),L=p,R=wt(f,g,0),W=f;var jt=wt(U,rt,0);Y(e,d,A-257),Y(e,d+5,C-1),Y(e,d+10,D-4),d+=14;for(var v=0;v<D;++v)Y(e,d+3*v,U[Xe[v]]);d+=3*D;for(var $=[b,I],mt=0;mt<2;++mt)for(var it=$[mt],v=0;v<it.length;++v){var H=it[v]&31;Y(e,d,jt[H]),d+=U[H],H>15&&(Y(e,d,it[v]>>5&127),d+=it[v]>>12)}}else O=Wn,L=tt,R=Kn,W=It;for(var v=0;v<s;++v){var P=r[v];if(P>255){var H=P>>18&31;ht(e,d,O[H+257]),d+=L[H+257],H>7&&(Y(e,d,P>>23&31),d+=he[H]);var ot=P&31;ht(e,d,R[ot]),d+=W[ot],ot>3&&(ht(e,d,P>>5&8191),d+=fe[ot])}else ht(e,d,O[P]),d+=L[P]}return ht(e,d,O[256]),d+L[256]},Jn=new pe([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Oa=new z(0),qn=function(t,e,a,r,n,i){var o=i.z||t.length,s=new z(r+o+5*(1+Math.ceil(o/7e3))+n),l=s.subarray(r,s.length-n),c=i.l,d=(i.r||0)&7;if(e){d&&(l[0]=i.r>>3);for(var u=Jn[e-1],p=u>>13,m=u&8191,h=(1<<a)-1,f=i.p||new N(32768),g=i.h||new N(h+1),w=Math.ceil(a/3),b=2*w,A=function(Yt){return(t[Yt]^t[Yt+1]<<w^t[Yt+2]<<b)&h},y=new pe(25e3),I=new N(288),C=new N(32),E=0,v=0,k=i.i||0,U=0,rt=i.w||0,D=0;k+2<o;++k){var nt=A(k),T=k&32767,_=g[nt];if(f[T]=_,g[nt]=T,rt<=k){var O=o-k;if((E>7e3||U>24576)&&(O>423||!c)){d=We(t,l,0,y,I,C,v,U,D,k-D,d),U=E=v=0,D=k;for(var L=0;L<286;++L)I[L]=0;for(var L=0;L<30;++L)C[L]=0}var R=2,W=0,jt=m,$=T-_&32767;if(O>2&&nt==A(k-$))for(var mt=Math.min(p,O)-1,it=Math.min(32767,k),H=Math.min(258,O);$<=it&&--jt&&T!=_;){if(t[k+R]==t[k+R-$]){for(var P=0;P<H&&t[k+P]==t[k+P-$];++P);if(P>R){if(R=P,W=$,P>mt)break;for(var ot=Math.min($,P-2),Te=0,L=0;L<ot;++L){var Vt=k-$+L&32767,Vr=f[Vt],_e=Vt-Vr&32767;_e>Te&&(Te=_e,_=Vt)}}}T=_,_=f[T],$+=T-_&32767}if(W){y[U++]=268435456|qt[R]<<18|Ye[W];var Re=qt[R]&31,Oe=Ye[W]&31;v+=he[Re]+fe[Oe],++I[257+Re],++C[Oe],rt=k+R,++E}else y[U++]=t[k],++I[t[k]]}}for(k=Math.max(k,rt);k<o;++k)y[U++]=t[k],++I[t[k]];d=We(t,l,c,y,I,C,v,U,D,k-D,d),c||(i.r=d&7|l[d/8|0]<<3,d-=7,i.h=g,i.p=f,i.i=k,i.w=rt)}else{for(var k=i.w||0;k<o+c;k+=65535){var Xt=k+65535;Xt>=o&&(l[d/8|0]=c,Xt=o),d=Ra(l,d+1,t.subarray(k,Xt))}i.i=o}return _a(s,0,r+Ta(d)+n)},Qn=(function(){for(var t=new Int32Array(256),e=0;e<256;++e){for(var a=e,r=9;--r;)a=(a&1&&-306674912)^a>>>1;t[e]=a}return t})(),$a=function(){var t=-1;return{p:function(e){for(var a=t,r=0;r<e.length;++r)a=Qn[a&255^e[r]]^a>>>8;t=a},d:function(){return~t}}},Ha=function(t,e,a,r,n){if(!n&&(n={l:1},e.dictionary)){var i=e.dictionary.subarray(-32768),o=new z(i.length+t.length);o.set(i),o.set(t,i.length),t=o,n.w=i.length}return qn(t,e.level==null?6:e.level,e.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(t.length)))*1.5):20:12+e.mem,a,r,n)},ja=function(t,e){var a={};for(var r in t)a[r]=t[r];for(var r in e)a[r]=e[r];return a},F=function(t,e,a){for(;a;++e)t[e]=a,a>>>=8},ti=function(t,e){var a=e.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=e.level<2?4:e.level==9?2:0,t[9]=3,e.mtime!=0&&F(t,4,Math.floor(new Date(e.mtime||Date.now())/1e3)),a){t[3]=8;for(var r=0;r<=a.length;++r)t[r+10]=a.charCodeAt(r)}},ei=function(t){return 10+(t.filename?t.filename.length+1:0)};function ai(t,e){return Ha(t,e||{},0,0)}function ri(t,e){e||(e={});var a=$a(),r=t.length;a.p(t);var n=Ha(t,e,ei(e),8),i=n.length;return ti(n,e),F(n,i-8,a.d()),F(n,i-4,r),n}var Va=function(t,e,a,r){for(var n in t){var i=t[n],o=e+n,s=r;Array.isArray(i)&&(s=ja(r,i[1]),i=i[0]),i instanceof z?a[o]=[i,s]:(a[o+="/"]=[new z(0),s],Va(i,o,a,r))}},Ke=typeof TextEncoder<"u"&&new TextEncoder,ni=typeof TextDecoder<"u"&&new TextDecoder,ii=0;try{ni.decode(Oa,{stream:!0}),ii=1}catch{}function vt(t,e){var a;if(Ke)return Ke.encode(t);for(var r=t.length,n=new z(t.length+(t.length>>1)),i=0,o=function(d){n[i++]=d},a=0;a<r;++a){if(i+5>n.length){var s=new z(i+8+(r-a<<1));s.set(n),n=s}var l=t.charCodeAt(a);l<128||e?o(l):l<2048?(o(192|l>>6),o(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|t.charCodeAt(++a)&1023,o(240|l>>18),o(128|l>>12&63),o(128|l>>6&63),o(128|l&63)):(o(224|l>>12),o(128|l>>6&63),o(128|l&63))}return _a(n,0,i)}var ee=function(t){var e=0;if(t)for(var a in t){var r=t[a].length;r>65535&&Tt(9),e+=r+4}return e},Ze=function(t,e,a,r,n,i,o,s){var l=r.length,c=a.extra,d=s&&s.length,u=ee(c);F(t,e,o!=null?33639248:67324752),e+=4,o!=null&&(t[e++]=20,t[e++]=a.os),t[e]=20,e+=2,t[e++]=a.flag<<1|(i<0&&8),t[e++]=n&&8,t[e++]=a.compression&255,t[e++]=a.compression>>8;var p=new Date(a.mtime==null?Date.now():a.mtime),m=p.getFullYear()-1980;if((m<0||m>119)&&Tt(10),F(t,e,m<<25|p.getMonth()+1<<21|p.getDate()<<16|p.getHours()<<11|p.getMinutes()<<5|p.getSeconds()>>1),e+=4,i!=-1&&(F(t,e,a.crc),F(t,e+4,i<0?-i-2:i),F(t,e+8,a.size)),F(t,e+12,l),F(t,e+14,u),e+=16,o!=null&&(F(t,e,d),F(t,e+6,a.attrs),F(t,e+10,o),e+=14),t.set(r,e),e+=l,u)for(var h in c){var f=c[h],g=f.length;F(t,e,+h),F(t,e+2,g),t.set(f,e+4),e+=4+g}return d&&(t.set(s,e),e+=d),e},oi=function(t,e,a,r,n){F(t,e,101010256),F(t,e+8,a),F(t,e+10,a),F(t,e+12,r),F(t,e+16,n)};function si(t,e){e||(e={});var a={},r=[];Va(t,"",a,e);var n=0,i=0;for(var o in a){var s=a[o],l=s[0],c=s[1],d=c.level==0?0:8,u=vt(o),p=u.length,m=c.comment,h=m&&vt(m),f=h&&h.length,g=ee(c.extra);p>65535&&Tt(11);var w=d?ai(l,c):l,b=w.length,A=$a();A.p(l),r.push(ja(c,{size:l.length,crc:A.d(),c:w,f:u,m:h,u:p!=o.length||h&&m.length!=f,o:n,compression:d})),n+=30+p+g+b,i+=76+2*(p+g)+(f||0)+b}for(var y=new z(i+22),I=n,C=i-n,E=0;E<r.length;++E){var u=r[E];Ze(y,u.o,u,u.f,u.u,u.c.length);var v=30+u.f.length+ee(u.extra);y.set(u.c,u.o+v),Ze(y,n,u,u.f,u.u,u.c.length,u.o,u.m),n+=16+v+(u.m?u.m.length:0)}return oi(y,n,r.length,C,I),y}class ge{constructor(){this.chunks=[],this.length=0}writeU8(e){const a=new Uint8Array(1);a[0]=e&255,this.chunks.push(a),this.length+=1}writeU32(e){const a=new Uint8Array(4);new DataView(a.buffer).setUint32(0,e>>>0,!0),this.chunks.push(a),this.length+=4}writeI32(e){const a=new Uint8Array(4);new DataView(a.buffer).setInt32(0,e|0,!0),this.chunks.push(a),this.length+=4}writeF32(e){const a=new Uint8Array(4);new DataView(a.buffer).setFloat32(0,e,!0),this.chunks.push(a),this.length+=4}writeF64(e){const a=new Uint8Array(8);new DataView(a.buffer).setFloat64(0,e,!0),this.chunks.push(a),this.length+=8}writeBytes(e){this.chunks.push(e),this.length+=e.length}writeString(e){const a=vt(e);this.writeU32(a.length),this.writeBytes(a)}writeJson(e){this.writeString(JSON.stringify(e))}writeFloat32Array(e){this.alignTo(4);const a=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);this.writeU32(a.length),this.writeBytes(a)}writeUint32Array(e){this.alignTo(4);const a=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);this.writeU32(a.length),this.writeBytes(a)}alignTo(e){const a=this.length%e;if(a===0)return;const r=e-a;for(let n=0;n<r;n++)this.writeU8(0)}toUint8Array(){const e=new Uint8Array(this.length);let a=0;for(const r of this.chunks)e.set(r,a),a+=r.length;return e}}const X=4,Xa="gzip";function ae(t){return{bytes:ri(t),compression:Xa}}async function Ya(t){if(typeof CompressionStream>"u")return ae(t);try{const e=new Uint8Array(t.byteLength);e.set(t);const a=new Blob([e]).stream().pipeThrough(new CompressionStream("gzip"));return{bytes:new Uint8Array(await new Response(a).arrayBuffer()),compression:Xa}}catch{return ae(t)}}const Ft="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%()*+,-.;=?@[]^_{|}~",re=new Int16Array(128).fill(-1);for(let t=0;t<Ft.length;t++)re[Ft.charCodeAt(t)]=t;function _t(t,e){return e==="base85"?ci(t):mi(t)}function li(t,e){const a=t.length>0&&(t.charCodeAt(0)<=32||t.charCodeAt(t.length-1)<=32)?t.trim():t;return e==="base85"?di(a):pi(a)}function ci(t){const e=t.length;if(e===0)return"";const a=(4-e%4)%4,r=e+a,n=[];for(let o=0;o<r;o+=4){const s=t[o]??0,l=o+1<e?t[o+1]:0,c=o+2<e?t[o+2]:0,d=o+3<e?t[o+3]:0;let u=(s<<24>>>0)+(l<<16)+(c<<8)+d;const p=new Array(5);for(let m=4;m>=0;m--)p[m]=u%85,u=u/85|0;for(let m=0;m<5;m++)n.push(Ft[p[m]])}const i=Math.ceil(e*5/4);return n.slice(0,i).join("")}function di(t){const e=t.replace(/\s+/g,""),a=e.length;if(a===0)return new Uint8Array(0);const r=Math.floor(a*4/5),n=(5-a%5)%5,i=a+n,o=new Uint8Array(i/5*4),s=Ft.length-1;let l=0;for(let c=0;c<i;c+=5){let d=0;for(let u=0;u<5;u++){const p=c+u<a?ui(e.charCodeAt(c+u)):s;d=d*85+p}o[l++]=d>>>24&255,o[l++]=d>>>16&255,o[l++]=d>>>8&255,o[l++]=d&255}return o.subarray(0,r)}function ui(t){if(t<0||t>=re.length)throw new Error("Invalid base85 character");const e=re[t];if(e<0)throw new Error("Invalid base85 character");return e}function mi(t){let e="";for(let a=0;a<t.length;a++)e+=String.fromCharCode(t[a]);return btoa(e)}function pi(t){const e=atob(t),a=new Uint8Array(e.length);for(let r=0;r<e.length;r++)a[r]=e.charCodeAt(r);return a}const Je=1,qe=2,Qe=4,ta=8,ea=16,hi=32,aa=1,ra=2,na=4,ia=8,oa=16,fi=32,sa=64,la=128;function be(t){let e=256+t.positions.byteLength;return t.indices&&(e+=t.indices.byteLength),t.lineDistances&&(e+=t.lineDistances.byteLength),t.linePattern&&(e+=64+t.linePattern.pattern.length*8),e}function we(t){let e=256+t.positions.byteLength;return t.indices&&(e+=t.indices.byteLength),t.gradientPositions&&(e+=t.gradientPositions.byteLength),t.uvs&&(e+=t.uvs.byteLength),t.texture&&(e+=t.texture.bytes.byteLength+64),t.hatchPattern&&(e+=128),t.gradientFill&&(e+=64),e}function Ga(t,e){t.writeString(e.layer),t.writeU32(e.color>>>0),t.writeF64(e.offset[0]),t.writeF64(e.offset[1]),t.writeF64(e.offset[2]),t.writeFloat32Array(e.positions);let a=0;e.indices&&e.indices.length>0&&(a|=Je),e.linePattern&&(a|=qe),e.lineDistances&&e.lineDistances.length>0&&(a|=Qe),e.lineWidth!=null&&e.lineWidth>0&&(a|=ta),e.renderOrder!=null&&e.renderOrder!==0&&(a|=ea),e.excludeFromOsnap&&(a|=hi),t.writeU8(a),a&Je&&t.writeUint32Array(e.indices),a&qe&&t.writeJson(e.linePattern),a&Qe&&t.writeFloat32Array(e.lineDistances),a&ta&&t.writeF32(e.lineWidth),a&ea&&t.writeI32(e.renderOrder)}function Wa(t,e){t.writeString(e.layer),t.writeU32(e.color>>>0),t.writeF64(e.offset[0]),t.writeF64(e.offset[1]),t.writeF64(e.offset[2]),t.writeFloat32Array(e.positions);let a=0;e.indices&&e.indices.length>0&&(a|=aa),e.hatchPattern&&(a|=ra),e.gradientFill&&(a|=na),e.gradientPositions&&e.gradientPositions.length>0&&(a|=ia),e.side!=null&&(a|=oa),e.points&&(a|=fi),e.renderOrder!=null&&e.renderOrder!==0&&(a|=sa),e.texture&&e.texture.bytes.length>0&&e.uvs&&e.uvs.length>=2&&(a|=la),t.writeU8(a),a&aa&&t.writeUint32Array(e.indices),a&ra&&t.writeJson(e.hatchPattern),a&na&&t.writeJson(e.gradientFill),a&ia&&t.writeFloat32Array(e.gradientPositions),a&oa&&t.writeU8(e.side),a&sa&&t.writeI32(e.renderOrder),a&la&&(t.writeFloat32Array(e.uvs),t.writeString(e.texture.mimeType||"image/png"),t.writeU32(e.texture.bytes.byteLength),t.writeBytes(e.texture.bytes))}const gi=1329939265,bi=1,wi=1,xi=2,yi=3,vi=4,ki=5,Ai=6,Mi=7;function Ka(t){var e;switch(t.kind){case"line":return 37;case"circle":return 30;case"arc":return 46;case"ellipse":return 71;case"point":return 21;case"path":return 10+t.vertices.length*8;case"spline":return 10+(t.controlPoints.length+t.knots.length+t.weights.length+(((e=t.fitPoints)==null?void 0:e.length)??0))*8+16;default:return t}}function Ei(t,e){if(t.length===0)return[];const a=[];let r=[],n=64;const i=()=>{r.length!==0&&(a.push(r),r=[],n=64)};for(const o of t){const s=Ka(o);r.length>0&&n+s>e&&i(),r.push(o),n+=s}return i(),a}function xe(t){const e=new ge;e.writeU32(gi),e.writeU8(bi),e.writeU8(0),e.writeU8(0),e.writeU8(0);const a=[],r=new Map,n=i=>{const o=r.get(i);if(o!=null)return o;const s=a.length;return a.push(i),r.set(i,s),s};for(const i of t.primitives)n(i.layer);e.writeU32(a.length);for(const i of a)e.writeString(i);e.writeU32(t.primitives.length);for(const i of t.primitives)Ci(e,i,n(i.layer));return e.toUint8Array()}async function Bi(t){const e=xe(t),a=(await Ya(e)).bytes;return{uncompressed:e,compressed:a}}function Kt(t,e){t.writeU8(e<0?0:1)}function gt(t,e){t.writeU32(e.length);for(const a of e)t.writeF64(a)}function Ci(t,e,a){switch(e.kind){case"line":t.writeU8(wi),t.writeU32(a),t.writeF64(e.x0),t.writeF64(e.y0),t.writeF64(e.x1),t.writeF64(e.y1);return;case"circle":t.writeU8(xi),t.writeU32(a),t.writeF64(e.cx),t.writeF64(e.cy),t.writeF64(e.r),Kt(t,e.normalSign);return;case"arc":t.writeU8(yi),t.writeU32(a),t.writeF64(e.cx),t.writeF64(e.cy),t.writeF64(e.r),t.writeF64(e.startAngle),t.writeF64(e.endAngle),Kt(t,e.normalSign);return;case"ellipse":t.writeU8(vi),t.writeU32(a),t.writeF64(e.cx),t.writeF64(e.cy),t.writeF64(e.majorX),t.writeF64(e.majorY),t.writeF64(e.majorR),t.writeF64(e.minorR),t.writeF64(e.startAngle),t.writeF64(e.endAngle),t.writeU8(e.closed?1:0),Kt(t,e.normalSign??1);return;case"spline":t.writeU8(ki),t.writeU32(a),gt(t,e.controlPoints),t.writeU32(e.degree),gt(t,e.knots),gt(t,e.weights),t.writeU8(e.closed?1:0),gt(t,e.fitPoints??[]);return;case"point":t.writeU8(Ai),t.writeU32(a),t.writeF64(e.x),t.writeF64(e.y);return;case"path":t.writeU8(Mi),t.writeU32(a),t.writeU8(e.closed?1:0),gt(t,e.vertices);return;default:{const r=e;throw new Error(`Unsupported osnap primitive: ${String(r)}`)}}}const Ii=1480934209;function Fi(t){if(t.version!==X)throw new Error(`Unsupported snapshot version: ${t.version}`);const e=new ge;e.writeU32(Ii),e.writeU8(X),e.writeU8(0),e.writeU8(0),e.writeU8(0),e.writeJson(Si(t)),e.writeJson(t.layers),e.writeString(t.activeLayoutBtrId),e.writeU32(t.layouts.length);for(const a of t.layouts)Li(e,a);return e.toUint8Array()}function Si(t){const e={...t.meta.savedViews??{}},a={...t.meta.fitExtents??{}};for(const l of t.layouts)l.savedView&&(e[l.btrId]=l.savedView),l.fitExtents&&(a[l.btrId]=l.fitExtents);const r=Object.keys(e).length>0,n=Object.keys(a).length>0;if(!r&&!n){if(t.meta.savedViews==null&&t.meta.fitExtents==null)return t.meta;const{savedViews:l,fitExtents:c,...d}=t.meta;return d}const{savedViews:i,fitExtents:o,...s}=t.meta;return{...s,...r?{savedViews:e}:{},...n?{fitExtents:a}:{}}}function Li(t,e){t.writeString(e.btrId),t.writeString(e.name),t.writeU8(e.isModelSpace?1:0),Pi(t,e.osnap),t.writeJson(e.viewports??null),t.writeU32(e.lineBatches.length);for(const a of e.lineBatches)Ga(t,a);t.writeU32(e.meshBatches.length);for(const a of e.meshBatches)Wa(t,a)}function Pi(t,e){if(!e||e.primitives.length===0){t.writeU32(0);return}const a=xe(e);t.writeU32(a.length),t.writeBytes(a)}const zi="application/vnd.mlightcad.acex-snapshot+binary";function Za(t){if(t.version!==X)throw new Error(`Unsupported snapshot version: ${t.version}`);const e=Fi(t),a=ae(e);return{payload:_t(a.bytes,"base85"),compression:a.compression}}function Ui(){return zi}function et(t,e,a){if(a<=0)return new Float32Array(0);if(t instanceof Float32Array)return t.subarray(e,e+a).slice();const r=new Float32Array(a);for(let n=0;n<a;n++)r[n]=t[e+n];return r}function Di(t,e,a){if(a<=0)return new Uint32Array(0);const r=new Uint32Array(a);for(let n=0;n<a;n++)r[n]=t[e+n];return r}function Ja(t,e){if(e.length===0)return{positions:t,indices:e};let a=0;for(let n=0;n<e.length;n++){const i=e[n];i>a&&(a=i)}const r=(a+1)*3;return r>=t.length?{positions:t,indices:e}:{positions:et(t,0,r),indices:e}}function ca(t,e){return t+e}const st={x:0,y:0,z:0};function Ni(t){t.updateMatrixWorld(!0);const e=t.matrixWorld.elements;return st.x=e[12],st.y=e[13],st.z=e[14],[st.x,st.y,st.z]}function ye(t,e){const a=e.elements,r=t.positions;if(r.length===0)return{positions:new Float32Array(0),indices:t.indices};const n=new Float32Array(r.length);for(let i=0;i<r.length;i+=3){const o=r[i],s=r[i+1],l=r[i+2];n[i]=a[0]*o+a[4]*s+a[8]*l+a[12],n[i+1]=a[1]*o+a[5]*s+a[9]*l+a[13],n[i+2]=a[2]*o+a[6]*s+a[10]*l+a[14]}return{positions:n,indices:t.indices?new Uint32Array(t.indices):void 0}}function da(t,e){const a=e*3;return Number.isFinite(t[a])&&Number.isFinite(t[a+1])&&Number.isFinite(t[a+2])}function ct(t,e){const a=t.positions,r=a.length/3|0;if(r===0||e<=0)return t;let n=!1;for(let s=0;s<a.length;s++)if(!Number.isFinite(a[s])){n=!0;break}if(!n)return t;const i=t.indices;if(i&&i.length>0){const s=[];for(let u=0;u+e<=i.length;u+=e){let p=!0;for(let m=0;m<e;m++){const h=i[u+m];if(h<0||h>=r||!da(a,h)){p=!1;break}}if(p)for(let m=0;m<e;m++)s.push(i[u+m])}if(s.length===0)return{positions:new Float32Array(0)};const l=new Int32Array(r);l.fill(-1);const c=[],d=new Uint32Array(s.length);for(let u=0;u<s.length;u++){const p=s[u];let m=l[p];if(m<0){m=c.length/3,l[p]=m;const h=p*3;c.push(a[h],a[h+1],a[h+2])}d[u]=m}return{positions:Float32Array.from(c),indices:d}}const o=[];for(let s=0;s+e<=r;s+=e){let l=!0;for(let c=0;c<e;c++)if(!da(a,s+c)){l=!1;break}if(l)for(let c=0;c<e;c++){const d=(s+c)*3;o.push(a[d],a[d+1],a[d+2])}}return o.length===0?{positions:new Float32Array(0)}:{positions:Float32Array.from(o)}}function ve(t){const e=t.positions;if(e.length<3)return{slice:t,offset:[0,0,0]};let a=1/0,r=1/0,n=1/0,i=-1/0,o=-1/0,s=-1/0,l=0;for(let u=0;u<e.length;u+=3){const p=e[u],m=e[u+1],h=e[u+2];!Number.isFinite(p)||!Number.isFinite(m)||!Number.isFinite(h)||(l++,a=Math.min(a,p),r=Math.min(r,m),n=Math.min(n,h),i=Math.max(i,p),o=Math.max(o,m),s=Math.max(s,h))}if(l===0)return{slice:{positions:new Float32Array(0)},offset:[0,0,0]};const c=[(a+i)/2,(r+o)/2,(n+s)/2],d=new Float32Array(e.length);for(let u=0;u<e.length;u+=3){const p=e[u],m=e[u+1],h=e[u+2];if(!Number.isFinite(p)||!Number.isFinite(m)||!Number.isFinite(h)){d[u]=0,d[u+1]=0,d[u+2]=0;continue}d[u]=p-c[0],d[u+1]=m-c[1],d[u+2]=h-c[2]}return{slice:{positions:d,indices:t.indices?new Uint32Array(t.indices):void 0},offset:c}}function Ti(t,e,a={}){t.updateMatrixWorld(!0);const r=ye(e,t.matrixWorld);return ve(r)}function _i(t){const e=t.image;if(!e)return;if(typeof document>"u")return void 0;const a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return;try{if(e instanceof ImageData)a.width=e.width,a.height=e.height,r.putImageData(e,0,0);else if(Oi(e)){a.width=e.width,a.height=e.height;const l=Hi(e.data,e.width*e.height),c=new ImageData(new Uint8ClampedArray(l),e.width,e.height);r.putImageData(c,0,0)}else if(Ri(e)){const l=$i(e);if(!l)return;a.width=l.width,a.height=l.height,r.drawImage(e,0,0)}else return}catch{return}const n=a.toDataURL("image/png"),i=n.indexOf(",");if(i<0)return;const o=atob(n.slice(i+1)),s=new Uint8Array(o.length);for(let l=0;l<o.length;l++)s[l]=o.charCodeAt(l);return{mimeType:"image/png",bytes:s}}function Ri(t){return t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement}function Oi(t){if(!t||typeof t!="object")return!1;const e=t;return e.data!=null&&typeof e.width=="number"&&typeof e.height=="number"&&e.width>=1&&e.height>=1}function $i(t){let e=Number(t.width),a=Number(t.height);if(t instanceof HTMLImageElement?(e=t.naturalWidth||t.width,a=t.naturalHeight||t.height):typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement&&(e=t.videoWidth||t.width,a=t.videoHeight||t.height),!(!Number.isFinite(e)||!Number.isFinite(a)||e<1||a<1))return{width:e,height:a}}function Hi(t,e){const a=e*4;if(t instanceof Uint8ClampedArray&&t.length>=a)return t.length===a?t:t.subarray(0,a);const r=new Uint8ClampedArray(a),n=Math.min(a,t.length);for(let i=0;i<n;i++)r[i]=t[i];if(t.length>=e*3&&t.length<a)for(let i=e-1;i>=0;i--){const o=i*3,s=i*4;r[s]=t[o],r[s+1]=t[o+1],r[s+2]=t[o+2],r[s+3]=255}return r}function ji(t,e){const a=t.getAttribute("uv");if(!a||a.count===0||a.itemSize<2)return;const r=Math.floor(e.length/3)*2;if(r<=0)return;const n=a.array;if(!(a.count*a.itemSize<r))return et(n,0,r)}function qa(t){const e=t;return e.map?!1:e.transparent===!0&&typeof e.opacity=="number"&&e.opacity<.01}function ke(t){const e=t;if(e.isShaderMaterial===!0||t.type==="ShaderMaterial")return e}function Vi(t){var e;const a=ke(t);if(!a)return;const r=a.uniforms.pattern,n=a.uniforms.patternLength;if(!r||!n)return;const i=r.value;if(!(!Array.isArray(i)||i.length===0))return{pattern:[...i],patternLength:Number(n.value),viewportScale:Number(((e=a.uniforms.u_viewportScale)==null?void 0:e.value)??1)}}function Xi(t){var e;const a=ke(t);if(!a)return;const r=a.uniforms.u_patternLines;if(!r)return;const n=r.value;if(!(!Array.isArray(n)||n.length===0))return{patternAngle:Number(((e=a.uniforms.u_patternAngle)==null?void 0:e.value)??0),patternLines:n.map(Gi)}}function Yi(t){var e,a,r,n,i;const o=ke(t);if(!o||o.uniforms.u_patternLines)return;const s=(e=o.uniforms.u_startColor)==null?void 0:e.value,l=(a=o.uniforms.u_endColor)==null?void 0:a.value,c=o.uniforms.u_gradientType;if(!(!(s!=null&&s.getHex)||c==null))return{startColor:s.getHex(),endColor:((r=l==null?void 0:l.getHex)==null?void 0:r.call(l))??s.getHex(),angle:Number(((n=o.uniforms.u_angle)==null?void 0:n.value)??0),shift:Number(((i=o.uniforms.u_shift)==null?void 0:i.value)??0),gradientType:Number(c.value)}}function Gi(t){return{angle:t.angle,base:[t.base.x,t.base.y],offset:[t.offset.x,t.offset.y],dashLengths:[...t.dashLengths],patternLength:t.patternLength}}function Ae(t){const e=t.length/3;if(e<2)return new Float32Array(0);const a=new Float32Array(e);for(let r=0;r<e;r+=2){r===0?a[r]=0:a[r]=a[r-1];const n=t[r*3],i=t[r*3+1],o=t[r*3+2]??0,s=t[(r+1)*3],l=t[(r+1)*3+1],c=t[(r+1)*3+2]??0,d=s-n,u=l-i,p=c-o;a[r+1]=a[r]+Math.sqrt(d*d+u*u+p*p)}return a}function Wi(t,e){const a=t.getAttribute(e);if(!a||a.count===0)return;const r=a.itemSize;if(t.getIndex()){const d=a.array;return et(d,0,a.count*r)}const n=t.drawRange,i=a.count,o=Math.max(0,Math.min(Math.floor(n.start),i)),s=Math.max(0,i-o),l=!Number.isFinite(n.count)||n.count<=0?s:Math.min(Math.floor(n.count),s);if(l<=0)return;const c=a.array;return et(c,o*r,l*r)}function ua(t,e){const a=e[0],r=e[1],n=e[4],i=e[5],o=e[12],s=e[13],l=Math.atan2(r,a),c=(p,m)=>[a*p+n*m+o,r*p+i*m+s],d=(p,m)=>[a*p+n*m,r*p+i*m],u=(p,m,h)=>{const f=Math.cos(h),g=Math.sin(h);return[f*p-g*m,g*p+f*m]};return{patternAngle:t.patternAngle,patternLines:t.patternLines.map(p=>{const m=p.angle+t.patternAngle,h=p.angle+l,f=h+t.patternAngle,[g,w]=d(Math.cos(m),Math.sin(m)),b=Math.hypot(g,w),[A,y]=u(p.offset[0],p.offset[1],m),[I,C]=d(A,y),E=u(I,C,-f);return{angle:h,base:c(p.base[0],p.base[1]),offset:E,dashLengths:p.dashLengths.map(v=>v*b),patternLength:p.patternLength*b}})}}function Ki(t,e){return{patternAngle:t.patternAngle,patternLines:t.patternLines.map(a=>{const r=new je(a.base[0]-e[0],a.base[1]-e[1]),n=new je(a.offset[0],a.offset[1]);return sn(r,n,a.angle,t.patternAngle,a.patternLength),{angle:a.angle,base:[r.x,r.y],offset:[a.offset[0],a.offset[1]],dashLengths:[...a.dashLengths],patternLength:a.patternLength}})}}function ne(t,e){return!Number.isFinite(t)||t<0?0:Math.min(Math.floor(t),e)}function ie(t,e,a){const r=Math.max(0,e-a);return!Number.isFinite(t)||t<=0?r:Math.min(Math.floor(t),r)}function St(t){const e=t.getAttribute("position");if(!e)return{positions:new Float32Array(0)};const a=t.drawRange,r=e.array,n=e.itemSize,i=t.getIndex();if(i){const l=et(r,0,e.count*n),c=i.array,d=ne(a.start,i.count),u=ie(a.count,i.count,d),p=Di(c,d,u);return Ja(l,p)}const o=ne(a.start,e.count),s=ie(a.count,e.count,o);return{positions:et(r,o*n,s*n)}}function Lt(t){return Ln(t.flags)&&Pn(t.flags)}function Qa(t){const{count:e}=t.mappingStats;for(let a=0;a<e;a++){let r;try{r=t.getGeometryRangeAt(a)}catch{continue}if(Lt(r)&&r.bboxIntersectionCheck)return!0}return!1}function oe(t){return Pa(t).bboxIntersectionCheck===!0}function Me(t,e){const a=e.getAttribute("position");if(!a)return{positions:new Float32Array(0)};const r=a.itemSize,n=a.array,i=e.getIndex(),{count:o}=t.mappingStats;if(i){const u=et(n,0,a.count*r),p=i.array;let m=0;const h=[];for(let w=0;w<o;w++){let b;try{b=t.getGeometryRangeAt(w)}catch{continue}const A=b.indexStart??0,y=b.indexCount??0;!Lt(b)||y<=0||(h.push({start:A,count:y}),m+=y)}if(m===0)return{positions:new Float32Array(0)};const f=new Uint32Array(m);let g=0;for(const w of h)for(let b=0;b<w.count;b++)f[g++]=p[w.start+b];return Ja(u,f)}let s=0;const l=[];for(let u=0;u<o;u++){let p;try{p=t.getGeometryRangeAt(u)}catch{continue}if(!Lt(p)||p.vertexCount<=0)continue;const m=p.vertexCount*r;l.push({start:p.vertexStart*r,floatCount:m}),s+=m}if(s===0)return{positions:new Float32Array(0)};const c=new Float32Array(s);let d=0;if(n instanceof Float32Array)for(const u of l)c.set(n.subarray(u.start,u.start+u.floatCount),d),d+=u.floatCount;else for(const u of l)for(let p=0;p<u.floatCount;p++)c[d++]=n[u.start+p];return{positions:c}}function ma(t,e,a){t.push(e.getX(a),e.getY(a),e.getZ(a))}function Zi(t,e){const a=e.getAttribute("instanceStart"),r=e.getAttribute("instanceEnd");if(!a||!r)return{positions:new Float32Array(0)};const{count:n}=t.mappingStats,i=[];for(let o=0;o<n;o++){let s;try{s=t.getGeometryRangeAt(o)}catch{continue}if(!Lt(s)||s.vertexCount<=0)continue;const l=s.vertexStart,c=l+s.vertexCount;for(let d=l;d<c;d++)ma(i,a,d),ma(i,r,d)}return{positions:new Float32Array(i)}}function Ji(t,e){const a=t.instanceCount;if(Number.isFinite(a)&&a>=0)return Math.min(Math.floor(a),e);const r=t.drawRange,n=ne(r.start,e);return ie(r.count,e,n)}function qi(t){const e=t.getAttribute("instanceStart"),a=t.getAttribute("instanceEnd");if(!e||!a||e.count===0)return{positions:new Float32Array(0)};const r=Ji(t,e.count);if(r<=0)return{positions:new Float32Array(0)};const n=[];for(let i=0;i<r;i++){const o=[e.getX(i),e.getY(i),e.getZ(i)],s=[a.getX(i),a.getY(i),a.getZ(i)];!o.every(Number.isFinite)||!s.every(Number.isFinite)||n.push(o[0],o[1],o[2],s[0],s[1],s[2])}return{positions:new Float32Array(n)}}function Et(t,e){let a=t;for(;a&&a!==e;){if(a.visible===!1)return!1;a=a.parent}return!0}function tr(t){if(t instanceof nn)return t.linewidth}function xt(t){if("material"in t){const e=t.userData.originalMaterial??t.material;return Array.isArray(e)?e[0]:e}return t.material}function at(t){var e;const a=za(t),r=a.layer??"0",n=t;let i=n.color!=null?n.color.getHex():a.color??16777215;const o=Vi(t),s=Xi(t),l=Yi(t);if(t instanceof rn||t.type==="ShaderMaterial"){const c=(e=t.uniforms.u_color)==null?void 0:e.value;c!=null&&c.getHex?i=c.getHex():l&&(i=l.startColor)}return{color:i,layer:r,linePattern:o,hatchPattern:s,gradientFill:l,side:s||l?t.side:void 0}}function Qi(t,e){const a=za(e).drawOrder??t.renderOrder;return a===0?void 0:a}function dt(t,e,a){const r=Qi(e,a);r!=null&&(t.renderOrder=r)}function to(t,e){if(!e)return;const a=t.userData.bakedWorldMatrix;return a&&a.length>=16?ua(e,a):(t.updateMatrixWorld(!0),ua(e,Array.from(t.matrixWorld.elements)))}function Rt(t){return Ni(t)}function Zt(t,e,a={}){const r=Ti(t,e,a);return{...r.slice,offset:r.offset}}function eo(t){if(t.indices&&t.indices.length>=3)return t;const e=t.positions.length/3|0;if(e<3||e%3!==0)return t;const a=new Uint32Array(e);for(let r=0;r<e;r++)a[r]=r;return{...t,indices:a}}function kt(t,e,a,r,n,i=!1){i&&(r=eo(r));const o=at(e),s=to(a,o.hatchPattern),l=s?Ki(s,n):void 0,c=o.gradientFill?Wi(t,"gradientPosition"):void 0,d={layer:o.layer,color:o.color,offset:n,hatchPattern:l,gradientFill:o.gradientFill,gradientPositions:c,side:o.side,...r},u=e;if(u.map){const p=_i(u.map),m=ji(t,r.positions);if(!p||!m)return;d.texture=p,d.uvs=m,d.color=16777215,d.side=on}return dt(d,a,e),d}function ao(t){const e=Zi(t,t.geometry);if(e.positions.length===0)return;const{color:a,layer:r}=at(t.material),n=tr(t.material),i={layer:r,color:a,offset:Rt(t),lineWidth:n,...e};return Qa(t)&&(i.excludeFromOsnap=!0),dt(i,t,t.material),i}function ro(t){const e=Me(t,t.geometry);if(e.positions.length===0)return;const{color:a,layer:r,linePattern:n}=at(t.material),i=n?Ae(e.positions):void 0,o={layer:r,color:a,offset:Rt(t),linePattern:n,lineDistances:i,...e};return Qa(t)&&(o.excludeFromOsnap=!0),dt(o,t,t.material),o}function no(t){const e=Me(t,t.geometry);if(e.positions.length!==0)return kt(t.geometry,t.material,t,e,Rt(t),!0)}function io(t){const e=Me(t,t.geometry);if(e.positions.length===0)return;const a=kt(t.geometry,t.material,t,e,Rt(t));if(a)return{points:!0,...a}}const q=new ut,Pt=new ut,bt=new Rn;bt.matrixAutoUpdate=!1;function oo(t){const e=t;return e.isInstancedMesh===!0&&e.instanceMatrix!=null&&typeof e.count=="number"&&e.geometry!=null}function so(t){return t.renderOrder<1e4||t.isInstancedMesh===!0?!1:Pa(t).sharesTemplateGeometry===!0}function se(t){const e=t.elements;for(let i=0;i<16;i++)if(!Number.isFinite(e[i]))return!1;const a=Math.hypot(e[0],e[1],e[2]),r=Math.hypot(e[4],e[5],e[6]),n=Math.hypot(e[8],e[9],e[10]);return a+r+n>=1e-8}function er(t,e){var a;const r=ct(St(t.geometry),e),n=r.positions.length;if(n===0)return;t.updateMatrixWorld(!0);const i=t.instanceMatrix.array,o=((a=r.indices)==null?void 0:a.length)??0;let s=0;for(let m=0;m<t.count;m++)q.fromArray(i,m*16),se(q)&&s++;if(s===0)return;const l=new Float32Array(s*n),c=r.indices!=null?new Uint32Array(s*o):void 0,d=n/3;let u=0;for(let m=0;m<t.count;m++){if(q.fromArray(i,m*16),!se(q))continue;Pt.multiplyMatrices(t.matrixWorld,q);const h=ye(r,Pt);if(l.set(h.positions,u*n),c&&h.indices){const f=u*d;for(let g=0;g<h.indices.length;g++)c[u*o+g]=h.indices[g]+f}u++}const p=ve(ct({positions:l,indices:c},e));if(p.slice.positions.length!==0)return{slice:p.slice,offset:p.offset}}function lo(t){const e=at(t),a=t;return!!(e.hatchPattern||e.gradientFill||a.map)}function co(t,e){t.updateMatrixWorld(!0);const a=t.instanceMatrix.array;for(let r=0;r<t.count;r++)q.fromArray(a,r*16),se(q)&&(Pt.multiplyMatrices(t.matrixWorld,q),e(Pt))}function uo(t,e){const a=er(t,2);if(!a)return;const r=xt(t),{color:n,layer:i,linePattern:o}=at(r),s=o?Ae(a.slice.positions):void 0,l={layer:i,color:n,offset:a.offset,linePattern:o,lineDistances:s,...a.slice};oe(t)&&(l.excludeFromOsnap=!0),dt(l,t,r),e.push(l)}function pa(t,e,a){const r=xt(t);if(!a&&qa(r))return;if(!a&&lo(r)){const o=ct(St(t.geometry),3);if(o.positions.length===0)return;co(t,s=>{const l=ct(ye(o,s),3);if(l.positions.length===0)return;const c=ve(l);bt.matrix.copy(s),bt.matrixWorld.copy(s),bt.matrixWorldNeedsUpdate=!1;const d=kt(t.geometry,r,bt,c.slice,c.offset,!0);d&&e.push(d)});return}const n=er(t,a?1:3);if(!n)return;const i=kt(t.geometry,r,t,n.slice,n.offset,!a);i&&e.push(a?{...i,points:!0}:i)}function Bt(t){const e=t;return t instanceof en||e.isLineSegments2===!0||t.type==="LineSegments2"}function ha(t){const e=t;return t instanceof tn||e.isLineSegments===!0||t.type==="LineSegments"}function fa(t){const e=t;return t instanceof an||e.isMesh===!0||e.isInstancedMesh===!0||t.type==="Mesh"}function mo(t){const e=[],a=[];return t.traverse(r=>{if(!(Yr(r)||Gr(r)||so(r))){if(oo(r)){if(!Et(r,t))return;r.isPoints===!0?pa(r,a,!0):ha(r)&&!Bt(r)?uo(r,e):fa(r)&&!Bt(r)&&pa(r,a,!1);return}if(r instanceof $e){const n=ro(r);n&&e.push(n);return}if(r instanceof Wr){const n=ao(r);n&&e.push(n);return}if(r instanceof He){const n=no(r);n&&a.push(n);return}if(r instanceof Kr){const n=io(r);n&&a.push(n);return}if(Bt(r)){if(!Et(r,t))return;const n=qi(r.geometry);if(n.positions.length===0)return;const i=xt(r),{color:o,layer:s}=at(i),{offset:l,...c}=Zt(r,n),d={layer:s,color:o,offset:l,lineWidth:tr(i),...c};oe(r)&&(d.excludeFromOsnap=!0),dt(d,r,i),e.push(d)}else if(ha(r)&&!(r instanceof $e)){if(!Et(r,t))return;const n=ct(St(r.geometry),2);if(n.positions.length===0)return;const i=xt(r),{color:o,layer:s,linePattern:l}=at(i),{offset:c,...d}=Zt(r,n),u=l?Ae(d.positions):void 0,p={layer:s,color:o,offset:c,linePattern:l,lineDistances:u,...d};oe(r)&&(p.excludeFromOsnap=!0),dt(p,r,i),e.push(p)}else if(fa(r)&&!Bt(r)&&!(r instanceof He)){if(!Et(r,t))return;const n=xt(r);if(qa(n))return;const i=ct(St(r.geometry),3);if(i.positions.length===0)return;const{offset:o,...s}=Zt(r,i),l=kt(r.geometry,n,r,s,o,!0);l&&a.push(l)}}}),{lineBatches:e,meshBatches:a}}const ga={size:8,colorCss:"#0080ff",hotColorCss:"#ff0000"};function ba(t){const e=new qr(Qr.ByACI,t);return e.cssColor??`rgb(${e.red}, ${e.green}, ${e.blue})`}function po(t){try{const e=Xr.instance(),a=e.getVar(Gt.GRIPSIZE,t),r=e.getVar(Gt.GRIPCOLOR,t),n=e.getVar(Gt.GRIPHOT,t);return!(a>0)||!Number.isFinite(a)?ga:{size:a,colorCss:ba(r),hotColorCss:ba(n)}}catch{return ga}}function ar(t,e){const a=t.extmin,r=t.extmax,n=po(t);return{title:e==null?void 0:e.title,extents:{minX:a.x,minY:a.y,maxX:r.x,maxY:r.y},units:{insunits:t.insunits,lunits:t.lunits,luprec:t.luprec,aunits:t.aunits,auprec:t.auprec,measurement:t.measurement,ltscale:t.ltscale,angbase:t.angbase,angdir:t.angdir},grip:n,background:(e==null?void 0:e.background)??0}}function wa(t,e,a,r,n){return Math.atan2(r-e,n*(a-t))}function Ee(t){return t.z>=0?1:-1}function rr(t,e,a){if(!(a.radius>0)||!Number.isFinite(a.radius))return;const r=a.clockwise?-1:1,n=a.center.x,i=a.center.y;t.push({kind:"arc",layer:e,cx:n,cy:i,r:a.radius,startAngle:wa(n,i,a.startPoint.x,a.startPoint.y,r),endAngle:wa(n,i,a.endPoint.x,a.endPoint.y,r),normalSign:r})}function S(t,e){const a=new V(e.x,e.y,e.z??0).applyMatrix4(t);return{x:a.x,y:a.y}}function ho(t){const e=t.elements;return new ut(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])}function zt(t,e){return new ut().multiplyMatrices(t,ho(e))}function nr(t,e){const a=new V(e.x,e.y,e.z??0).transformDirection(t).normalize();return{x:a.x,y:a.y}}function le(t){const e=new V(t.elements[0],t.elements[1],t.elements[2]).length(),a=new V(t.elements[4],t.elements[5],t.elements[6]).length();return lt.equal(e,a,Ua*Math.max(e,a,1))}function fo(t,e){const a=t.tables.blockTable.getIdAt(e);if(a)return a;for(const n of t.tables.blockTable.newIterator())if(n.objectId===e)return n;const r=t.tables.blockTable.modelSpace;if(r.objectId===e)return r}function go(t){if(t instanceof zn)return!0;const e=t;return(e.type==="LINE"||e.type==="Line")&&e.startPoint!=null&&e.endPoint!=null}function bo(t,e,a,r){r.startPoint,r.endPoint}function ir(t,e){return t.blockTableRecord??(t.blockName?e.tables.blockTable.getAt(t.blockName):void 0)}function wo(t,e){const a=t.dimBlockId;return a?e.tables.blockTable.getAt(a):void 0}function xo(t,e){const a=ir(t,e);if(a)return a;const r=t.owningBlockRecordId;return r?e.tables.blockTable.getAt(r):void 0}function or(t){return t.getFullInsertionTransform()}function yo(t){for(const e of t.newIterator())return!0;return!1}function vo(t){return typeof t.getFullInsertionTransform=="function"&&"blockTableRecord"in t}function Q(t,e,a,r,n){if(r.length<2)return;const i=le(a),o=a.elements[0]*a.elements[5]-a.elements[4]*a.elements[1]<0?-1:1,s=[];for(const l of r){const c=S(a,l);let d=l.bulge??0;lt.isPositive(Math.abs(d))&&(d=i?d*o:0),s.push(c.x,c.y,d)}t.push({kind:"path",layer:e,closed:n,vertices:s})}function sr(t,e){return lt.equal(t.x,e.x)&&lt.equal(t.y,e.y)}function ko(t){return(t.clockwise?-1:1)*Math.tan(t.deltaAngle/4)}function xa(t,e,a,r){if(t.length===0){t.push({x:e.x,y:e.y,z:e.z??0,bulge:r}),t.push({x:a.x,y:a.y,z:a.z??0,bulge:0});return}const n=t[t.length-1];sr(n,e)?n.bulge=r:(n.bulge=0,t.push({x:e.x,y:e.y,z:e.z??0,bulge:r})),t.push({x:a.x,y:a.y,z:a.z??0,bulge:0})}function ya(t){return t.length>=2&&sr(t[0],t[t.length-1])&&t.pop(),t}function yt(t,e,a,r,n){if(r.length<2)return;const i=n?r.length:r.length-1;for(let o=0;o<i;o++)r[o],r[(o+1)%r.length]}function Ao(t,e,a,r){const n=[r.startPosition];for(const i of r.segments)n.push(i.position);yt(t,e,a,n,r.closed)}function Mo(t,e,a){if(a.vertices.length>=2)return a.vertices;if(a.vertices.length===0)return[];const r=a.vertices[0],n=e.lastLeaderLinePoint??e.landingPoint??t.landingPoint??t.contentBasePosition;if(!n)return a.vertices;const i=r.x-n.x,o=r.y-n.y,s=(r.z??0)-(n.z??0);return Math.hypot(i,o,s)<=Ua?a.vertices:[r,n]}function Eo(t,e,a,r){var n,i;for(const s of r.leaders)for(const l of s.leaderLines){const c=Mo(r,s,l);yt(t,e,a,c,!1)}const o=s=>{if(!s)return;const l=S(a,s);t.push({kind:"point",layer:e,x:l.x,y:l.y})};o(r.contentBasePosition),o((n=r.mtextContent)==null?void 0:n.anchorPoint),o((i=r.blockContent)==null?void 0:i.position)}function Bo(t,e,a,r){const n=r.numberOfVertices;if(n<2)return;const i=r.elevation,o=r.closed?n:n-1;for(let s=0;s<o;s++){const l=r.getPointAt(s),c=r.getPointAt((s+1)%n),d=r.getBulgeAt(s),u={x:l.x,y:l.y,z:i},p={x:c.x,y:c.y,z:i};if(lt.isPositive(Math.abs(d))){const m=S(a,u),h=S(a,p);rr(t,e,new me(m,h,d))}}}function Co(t,e,a,r,n,i){const o=S(a,r),s=new V(a.elements[0],a.elements[1],a.elements[2]).length(),l={kind:"circle",layer:e,cx:o.x,cy:o.y,r:n*s,normalSign:Ee(i)};t.push(l)}function Io(t,e,a,r){const n=S(a,r.center),i=new V(a.elements[0],a.elements[1],a.elements[2]).length(),o={kind:"arc",layer:e,cx:n.x,cy:n.y,r:r.radius*i,startAngle:r.startAngle,endAngle:r.endAngle,normalSign:Ee(r.normal)};t.push(o)}function Jt(t,e,a,r){const n=S(a,r.center),i=r._geo,o=(i==null?void 0:i.majorAxis)??{x:1,y:0,z:0},s=nr(a,o),l=Math.hypot(s.x,s.y)||1,c=new V(a.elements[0],a.elements[1],a.elements[2]).length(),d=new V(a.elements[4],a.elements[5],a.elements[6]).length(),u={kind:"ellipse",layer:e,cx:n.x,cy:n.y,majorX:s.x/l,majorY:s.y/l,majorR:r.majorAxisRadius*c,minorR:r.minorAxisRadius*d,startAngle:r.startAngle,endAngle:r.endAngle,closed:r.closed,normalSign:Ee(r.normal)};t.push(u)}function Fo(t,e,a,r){var n,i;const o=r._geo;if(!((n=o==null?void 0:o.controlPoints)!=null&&n.length))return;const s=[];for(const c of o.controlPoints){const d=S(a,c);s.push(d.x,d.y)}const l={kind:"spline",layer:e,controlPoints:s,degree:o.degree??3,knots:[...o.knots??[]],weights:[...o.weights??[]],closed:o.closed??!1};if((i=o.fitPoints)!=null&&i.length){l.fitPoints=[];for(const c of o.fitPoints){const d=S(a,c);l.fitPoints.push(d.x,d.y)}}t.push(l)}const va=1e-6;function So(t){var e;const a=t.elevation,r=(e=t._geo)==null?void 0:e.vertices;return r&&r.length>1?r.map(n=>({x:n.x,y:n.y,z:a,bulge:n.bulge,startWidth:n.startWidth,endWidth:n.endWidth})):Array.from({length:t.numberOfVertices},(n,i)=>{const o=t.getPoint2dAt(i);return{x:o.x,y:o.y,z:a,bulge:0}})}function Lo(t){return t.some(e=>{const a=Math.max(0,e.startWidth??0),r=Math.max(0,e.endWidth??0);return a>va||r>va})}function Po(t,e,a,r){const n=So(r),i=n.length;if(i<2)return;if(Lo(n)){Q(t,e,a,n,r.closed);return}const o=r.closed?i:i-1;for(let s=0;s<o;s++){const l=n[s],c=n[(s+1)%i],d=l.bulge??0;if(lt.isPositive(Math.abs(d))){const u=S(a,l),p=S(a,c);rr(t,e,new me(u,p,d))}}}function zo(t,e,a,r,n){const i=S(a,{x:r.center.x,y:r.center.y,z:n}),o=nr(a,{x:Math.cos(r.rotation),y:Math.sin(r.rotation),z:0}),s=Math.hypot(o.x,o.y)||1,l=new V(a.elements[0],a.elements[1],a.elements[2]).length(),c=new V(a.elements[4],a.elements[5],a.elements[6]).length();t.push({kind:"ellipse",layer:e,cx:i.x,cy:i.y,majorX:o.x/s,majorY:o.y/s,majorR:r.majorAxisRadius*l,minorR:r.minorAxisRadius*c,startAngle:r.startAngle,endAngle:r.endAngle,closed:!1,normalSign:r.clockwise?-1:1})}function Uo(t,e,a,r,n){var i;const o=r.numberOfVertices;if(o<2)return;const s=[];for(let l=0;l<o;l++){const c=r.getPointAt(l);s.push({x:c.x,y:c.y,z:n,bulge:((i=r.vertices[l])==null?void 0:i.bulge)??0})}Q(t,e,a,s,r.closed)}function Do(t,e,a,r,n){if(r instanceof Dn){Uo(t,e,a,r,n);return}if(!(r instanceof Nn))return;const i=[];let o=!1;const s=()=>{const c=ya(i);c.length>=2&&Q(t,e,a,c,!1),i.length=0};for(const c of r.curves)c instanceof Tn?xa(i,{x:c.startPoint.x,y:c.startPoint.y,z:n},{x:c.endPoint.x,y:c.endPoint.y,z:n},0):c instanceof me?xa(i,{x:c.startPoint.x,y:c.startPoint.y,z:n},{x:c.endPoint.x,y:c.endPoint.y,z:n},ko(c)):c instanceof _n&&(o=!0,s(),zo(t,e,a,c,n));const l=ya(i);l.length>=2&&Q(t,e,a,l,!o)}function No(t,e,a,r){var n;const i=(n=r._geo)==null?void 0:n.loops;if(!(i!=null&&i.length))return;const o=r.elevation;for(const s of i)Do(t,e,a,s,o)}function To(t,e,a,r){zt(a,or(r));const n=[0];for(let o=0;o<r.numColumns;o++)n.push(n[o]+r.columnWidth(o));const i=[0];for(let o=0;o<r.numRows;o++)i.push(i[o]-r.rowHeight(o));n[n.length-1],i[i.length-1];for(const o of i);for(const o of n);}function _o(t,e,a,r,n,i,o,s=!0){const l=ce(t.layer,a);if(o&&!o(l))return;const c=xo(t,i);if(c&&!n.has(c.objectId)&&yo(c)){n.add(c.objectId);const u=zt(e,or(t));Ut(c,u,l,r,n,i,o,s),n.delete(c.objectId);return}To(r,l,e,t);const d=S(e,t.position);r.push({kind:"point",layer:l,x:d.x,y:d.y})}function Ro(t,e,a,r){let n=r.boundaryPath();if(n.length>1){const o=n[0],s=n[n.length-1];o.x===s.x&&o.y===s.y&&(o.z??0)===(s.z??0)&&(n=n.slice(0,-1))}n.length>=2&&Q(t,e,a,n,!0);const i=S(a,r.position);t.push({kind:"point",layer:e,x:i.x,y:i.y})}function Oo(t,e,a,r){const n=r.position();Q(t,e,a,[n.upperLeft,n.upperRight,n.lowerRight,n.lowerLeft],!0);const i=S(a,r.getLocation());t.push({kind:"point",layer:e,x:i.x,y:i.y})}function $o(t){var e;const a=(e=t.attributeIterator)==null?void 0:e.call(t);return a?typeof a.toArray=="function"?a.toArray():[...a]:[]}function ce(t,e){return t==="0"?e:t}function lr(t,e,a,r,n,i,o,s=!0){if(!t.visibility)return;const l=ce(t.layer,a);if(!(o&&!o(l))){if(t instanceof ln){_o(t,e,a,r,n,i,o,s);return}if(vo(t)){const c=ir(t,i);if(!c||n.has(c.objectId))return;n.add(c.objectId);const d=t.getFullInsertionTransform(),u=Math.max(1,t.columnCount??1),p=Math.max(1,t.rowCount??1),m=t.columnSpacing??0,h=t.rowSpacing??0,f=ce(t.layer,a);for(let g=0;g<p;g++)for(let w=0;w<u;w++){const b=zt(e,d);(w!==0||g!==0)&&b.multiply(new ut().makeTranslation(w*m,g*h,0));const A=S(b,{x:0,y:0,z:0});r.push({kind:"point",layer:f,x:A.x,y:A.y}),Ut(c,b,f,r,n,i,o,s)}for(const g of $o(t))g instanceof cn,g.isInvisible||lr(g,e,f,r,n,i,o,s);n.delete(c.objectId);return}if(t instanceof dn){const c=t,d=wo(c,i);if(!d||n.has(d.objectId))return;n.add(d.objectId);const u=zt(e,c.getFullDimBlockTransform());Ut(d,u,l,r,n,i,o,!0),n.delete(d.objectId);return}if(go(t)){bo(r,l,e,t);return}if(t instanceof un){le(e)?Co(r,l,e,t.center,t.radius,t.normal):Jt(r,l,e,Ho(t));return}if(t instanceof mn){le(e)?Io(r,l,e,t):Jt(r,l,e,jo(t));return}if(t instanceof ue){Jt(r,l,e,t);return}if(t instanceof pn){Fo(r,l,e,t);return}if(t instanceof hn){Po(r,l,e,t);return}if(t instanceof fn){Bo(r,l,e,t);return}if(t instanceof gn){const c=[];for(let d=0;d<t.numberOfVertices;d++)c.push(t.getPointAt(d));yt(r,l,e,c,t.closed);return}if(t instanceof bn){s&&No(r,l,e,t);return}if(t instanceof wn){t.basePoint,t.unitDir;return}if(t instanceof xn){t.basePoint,t.unitDir;return}if(t instanceof yn){Q(r,l,e,[t.getPointAt(0),t.getPointAt(1),t.getPointAt(3),t.getPointAt(2)],!0);return}if(t instanceof vn){s&&Q(r,l,e,[t.getPointAt(0),t.getPointAt(1),t.getPointAt(3),t.getPointAt(2)],!0);return}if(t instanceof kn){const c=t.subGetGripPoints();c.length>=2&&yt(r,l,e,c,c.length>=3);return}if(t instanceof An){const c=t.vertices;c.length>=2&&yt(r,l,e,c,!1);return}if(t instanceof Mn){Ao(r,l,e,t);return}if(t instanceof En){Eo(r,l,e,t);return}if(t instanceof Bn){const c=S(e,t.position);r.push({kind:"point",layer:l,x:c.x,y:c.y});return}if(t instanceof Cn){const c=S(e,t.location);r.push({kind:"point",layer:l,x:c.x,y:c.y});return}if(t instanceof In){s&&Oo(r,l,e,t);return}if(t instanceof Fn){s&&Ro(r,l,e,t);return}if(t instanceof Sn){const c=S(e,t.position);r.push({kind:"point",layer:l,x:c.x,y:c.y})}}}function Ut(t,e,a,r,n,i,o,s=!0){for(const l of t.newIterator())lr(l,e,a,r,n,i,o,s)}function Ho(t){return new ue(t.center,t.normal,{x:1,y:0,z:0},t.radius,t.radius,0,Un)}function jo(t){return new ue(t.center,t.normal,{x:1,y:0,z:0},t.radius,t.radius,t.startAngle,t.endAngle)}function Vo(t,e,a={}){const r=fo(t,e);if(!r)return{primitives:[]};const n=[],i=new ut;return Ut(r,i,"0",n,new Set,t,a.includeLayer),{primitives:n.filter(o=>o.kind!=="line"&&Xo(o))}}function Xo(t){switch(t.kind){case"line":return Number.isFinite(t.x0)&&Number.isFinite(t.y0)&&Number.isFinite(t.x1)&&Number.isFinite(t.y1);case"circle":return Number.isFinite(t.cx)&&Number.isFinite(t.cy)&&Number.isFinite(t.r);case"arc":return Number.isFinite(t.cx)&&Number.isFinite(t.cy)&&Number.isFinite(t.r)&&Number.isFinite(t.startAngle)&&Number.isFinite(t.endAngle);case"ellipse":return Number.isFinite(t.cx)&&Number.isFinite(t.cy)&&Number.isFinite(t.majorX)&&Number.isFinite(t.majorY)&&Number.isFinite(t.majorR)&&Number.isFinite(t.minorR)&&Number.isFinite(t.startAngle)&&Number.isFinite(t.endAngle);case"spline":return t.controlPoints.every(e=>Number.isFinite(e))&&t.knots.every(e=>Number.isFinite(e))&&t.weights.every(e=>Number.isFinite(e));case"point":return Number.isFinite(t.x)&&Number.isFinite(t.y);case"path":return t.vertices.length>=6&&t.vertices.length%3===0&&t.vertices.every(e=>Number.isFinite(e));default:return t}}const Yo=["en","zh","cs","tr","ar"];function Be(t){if(t==null||t==="")return null;const e=t.toLowerCase().replace("_","-");for(const a of Yo)if(e===a||e.startsWith(`${a}-`))return a;return null}const Go=1128612673;function cr(t){if(t.version!==X)throw new Error(`Unsupported chunk version: ${t.version}`);const e=new ge;e.writeU32(Go),e.writeU8(X),e.writeU8(0),e.writeU8(0),e.writeU8(0),e.writeString(t.layoutBtrId),e.writeU32(t.lineBatches.length);for(const a of t.lineBatches)Ga(e,a);e.writeU32(t.meshBatches.length);for(const a of t.meshBatches)Wa(e,a);return e.toUint8Array()}async function Wo(t){const e=cr(t),a=(await Ya(e)).bytes;return{uncompressed:e,compressed:a}}const Ko=1,dr=2*1024*1024,Ot=2*1024*1024,Zo=8*1024*1024,ka=12*1024*1024,Jo=2*1024*1024,$t="drawing.acex.json",qo=`./${$t}`;function Ce(...t){return`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 1024 1024">${t.map(e=>`<path fill="currentColor" d="${e}"/>`).join("")}</svg>`}Ce("M624 475.968V640h144a128 128 0 0 1 128 128H128a128 128 0 0 1 128-128h144V475.968a192 192 0 1 1 224 0M128 896v-64h768v64z");Ce("M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160");Ce("M876.8 156.8c0-9.6-3.2-16-9.6-22.4s-12.8-9.6-22.4-9.6-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176S0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4m-646.4 528Q115.2 579.2 76.8 512q43.2-72 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4m140.8-96Q352 555.2 352 512c0-44.8 16-83.2 48-112s67.2-48 112-48c28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6q-43.2 72-153.6 172.8c-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176S1024 528 1024 512s-48.001-73.6-134.401-176","M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112s-67.2 48-112 48");const Qo='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" aria-hidden="true"><path fill="currentColor" d="M10 13.5 14.5 9h-9L10 13.5Z"/></svg>',ts='<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 20 20"><path fill="currentColor" d="M10.09 3.53 16.09 6.97 10.09 10.29 4.18 7 10.09 3.56M10.09 2.4 2.17 7 3.31 7.65 10.09 11.45 17 7.62 18.17 7 10.08 2.37 10.09 2.4Z"/><path fill="currentColor" d="M10.25 14.83 18.17 10.22 17 9.57 10.22 13.57 3.32 9.59 2.17 10.22 10.25 14.83Z"/><path fill="currentColor" d="M10.25 17.63 18.17 13 17 12.37 10.22 16.37 3.32 12.38 2.17 13 10.25 17.63Z"/></svg>',es='<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 20 20"><path fill="currentColor" d="M10.09 5.15 16.09 8.59 10.09 11.91 4.18 8.59 10.09 5.15ZM10.09 4 2.17 8.61 3.31 9.25 10.09 13.06 17 9.24 18.16 8.61 10.08 4 10.09 4Z"/><path fill="currentColor" d="M10.25 16.46 18.17 11.85 17 11.2 10.22 15.2 3.32 11.21 2.17 11.85 10.25 16.46Z"/><path fill="none" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" d="M3.5 3.5 16.5 16.5"/></svg>',de={layerOn:ts,layerOff:es,chevronDown:Qo},as=[90,45,30,23,18,10,5];function rs(){return`<div id="mlcad-polar-angles" role="group" data-i18n-attr="aria-label" data-i18n-key="settings.polarAngles" aria-label="Polar tracking angles" hidden>
1
+ import{D as Xr,E as Gt,V as Yr,N as Gr,F as Oe,G as Wr,H as $e,S as Kr,I as Zr,J as Jr,K as ut,f as qr,L as Qr,O as za,P as tn,Q as en,R as an,U as Pa,W as rn,Y as nn,Z as on,_ as je,a0 as sn,a1 as ln,a2 as cn,a3 as dn,a4 as un,a5 as mn,a6 as ue,a7 as pn,a8 as hn,a9 as fn,aa as gn,ab as bn,ac as wn,ad as xn,ae as yn,af as vn,ag as kn,ah as An,ai as Mn,aj as Cn,ak as Bn,al as En,am as Sn,an as Fn,ao as In,ap as Ln,aq as zn,ar as V,as as Pn,at as lt,au as Ha,av as Hn,aw as me,n as Un,ax as Dn,ay as Tn,az as Nn,aA as _n,q as Rn,$ as On,aB as pt,h as x,v as W,aC as B,aD as $n,aE as jn,a as j,aF as Vn,r as Ve,aG as Xn}from"./index-BKIO0gN3.js";import{aH as Il,aI as Ll}from"./index-BKIO0gN3.js";var P=Uint8Array,D=Uint16Array,pe=Int32Array,he=new P([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),fe=new P([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Xe=new P([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ua=function(t,e){for(var a=new D(31),r=0;r<31;++r)a[r]=e+=1<<t[r-1];for(var n=new pe(a[30]),r=1;r<30;++r)for(var i=a[r];i<a[r+1];++i)n[i]=i-a[r]<<5|r;return{b:a,r:n}},Da=Ua(he,2),Yn=Da.b,qt=Da.r;Yn[28]=258,qt[258]=28;var Gn=Ua(fe,0),Ye=Gn.r,Qt=new D(32768);for(var M=0;M<32768;++M){var Z=(M&43690)>>1|(M&21845)<<1;Z=(Z&52428)>>2|(Z&13107)<<2,Z=(Z&61680)>>4|(Z&3855)<<4,Qt[M]=((Z&65280)>>8|(Z&255)<<8)>>1}var wt=(function(t,e,a){for(var r=t.length,n=0,i=new D(e);n<r;++n)t[n]&&++i[t[n]-1];var o=new D(e);for(n=1;n<e;++n)o[n]=o[n-1]+i[n-1]<<1;var s;if(a){s=new D(1<<e);var l=15-e;for(n=0;n<r;++n)if(t[n])for(var c=n<<4|t[n],d=e-t[n],u=o[t[n]-1]++<<d,p=u|(1<<d)-1;u<=p;++u)s[Qt[u]>>l]=c}else for(s=new D(r),n=0;n<r;++n)t[n]&&(s[n]=Qt[o[t[n]-1]++]>>15-t[n]);return s}),tt=new P(288);for(var M=0;M<144;++M)tt[M]=8;for(var M=144;M<256;++M)tt[M]=9;for(var M=256;M<280;++M)tt[M]=7;for(var M=280;M<288;++M)tt[M]=8;var St=new P(32);for(var M=0;M<32;++M)St[M]=5;var Wn=wt(tt,9,0),Kn=wt(St,5,0),Ta=function(t){return(t+7)/8|0},Na=function(t,e,a){return(a==null||a>t.length)&&(a=t.length),new P(t.subarray(e,a))},Zn=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Tt=function(t,e,a){var r=new Error(e||Zn[t]);if(r.code=t,Error.captureStackTrace&&Error.captureStackTrace(r,Tt),!a)throw r;return r},Y=function(t,e,a){a<<=e&7;var r=e/8|0;t[r]|=a,t[r+1]|=a>>8},ht=function(t,e,a){a<<=e&7;var r=e/8|0;t[r]|=a,t[r+1]|=a>>8,t[r+2]|=a>>16},Wt=function(t,e){for(var a=[],r=0;r<t.length;++r)t[r]&&a.push({s:r,f:t[r]});var n=a.length,i=a.slice();if(!n)return{t:Ra,l:0};if(n==1){var o=new P(a[0].s+1);return o[a[0].s]=1,{t:o,l:1}}a.sort(function(S,E){return S.f-E.f}),a.push({s:-1,f:25001});var s=a[0],l=a[1],c=0,d=1,u=2;for(a[0]={s:-1,f:s.f+l.f,l:s,r:l};d!=n-1;)s=a[a[c].f<a[u].f?c++:u++],l=a[c!=d&&a[c].f<a[u].f?c++:u++],a[d++]={s:-1,f:s.f+l.f,l:s,r:l};for(var p=i[0].s,r=1;r<n;++r)i[r].s>p&&(p=i[r].s);var m=new D(p+1),h=te(a[d-1],m,0);if(h>e){var r=0,f=0,g=h-e,w=1<<g;for(i.sort(function(E,C){return m[C.s]-m[E.s]||E.f-C.f});r<n;++r){var b=i[r].s;if(m[b]>e)f+=w-(1<<h-m[b]),m[b]=e;else break}for(f>>=g;f>0;){var A=i[r].s;m[A]<e?f-=1<<e-m[A]++-1:++r}for(;r>=0&&f;--r){var y=i[r].s;m[y]==e&&(--m[y],++f)}h=e}return{t:new P(m),l:h}},te=function(t,e,a){return t.s==-1?Math.max(te(t.l,e,a+1),te(t.r,e,a+1)):e[t.s]=a},Ge=function(t){for(var e=t.length;e&&!t[--e];);for(var a=new D(++e),r=0,n=t[0],i=1,o=function(l){a[r++]=l},s=1;s<=e;++s)if(t[s]==n&&s!=e)++i;else{if(!n&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(n),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(n);i=1,n=t[s]}return{c:a.subarray(0,r),n:e}},ft=function(t,e){for(var a=0,r=0;r<e.length;++r)a+=t[r]*e[r];return a},_a=function(t,e,a){var r=a.length,n=Ta(e+2);t[n]=r&255,t[n+1]=r>>8,t[n+2]=t[n]^255,t[n+3]=t[n+1]^255;for(var i=0;i<r;++i)t[n+i+4]=a[i];return(n+4+r)*8},We=function(t,e,a,r,n,i,o,s,l,c,d){Y(e,d++,a),++n[256];for(var u=Wt(n,15),p=u.t,m=u.l,h=Wt(i,15),f=h.t,g=h.l,w=Ge(p),b=w.c,A=w.n,y=Ge(f),S=y.c,E=y.n,C=new D(19),v=0;v<b.length;++v)++C[b[v]&31];for(var v=0;v<S.length;++v)++C[S[v]&31];for(var k=Wt(C,7),H=k.t,rt=k.l,U=19;U>4&&!H[Xe[U-1]];--U);var nt=c+5<<3,T=ft(n,tt)+ft(i,St)+o,N=ft(n,p)+ft(i,f)+o+14+3*U+ft(C,H)+2*C[16]+3*C[17]+7*C[18];if(l>=0&&nt<=T&&nt<=N)return _a(e,d,t.subarray(l,l+c));var R,L,_,K;if(Y(e,d,1+(N<T)),d+=2,N<T){R=wt(p,m,0),L=p,_=wt(f,g,0),K=f;var jt=wt(H,rt,0);Y(e,d,A-257),Y(e,d+5,E-1),Y(e,d+10,U-4),d+=14;for(var v=0;v<U;++v)Y(e,d+3*v,H[Xe[v]]);d+=3*U;for(var O=[b,S],mt=0;mt<2;++mt)for(var it=O[mt],v=0;v<it.length;++v){var $=it[v]&31;Y(e,d,jt[$]),d+=H[$],$>15&&(Y(e,d,it[v]>>5&127),d+=it[v]>>12)}}else R=Wn,L=tt,_=Kn,K=St;for(var v=0;v<s;++v){var z=r[v];if(z>255){var $=z>>18&31;ht(e,d,R[$+257]),d+=L[$+257],$>7&&(Y(e,d,z>>23&31),d+=he[$]);var ot=z&31;ht(e,d,_[ot]),d+=K[ot],ot>3&&(ht(e,d,z>>5&8191),d+=fe[ot])}else ht(e,d,R[z]),d+=L[z]}return ht(e,d,R[256]),d+L[256]},Jn=new pe([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Ra=new P(0),qn=function(t,e,a,r,n,i){var o=i.z||t.length,s=new P(r+o+5*(1+Math.ceil(o/7e3))+n),l=s.subarray(r,s.length-n),c=i.l,d=(i.r||0)&7;if(e){d&&(l[0]=i.r>>3);for(var u=Jn[e-1],p=u>>13,m=u&8191,h=(1<<a)-1,f=i.p||new D(32768),g=i.h||new D(h+1),w=Math.ceil(a/3),b=2*w,A=function(Yt){return(t[Yt]^t[Yt+1]<<w^t[Yt+2]<<b)&h},y=new pe(25e3),S=new D(288),E=new D(32),C=0,v=0,k=i.i||0,H=0,rt=i.w||0,U=0;k+2<o;++k){var nt=A(k),T=k&32767,N=g[nt];if(f[T]=N,g[nt]=T,rt<=k){var R=o-k;if((C>7e3||H>24576)&&(R>423||!c)){d=We(t,l,0,y,S,E,v,H,U,k-U,d),H=C=v=0,U=k;for(var L=0;L<286;++L)S[L]=0;for(var L=0;L<30;++L)E[L]=0}var _=2,K=0,jt=m,O=T-N&32767;if(R>2&&nt==A(k-O))for(var mt=Math.min(p,R)-1,it=Math.min(32767,k),$=Math.min(258,R);O<=it&&--jt&&T!=N;){if(t[k+_]==t[k+_-O]){for(var z=0;z<$&&t[k+z]==t[k+z-O];++z);if(z>_){if(_=z,K=O,z>mt)break;for(var ot=Math.min(O,z-2),Te=0,L=0;L<ot;++L){var Vt=k-O+L&32767,Vr=f[Vt],Ne=Vt-Vr&32767;Ne>Te&&(Te=Ne,N=Vt)}}}T=N,N=f[T],O+=T-N&32767}if(K){y[H++]=268435456|qt[_]<<18|Ye[K];var _e=qt[_]&31,Re=Ye[K]&31;v+=he[_e]+fe[Re],++S[257+_e],++E[Re],rt=k+_,++C}else y[H++]=t[k],++S[t[k]]}}for(k=Math.max(k,rt);k<o;++k)y[H++]=t[k],++S[t[k]];d=We(t,l,c,y,S,E,v,H,U,k-U,d),c||(i.r=d&7|l[d/8|0]<<3,d-=7,i.h=g,i.p=f,i.i=k,i.w=rt)}else{for(var k=i.w||0;k<o+c;k+=65535){var Xt=k+65535;Xt>=o&&(l[d/8|0]=c,Xt=o),d=_a(l,d+1,t.subarray(k,Xt))}i.i=o}return Na(s,0,r+Ta(d)+n)},Qn=(function(){for(var t=new Int32Array(256),e=0;e<256;++e){for(var a=e,r=9;--r;)a=(a&1&&-306674912)^a>>>1;t[e]=a}return t})(),Oa=function(){var t=-1;return{p:function(e){for(var a=t,r=0;r<e.length;++r)a=Qn[a&255^e[r]]^a>>>8;t=a},d:function(){return~t}}},$a=function(t,e,a,r,n){if(!n&&(n={l:1},e.dictionary)){var i=e.dictionary.subarray(-32768),o=new P(i.length+t.length);o.set(i),o.set(t,i.length),t=o,n.w=i.length}return qn(t,e.level==null?6:e.level,e.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(t.length)))*1.5):20:12+e.mem,a,r,n)},ja=function(t,e){var a={};for(var r in t)a[r]=t[r];for(var r in e)a[r]=e[r];return a},F=function(t,e,a){for(;a;++e)t[e]=a,a>>>=8},ti=function(t,e){var a=e.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=e.level<2?4:e.level==9?2:0,t[9]=3,e.mtime!=0&&F(t,4,Math.floor(new Date(e.mtime||Date.now())/1e3)),a){t[3]=8;for(var r=0;r<=a.length;++r)t[r+10]=a.charCodeAt(r)}},ei=function(t){return 10+(t.filename?t.filename.length+1:0)};function ai(t,e){return $a(t,e||{},0,0)}function ri(t,e){e||(e={});var a=Oa(),r=t.length;a.p(t);var n=$a(t,e,ei(e),8),i=n.length;return ti(n,e),F(n,i-8,a.d()),F(n,i-4,r),n}var Va=function(t,e,a,r){for(var n in t){var i=t[n],o=e+n,s=r;Array.isArray(i)&&(s=ja(r,i[1]),i=i[0]),i instanceof P?a[o]=[i,s]:(a[o+="/"]=[new P(0),s],Va(i,o,a,r))}},Ke=typeof TextEncoder<"u"&&new TextEncoder,ni=typeof TextDecoder<"u"&&new TextDecoder,ii=0;try{ni.decode(Ra,{stream:!0}),ii=1}catch{}function vt(t,e){var a;if(Ke)return Ke.encode(t);for(var r=t.length,n=new P(t.length+(t.length>>1)),i=0,o=function(d){n[i++]=d},a=0;a<r;++a){if(i+5>n.length){var s=new P(i+8+(r-a<<1));s.set(n),n=s}var l=t.charCodeAt(a);l<128||e?o(l):l<2048?(o(192|l>>6),o(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|t.charCodeAt(++a)&1023,o(240|l>>18),o(128|l>>12&63),o(128|l>>6&63),o(128|l&63)):(o(224|l>>12),o(128|l>>6&63),o(128|l&63))}return Na(n,0,i)}var ee=function(t){var e=0;if(t)for(var a in t){var r=t[a].length;r>65535&&Tt(9),e+=r+4}return e},Ze=function(t,e,a,r,n,i,o,s){var l=r.length,c=a.extra,d=s&&s.length,u=ee(c);F(t,e,o!=null?33639248:67324752),e+=4,o!=null&&(t[e++]=20,t[e++]=a.os),t[e]=20,e+=2,t[e++]=a.flag<<1|(i<0&&8),t[e++]=n&&8,t[e++]=a.compression&255,t[e++]=a.compression>>8;var p=new Date(a.mtime==null?Date.now():a.mtime),m=p.getFullYear()-1980;if((m<0||m>119)&&Tt(10),F(t,e,m<<25|p.getMonth()+1<<21|p.getDate()<<16|p.getHours()<<11|p.getMinutes()<<5|p.getSeconds()>>1),e+=4,i!=-1&&(F(t,e,a.crc),F(t,e+4,i<0?-i-2:i),F(t,e+8,a.size)),F(t,e+12,l),F(t,e+14,u),e+=16,o!=null&&(F(t,e,d),F(t,e+6,a.attrs),F(t,e+10,o),e+=14),t.set(r,e),e+=l,u)for(var h in c){var f=c[h],g=f.length;F(t,e,+h),F(t,e+2,g),t.set(f,e+4),e+=4+g}return d&&(t.set(s,e),e+=d),e},oi=function(t,e,a,r,n){F(t,e,101010256),F(t,e+8,a),F(t,e+10,a),F(t,e+12,r),F(t,e+16,n)};function si(t,e){e||(e={});var a={},r=[];Va(t,"",a,e);var n=0,i=0;for(var o in a){var s=a[o],l=s[0],c=s[1],d=c.level==0?0:8,u=vt(o),p=u.length,m=c.comment,h=m&&vt(m),f=h&&h.length,g=ee(c.extra);p>65535&&Tt(11);var w=d?ai(l,c):l,b=w.length,A=Oa();A.p(l),r.push(ja(c,{size:l.length,crc:A.d(),c:w,f:u,m:h,u:p!=o.length||h&&m.length!=f,o:n,compression:d})),n+=30+p+g+b,i+=76+2*(p+g)+(f||0)+b}for(var y=new P(i+22),S=n,E=i-n,C=0;C<r.length;++C){var u=r[C];Ze(y,u.o,u,u.f,u.u,u.c.length);var v=30+u.f.length+ee(u.extra);y.set(u.c,u.o+v),Ze(y,n,u,u.f,u.u,u.c.length,u.o,u.m),n+=16+v+(u.m?u.m.length:0)}return oi(y,n,r.length,E,S),y}class ge{constructor(){this.chunks=[],this.length=0}writeU8(e){const a=new Uint8Array(1);a[0]=e&255,this.chunks.push(a),this.length+=1}writeU32(e){const a=new Uint8Array(4);new DataView(a.buffer).setUint32(0,e>>>0,!0),this.chunks.push(a),this.length+=4}writeI32(e){const a=new Uint8Array(4);new DataView(a.buffer).setInt32(0,e|0,!0),this.chunks.push(a),this.length+=4}writeF32(e){const a=new Uint8Array(4);new DataView(a.buffer).setFloat32(0,e,!0),this.chunks.push(a),this.length+=4}writeF64(e){const a=new Uint8Array(8);new DataView(a.buffer).setFloat64(0,e,!0),this.chunks.push(a),this.length+=8}writeBytes(e){this.chunks.push(e),this.length+=e.length}writeString(e){const a=vt(e);this.writeU32(a.length),this.writeBytes(a)}writeJson(e){this.writeString(JSON.stringify(e))}writeFloat32Array(e){this.alignTo(4);const a=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);this.writeU32(a.length),this.writeBytes(a)}writeUint32Array(e){this.alignTo(4);const a=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);this.writeU32(a.length),this.writeBytes(a)}alignTo(e){const a=this.length%e;if(a===0)return;const r=e-a;for(let n=0;n<r;n++)this.writeU8(0)}toUint8Array(){const e=new Uint8Array(this.length);let a=0;for(const r of this.chunks)e.set(r,a),a+=r.length;return e}}const X=4,Xa="gzip";function ae(t){return{bytes:ri(t),compression:Xa}}async function Ya(t){if(typeof CompressionStream>"u")return ae(t);try{const e=new Uint8Array(t.byteLength);e.set(t);const a=new Blob([e]).stream().pipeThrough(new CompressionStream("gzip"));return{bytes:new Uint8Array(await new Response(a).arrayBuffer()),compression:Xa}}catch{return ae(t)}}const Ft="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%()*+,-.;=?@[]^_{|}~",re=new Int16Array(128).fill(-1);for(let t=0;t<Ft.length;t++)re[Ft.charCodeAt(t)]=t;function Nt(t,e){return e==="base85"?ci(t):mi(t)}function li(t,e){const a=t.length>0&&(t.charCodeAt(0)<=32||t.charCodeAt(t.length-1)<=32)?t.trim():t;return e==="base85"?di(a):pi(a)}function ci(t){const e=t.length;if(e===0)return"";const a=(4-e%4)%4,r=e+a,n=[];for(let o=0;o<r;o+=4){const s=t[o]??0,l=o+1<e?t[o+1]:0,c=o+2<e?t[o+2]:0,d=o+3<e?t[o+3]:0;let u=(s<<24>>>0)+(l<<16)+(c<<8)+d;const p=new Array(5);for(let m=4;m>=0;m--)p[m]=u%85,u=u/85|0;for(let m=0;m<5;m++)n.push(Ft[p[m]])}const i=Math.ceil(e*5/4);return n.slice(0,i).join("")}function di(t){const e=t.replace(/\s+/g,""),a=e.length;if(a===0)return new Uint8Array(0);const r=Math.floor(a*4/5),n=(5-a%5)%5,i=a+n,o=new Uint8Array(i/5*4),s=Ft.length-1;let l=0;for(let c=0;c<i;c+=5){let d=0;for(let u=0;u<5;u++){const p=c+u<a?ui(e.charCodeAt(c+u)):s;d=d*85+p}o[l++]=d>>>24&255,o[l++]=d>>>16&255,o[l++]=d>>>8&255,o[l++]=d&255}return o.subarray(0,r)}function ui(t){if(t<0||t>=re.length)throw new Error("Invalid base85 character");const e=re[t];if(e<0)throw new Error("Invalid base85 character");return e}function mi(t){let e="";for(let a=0;a<t.length;a++)e+=String.fromCharCode(t[a]);return btoa(e)}function pi(t){const e=atob(t),a=new Uint8Array(e.length);for(let r=0;r<e.length;r++)a[r]=e.charCodeAt(r);return a}const Je=1,qe=2,Qe=4,ta=8,ea=16,hi=32,aa=1,ra=2,na=4,ia=8,oa=16,fi=32,sa=64,la=128;function be(t){let e=256+t.positions.byteLength;return t.indices&&(e+=t.indices.byteLength),t.lineDistances&&(e+=t.lineDistances.byteLength),t.linePattern&&(e+=64+t.linePattern.pattern.length*8),e}function we(t){let e=256+t.positions.byteLength;return t.indices&&(e+=t.indices.byteLength),t.gradientPositions&&(e+=t.gradientPositions.byteLength),t.uvs&&(e+=t.uvs.byteLength),t.texture&&(e+=t.texture.bytes.byteLength+64),t.hatchPattern&&(e+=128),t.gradientFill&&(e+=64),e}function Ga(t,e){t.writeString(e.layer),t.writeU32(e.color>>>0),t.writeF64(e.offset[0]),t.writeF64(e.offset[1]),t.writeF64(e.offset[2]),t.writeFloat32Array(e.positions);let a=0;e.indices&&e.indices.length>0&&(a|=Je),e.linePattern&&(a|=qe),e.lineDistances&&e.lineDistances.length>0&&(a|=Qe),e.lineWidth!=null&&e.lineWidth>0&&(a|=ta),e.renderOrder!=null&&e.renderOrder!==0&&(a|=ea),e.excludeFromOsnap&&(a|=hi),t.writeU8(a),a&Je&&t.writeUint32Array(e.indices),a&qe&&t.writeJson(e.linePattern),a&Qe&&t.writeFloat32Array(e.lineDistances),a&ta&&t.writeF32(e.lineWidth),a&ea&&t.writeI32(e.renderOrder)}function Wa(t,e){t.writeString(e.layer),t.writeU32(e.color>>>0),t.writeF64(e.offset[0]),t.writeF64(e.offset[1]),t.writeF64(e.offset[2]),t.writeFloat32Array(e.positions);let a=0;e.indices&&e.indices.length>0&&(a|=aa),e.hatchPattern&&(a|=ra),e.gradientFill&&(a|=na),e.gradientPositions&&e.gradientPositions.length>0&&(a|=ia),e.side!=null&&(a|=oa),e.points&&(a|=fi),e.renderOrder!=null&&e.renderOrder!==0&&(a|=sa),e.texture&&e.texture.bytes.length>0&&e.uvs&&e.uvs.length>=2&&(a|=la),t.writeU8(a),a&aa&&t.writeUint32Array(e.indices),a&ra&&t.writeJson(e.hatchPattern),a&na&&t.writeJson(e.gradientFill),a&ia&&t.writeFloat32Array(e.gradientPositions),a&oa&&t.writeU8(e.side),a&sa&&t.writeI32(e.renderOrder),a&la&&(t.writeFloat32Array(e.uvs),t.writeString(e.texture.mimeType||"image/png"),t.writeU32(e.texture.bytes.byteLength),t.writeBytes(e.texture.bytes))}const gi=1329939265,bi=1,wi=1,xi=2,yi=3,vi=4,ki=5,Ai=6,Mi=7;function Ka(t){var e;switch(t.kind){case"line":return 37;case"circle":return 30;case"arc":return 46;case"ellipse":return 71;case"point":return 21;case"path":return 10+t.vertices.length*8;case"spline":return 10+(t.controlPoints.length+t.knots.length+t.weights.length+(((e=t.fitPoints)==null?void 0:e.length)??0))*8+16;default:return t}}function Ci(t,e){if(t.length===0)return[];const a=[];let r=[],n=64;const i=()=>{r.length!==0&&(a.push(r),r=[],n=64)};for(const o of t){const s=Ka(o);r.length>0&&n+s>e&&i(),r.push(o),n+=s}return i(),a}function xe(t){const e=new ge;e.writeU32(gi),e.writeU8(bi),e.writeU8(0),e.writeU8(0),e.writeU8(0);const a=[],r=new Map,n=i=>{const o=r.get(i);if(o!=null)return o;const s=a.length;return a.push(i),r.set(i,s),s};for(const i of t.primitives)n(i.layer);e.writeU32(a.length);for(const i of a)e.writeString(i);e.writeU32(t.primitives.length);for(const i of t.primitives)Ei(e,i,n(i.layer));return e.toUint8Array()}async function Bi(t){const e=xe(t),a=(await Ya(e)).bytes;return{uncompressed:e,compressed:a}}function Kt(t,e){t.writeU8(e<0?0:1)}function gt(t,e){t.writeU32(e.length);for(const a of e)t.writeF64(a)}function Ei(t,e,a){switch(e.kind){case"line":t.writeU8(wi),t.writeU32(a),t.writeF64(e.x0),t.writeF64(e.y0),t.writeF64(e.x1),t.writeF64(e.y1);return;case"circle":t.writeU8(xi),t.writeU32(a),t.writeF64(e.cx),t.writeF64(e.cy),t.writeF64(e.r),Kt(t,e.normalSign);return;case"arc":t.writeU8(yi),t.writeU32(a),t.writeF64(e.cx),t.writeF64(e.cy),t.writeF64(e.r),t.writeF64(e.startAngle),t.writeF64(e.endAngle),Kt(t,e.normalSign);return;case"ellipse":t.writeU8(vi),t.writeU32(a),t.writeF64(e.cx),t.writeF64(e.cy),t.writeF64(e.majorX),t.writeF64(e.majorY),t.writeF64(e.majorR),t.writeF64(e.minorR),t.writeF64(e.startAngle),t.writeF64(e.endAngle),t.writeU8(e.closed?1:0),Kt(t,e.normalSign??1);return;case"spline":t.writeU8(ki),t.writeU32(a),gt(t,e.controlPoints),t.writeU32(e.degree),gt(t,e.knots),gt(t,e.weights),t.writeU8(e.closed?1:0),gt(t,e.fitPoints??[]);return;case"point":t.writeU8(Ai),t.writeU32(a),t.writeF64(e.x),t.writeF64(e.y);return;case"path":t.writeU8(Mi),t.writeU32(a),t.writeU8(e.closed?1:0),gt(t,e.vertices);return;default:{const r=e;throw new Error(`Unsupported osnap primitive: ${String(r)}`)}}}const Si=1480934209;function Fi(t){if(t.version!==X)throw new Error(`Unsupported snapshot version: ${t.version}`);const e=new ge;e.writeU32(Si),e.writeU8(X),e.writeU8(0),e.writeU8(0),e.writeU8(0),e.writeJson(Ii(t)),e.writeJson(t.layers),e.writeString(t.activeLayoutBtrId),e.writeU32(t.layouts.length);for(const a of t.layouts)Li(e,a);return e.toUint8Array()}function Ii(t){const e={...t.meta.savedViews??{}},a={...t.meta.fitExtents??{}};for(const l of t.layouts)l.savedView&&(e[l.btrId]=l.savedView),l.fitExtents&&(a[l.btrId]=l.fitExtents);const r=Object.keys(e).length>0,n=Object.keys(a).length>0;if(!r&&!n){if(t.meta.savedViews==null&&t.meta.fitExtents==null)return t.meta;const{savedViews:l,fitExtents:c,...d}=t.meta;return d}const{savedViews:i,fitExtents:o,...s}=t.meta;return{...s,...r?{savedViews:e}:{},...n?{fitExtents:a}:{}}}function Li(t,e){t.writeString(e.btrId),t.writeString(e.name),t.writeU8(e.isModelSpace?1:0),zi(t,e.osnap),t.writeJson(e.viewports??null),t.writeU32(e.lineBatches.length);for(const a of e.lineBatches)Ga(t,a);t.writeU32(e.meshBatches.length);for(const a of e.meshBatches)Wa(t,a)}function zi(t,e){if(!e||e.primitives.length===0){t.writeU32(0);return}const a=xe(e);t.writeU32(a.length),t.writeBytes(a)}const Pi="application/vnd.mlightcad.acex-snapshot+binary";function Za(t){if(t.version!==X)throw new Error(`Unsupported snapshot version: ${t.version}`);const e=Fi(t),a=ae(e);return{payload:Nt(a.bytes,"base85"),compression:a.compression}}function Hi(){return Pi}function et(t,e,a){if(a<=0)return new Float32Array(0);if(t instanceof Float32Array)return t.subarray(e,e+a).slice();const r=new Float32Array(a);for(let n=0;n<a;n++)r[n]=t[e+n];return r}function Ui(t,e,a){if(a<=0)return new Uint32Array(0);const r=new Uint32Array(a);for(let n=0;n<a;n++)r[n]=t[e+n];return r}function Ja(t,e){if(e.length===0)return{positions:t,indices:e};let a=0;for(let n=0;n<e.length;n++){const i=e[n];i>a&&(a=i)}const r=(a+1)*3;return r>=t.length?{positions:t,indices:e}:{positions:et(t,0,r),indices:e}}function ca(t,e){return t+e}const st={x:0,y:0,z:0};function Di(t){t.updateMatrixWorld(!0);const e=t.matrixWorld.elements;return st.x=e[12],st.y=e[13],st.z=e[14],[st.x,st.y,st.z]}function ye(t,e){const a=e.elements,r=t.positions;if(r.length===0)return{positions:new Float32Array(0),indices:t.indices};const n=new Float32Array(r.length);for(let i=0;i<r.length;i+=3){const o=r[i],s=r[i+1],l=r[i+2];n[i]=a[0]*o+a[4]*s+a[8]*l+a[12],n[i+1]=a[1]*o+a[5]*s+a[9]*l+a[13],n[i+2]=a[2]*o+a[6]*s+a[10]*l+a[14]}return{positions:n,indices:t.indices?new Uint32Array(t.indices):void 0}}function da(t,e){const a=e*3;return Number.isFinite(t[a])&&Number.isFinite(t[a+1])&&Number.isFinite(t[a+2])}function ct(t,e){const a=t.positions,r=a.length/3|0;if(r===0||e<=0)return t;let n=!1;for(let s=0;s<a.length;s++)if(!Number.isFinite(a[s])){n=!0;break}if(!n)return t;const i=t.indices;if(i&&i.length>0){const s=[];for(let u=0;u+e<=i.length;u+=e){let p=!0;for(let m=0;m<e;m++){const h=i[u+m];if(h<0||h>=r||!da(a,h)){p=!1;break}}if(p)for(let m=0;m<e;m++)s.push(i[u+m])}if(s.length===0)return{positions:new Float32Array(0)};const l=new Int32Array(r);l.fill(-1);const c=[],d=new Uint32Array(s.length);for(let u=0;u<s.length;u++){const p=s[u];let m=l[p];if(m<0){m=c.length/3,l[p]=m;const h=p*3;c.push(a[h],a[h+1],a[h+2])}d[u]=m}return{positions:Float32Array.from(c),indices:d}}const o=[];for(let s=0;s+e<=r;s+=e){let l=!0;for(let c=0;c<e;c++)if(!da(a,s+c)){l=!1;break}if(l)for(let c=0;c<e;c++){const d=(s+c)*3;o.push(a[d],a[d+1],a[d+2])}}return o.length===0?{positions:new Float32Array(0)}:{positions:Float32Array.from(o)}}function ve(t){const e=t.positions;if(e.length<3)return{slice:t,offset:[0,0,0]};let a=1/0,r=1/0,n=1/0,i=-1/0,o=-1/0,s=-1/0,l=0;for(let u=0;u<e.length;u+=3){const p=e[u],m=e[u+1],h=e[u+2];!Number.isFinite(p)||!Number.isFinite(m)||!Number.isFinite(h)||(l++,a=Math.min(a,p),r=Math.min(r,m),n=Math.min(n,h),i=Math.max(i,p),o=Math.max(o,m),s=Math.max(s,h))}if(l===0)return{slice:{positions:new Float32Array(0)},offset:[0,0,0]};const c=[(a+i)/2,(r+o)/2,(n+s)/2],d=new Float32Array(e.length);for(let u=0;u<e.length;u+=3){const p=e[u],m=e[u+1],h=e[u+2];if(!Number.isFinite(p)||!Number.isFinite(m)||!Number.isFinite(h)){d[u]=0,d[u+1]=0,d[u+2]=0;continue}d[u]=p-c[0],d[u+1]=m-c[1],d[u+2]=h-c[2]}return{slice:{positions:d,indices:t.indices?new Uint32Array(t.indices):void 0},offset:c}}function Ti(t,e,a={}){t.updateMatrixWorld(!0);const r=ye(e,t.matrixWorld);return ve(r)}function Ni(t){const e=t.image;if(!e)return;if(typeof document>"u")return void 0;const a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return;try{if(e instanceof ImageData)a.width=e.width,a.height=e.height,r.putImageData(e,0,0);else if(Ri(e)){a.width=e.width,a.height=e.height;const l=$i(e.data,e.width*e.height),c=new ImageData(new Uint8ClampedArray(l),e.width,e.height);r.putImageData(c,0,0)}else if(_i(e)){const l=Oi(e);if(!l)return;a.width=l.width,a.height=l.height,r.drawImage(e,0,0)}else return}catch{return}const n=a.toDataURL("image/png"),i=n.indexOf(",");if(i<0)return;const o=atob(n.slice(i+1)),s=new Uint8Array(o.length);for(let l=0;l<o.length;l++)s[l]=o.charCodeAt(l);return{mimeType:"image/png",bytes:s}}function _i(t){return t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement}function Ri(t){if(!t||typeof t!="object")return!1;const e=t;return e.data!=null&&typeof e.width=="number"&&typeof e.height=="number"&&e.width>=1&&e.height>=1}function Oi(t){let e=Number(t.width),a=Number(t.height);if(t instanceof HTMLImageElement?(e=t.naturalWidth||t.width,a=t.naturalHeight||t.height):typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement&&(e=t.videoWidth||t.width,a=t.videoHeight||t.height),!(!Number.isFinite(e)||!Number.isFinite(a)||e<1||a<1))return{width:e,height:a}}function $i(t,e){const a=e*4;if(t instanceof Uint8ClampedArray&&t.length>=a)return t.length===a?t:t.subarray(0,a);const r=new Uint8ClampedArray(a),n=Math.min(a,t.length);for(let i=0;i<n;i++)r[i]=t[i];if(t.length>=e*3&&t.length<a)for(let i=e-1;i>=0;i--){const o=i*3,s=i*4;r[s]=t[o],r[s+1]=t[o+1],r[s+2]=t[o+2],r[s+3]=255}return r}function ji(t,e){const a=t.getAttribute("uv");if(!a||a.count===0||a.itemSize<2)return;const r=Math.floor(e.length/3)*2;if(r<=0)return;const n=a.array;if(!(a.count*a.itemSize<r))return et(n,0,r)}function qa(t){const e=t;return e.map?!1:e.transparent===!0&&typeof e.opacity=="number"&&e.opacity<.01}function ke(t){const e=t;if(e.isShaderMaterial===!0||t.type==="ShaderMaterial")return e}function Vi(t){var e;const a=ke(t);if(!a)return;const r=a.uniforms.pattern,n=a.uniforms.patternLength;if(!r||!n)return;const i=r.value;if(!(!Array.isArray(i)||i.length===0))return{pattern:[...i],patternLength:Number(n.value),viewportScale:Number(((e=a.uniforms.u_viewportScale)==null?void 0:e.value)??1)}}function Xi(t){var e;const a=ke(t);if(!a)return;const r=a.uniforms.u_patternLines;if(!r)return;const n=r.value;if(!(!Array.isArray(n)||n.length===0))return{patternAngle:Number(((e=a.uniforms.u_patternAngle)==null?void 0:e.value)??0),patternLines:n.map(Gi)}}function Yi(t){var e,a,r,n,i;const o=ke(t);if(!o||o.uniforms.u_patternLines)return;const s=(e=o.uniforms.u_startColor)==null?void 0:e.value,l=(a=o.uniforms.u_endColor)==null?void 0:a.value,c=o.uniforms.u_gradientType;if(!(!(s!=null&&s.getHex)||c==null))return{startColor:s.getHex(),endColor:((r=l==null?void 0:l.getHex)==null?void 0:r.call(l))??s.getHex(),angle:Number(((n=o.uniforms.u_angle)==null?void 0:n.value)??0),shift:Number(((i=o.uniforms.u_shift)==null?void 0:i.value)??0),gradientType:Number(c.value)}}function Gi(t){return{angle:t.angle,base:[t.base.x,t.base.y],offset:[t.offset.x,t.offset.y],dashLengths:[...t.dashLengths],patternLength:t.patternLength}}function Ae(t){const e=t.length/3;if(e<2)return new Float32Array(0);const a=new Float32Array(e);for(let r=0;r<e;r+=2){r===0?a[r]=0:a[r]=a[r-1];const n=t[r*3],i=t[r*3+1],o=t[r*3+2]??0,s=t[(r+1)*3],l=t[(r+1)*3+1],c=t[(r+1)*3+2]??0,d=s-n,u=l-i,p=c-o;a[r+1]=a[r]+Math.sqrt(d*d+u*u+p*p)}return a}function Wi(t,e){const a=t.getAttribute(e);if(!a||a.count===0)return;const r=a.itemSize;if(t.getIndex()){const d=a.array;return et(d,0,a.count*r)}const n=t.drawRange,i=a.count,o=Math.max(0,Math.min(Math.floor(n.start),i)),s=Math.max(0,i-o),l=!Number.isFinite(n.count)||n.count<=0?s:Math.min(Math.floor(n.count),s);if(l<=0)return;const c=a.array;return et(c,o*r,l*r)}function ua(t,e){const a=e[0],r=e[1],n=e[4],i=e[5],o=e[12],s=e[13],l=Math.atan2(r,a),c=(p,m)=>[a*p+n*m+o,r*p+i*m+s],d=(p,m)=>[a*p+n*m,r*p+i*m],u=(p,m,h)=>{const f=Math.cos(h),g=Math.sin(h);return[f*p-g*m,g*p+f*m]};return{patternAngle:t.patternAngle,patternLines:t.patternLines.map(p=>{const m=p.angle+t.patternAngle,h=p.angle+l,f=h+t.patternAngle,[g,w]=d(Math.cos(m),Math.sin(m)),b=Math.hypot(g,w),[A,y]=u(p.offset[0],p.offset[1],m),[S,E]=d(A,y),C=u(S,E,-f);return{angle:h,base:c(p.base[0],p.base[1]),offset:C,dashLengths:p.dashLengths.map(v=>v*b),patternLength:p.patternLength*b}})}}function Ki(t,e){return{patternAngle:t.patternAngle,patternLines:t.patternLines.map(a=>{const r=new je(a.base[0]-e[0],a.base[1]-e[1]),n=new je(a.offset[0],a.offset[1]);return sn(r,n,a.angle,t.patternAngle,a.patternLength),{angle:a.angle,base:[r.x,r.y],offset:[a.offset[0],a.offset[1]],dashLengths:[...a.dashLengths],patternLength:a.patternLength}})}}function ne(t,e){return!Number.isFinite(t)||t<0?0:Math.min(Math.floor(t),e)}function ie(t,e,a){const r=Math.max(0,e-a);return!Number.isFinite(t)||t<=0?r:Math.min(Math.floor(t),r)}function It(t){const e=t.getAttribute("position");if(!e)return{positions:new Float32Array(0)};const a=t.drawRange,r=e.array,n=e.itemSize,i=t.getIndex();if(i){const l=et(r,0,e.count*n),c=i.array,d=ne(a.start,i.count),u=ie(a.count,i.count,d),p=Ui(c,d,u);return Ja(l,p)}const o=ne(a.start,e.count),s=ie(a.count,e.count,o);return{positions:et(r,o*n,s*n)}}function Lt(t){return Ln(t.flags)&&zn(t.flags)}function Qa(t){const{count:e}=t.mappingStats;for(let a=0;a<e;a++){let r;try{r=t.getGeometryRangeAt(a)}catch{continue}if(Lt(r)&&r.bboxIntersectionCheck)return!0}return!1}function oe(t){return za(t).bboxIntersectionCheck===!0}function Me(t,e){const a=e.getAttribute("position");if(!a)return{positions:new Float32Array(0)};const r=a.itemSize,n=a.array,i=e.getIndex(),{count:o}=t.mappingStats;if(i){const u=et(n,0,a.count*r),p=i.array;let m=0;const h=[];for(let w=0;w<o;w++){let b;try{b=t.getGeometryRangeAt(w)}catch{continue}const A=b.indexStart??0,y=b.indexCount??0;!Lt(b)||y<=0||(h.push({start:A,count:y}),m+=y)}if(m===0)return{positions:new Float32Array(0)};const f=new Uint32Array(m);let g=0;for(const w of h)for(let b=0;b<w.count;b++)f[g++]=p[w.start+b];return Ja(u,f)}let s=0;const l=[];for(let u=0;u<o;u++){let p;try{p=t.getGeometryRangeAt(u)}catch{continue}if(!Lt(p)||p.vertexCount<=0)continue;const m=p.vertexCount*r;l.push({start:p.vertexStart*r,floatCount:m}),s+=m}if(s===0)return{positions:new Float32Array(0)};const c=new Float32Array(s);let d=0;if(n instanceof Float32Array)for(const u of l)c.set(n.subarray(u.start,u.start+u.floatCount),d),d+=u.floatCount;else for(const u of l)for(let p=0;p<u.floatCount;p++)c[d++]=n[u.start+p];return{positions:c}}function ma(t,e,a){t.push(e.getX(a),e.getY(a),e.getZ(a))}function Zi(t,e){const a=e.getAttribute("instanceStart"),r=e.getAttribute("instanceEnd");if(!a||!r)return{positions:new Float32Array(0)};const{count:n}=t.mappingStats,i=[];for(let o=0;o<n;o++){let s;try{s=t.getGeometryRangeAt(o)}catch{continue}if(!Lt(s)||s.vertexCount<=0)continue;const l=s.vertexStart,c=l+s.vertexCount;for(let d=l;d<c;d++)ma(i,a,d),ma(i,r,d)}return{positions:new Float32Array(i)}}function Ji(t,e){const a=t.instanceCount;if(Number.isFinite(a)&&a>=0)return Math.min(Math.floor(a),e);const r=t.drawRange,n=ne(r.start,e);return ie(r.count,e,n)}function qi(t){const e=t.getAttribute("instanceStart"),a=t.getAttribute("instanceEnd");if(!e||!a||e.count===0)return{positions:new Float32Array(0)};const r=Ji(t,e.count);if(r<=0)return{positions:new Float32Array(0)};const n=[];for(let i=0;i<r;i++){const o=[e.getX(i),e.getY(i),e.getZ(i)],s=[a.getX(i),a.getY(i),a.getZ(i)];!o.every(Number.isFinite)||!s.every(Number.isFinite)||n.push(o[0],o[1],o[2],s[0],s[1],s[2])}return{positions:new Float32Array(n)}}function Ct(t,e){let a=t;for(;a&&a!==e;){if(a.visible===!1)return!1;a=a.parent}return!0}function tr(t){if(t instanceof nn)return t.linewidth}function xt(t){if("material"in t){const e=t.userData.originalMaterial??t.material;return Array.isArray(e)?e[0]:e}return t.material}function at(t){var e;const a=Pa(t),r=a.layer??"0",n=t;let i=n.color!=null?n.color.getHex():a.color??16777215;const o=Vi(t),s=Xi(t),l=Yi(t);if(t instanceof rn||t.type==="ShaderMaterial"){const c=(e=t.uniforms.u_color)==null?void 0:e.value;c!=null&&c.getHex?i=c.getHex():l&&(i=l.startColor)}return{color:i,layer:r,linePattern:o,hatchPattern:s,gradientFill:l,side:s||l?t.side:void 0}}function Qi(t,e){const a=Pa(e).drawOrder??t.renderOrder;return a===0?void 0:a}function dt(t,e,a){const r=Qi(e,a);r!=null&&(t.renderOrder=r)}function to(t,e){if(!e)return;const a=t.userData.bakedWorldMatrix;return a&&a.length>=16?ua(e,a):(t.updateMatrixWorld(!0),ua(e,Array.from(t.matrixWorld.elements)))}function _t(t){return Di(t)}function Zt(t,e,a={}){const r=Ti(t,e,a);return{...r.slice,offset:r.offset}}function eo(t){if(t.indices&&t.indices.length>=3)return t;const e=t.positions.length/3|0;if(e<3||e%3!==0)return t;const a=new Uint32Array(e);for(let r=0;r<e;r++)a[r]=r;return{...t,indices:a}}function kt(t,e,a,r,n,i=!1){i&&(r=eo(r));const o=at(e),s=to(a,o.hatchPattern),l=s?Ki(s,n):void 0,c=o.gradientFill?Wi(t,"gradientPosition"):void 0,d={layer:o.layer,color:o.color,offset:n,hatchPattern:l,gradientFill:o.gradientFill,gradientPositions:c,side:o.side,...r},u=e;if(u.map){const p=Ni(u.map),m=ji(t,r.positions);if(!p||!m)return;d.texture=p,d.uvs=m,d.color=16777215,d.side=on}return dt(d,a,e),d}function ao(t){const e=Zi(t,t.geometry);if(e.positions.length===0)return;const{color:a,layer:r}=at(t.material),n=tr(t.material),i={layer:r,color:a,offset:_t(t),lineWidth:n,...e};return Qa(t)&&(i.excludeFromOsnap=!0),dt(i,t,t.material),i}function ro(t){const e=Me(t,t.geometry);if(e.positions.length===0)return;const{color:a,layer:r,linePattern:n}=at(t.material),i=n?Ae(e.positions):void 0,o={layer:r,color:a,offset:_t(t),linePattern:n,lineDistances:i,...e};return Qa(t)&&(o.excludeFromOsnap=!0),dt(o,t,t.material),o}function no(t){const e=Me(t,t.geometry);if(e.positions.length!==0)return kt(t.geometry,t.material,t,e,_t(t),!0)}function io(t){const e=Me(t,t.geometry);if(e.positions.length===0)return;const a=kt(t.geometry,t.material,t,e,_t(t));if(a)return{points:!0,...a}}const J=new ut,zt=new ut,bt=new _n;bt.matrixAutoUpdate=!1;function oo(t){const e=t;return e.isInstancedMesh===!0&&e.instanceMatrix!=null&&typeof e.count=="number"&&e.geometry!=null}function so(t){return t.renderOrder<1e4||t.isInstancedMesh===!0?!1:za(t).sharesTemplateGeometry===!0}function se(t){const e=t.elements;for(let i=0;i<16;i++)if(!Number.isFinite(e[i]))return!1;const a=Math.hypot(e[0],e[1],e[2]),r=Math.hypot(e[4],e[5],e[6]),n=Math.hypot(e[8],e[9],e[10]);return a+r+n>=1e-8}function er(t,e){var a;const r=ct(It(t.geometry),e),n=r.positions.length;if(n===0)return;t.updateMatrixWorld(!0);const i=t.instanceMatrix.array,o=((a=r.indices)==null?void 0:a.length)??0;let s=0;for(let m=0;m<t.count;m++)J.fromArray(i,m*16),se(J)&&s++;if(s===0)return;const l=new Float32Array(s*n),c=r.indices!=null?new Uint32Array(s*o):void 0,d=n/3;let u=0;for(let m=0;m<t.count;m++){if(J.fromArray(i,m*16),!se(J))continue;zt.multiplyMatrices(t.matrixWorld,J);const h=ye(r,zt);if(l.set(h.positions,u*n),c&&h.indices){const f=u*d;for(let g=0;g<h.indices.length;g++)c[u*o+g]=h.indices[g]+f}u++}const p=ve(ct({positions:l,indices:c},e));if(p.slice.positions.length!==0)return{slice:p.slice,offset:p.offset}}function lo(t){const e=at(t),a=t;return!!(e.hatchPattern||e.gradientFill||a.map)}function co(t,e){t.updateMatrixWorld(!0);const a=t.instanceMatrix.array;for(let r=0;r<t.count;r++)J.fromArray(a,r*16),se(J)&&(zt.multiplyMatrices(t.matrixWorld,J),e(zt))}function uo(t,e){const a=er(t,2);if(!a)return;const r=xt(t),{color:n,layer:i,linePattern:o}=at(r),s=o?Ae(a.slice.positions):void 0,l={layer:i,color:n,offset:a.offset,linePattern:o,lineDistances:s,...a.slice};oe(t)&&(l.excludeFromOsnap=!0),dt(l,t,r),e.push(l)}function pa(t,e,a){const r=xt(t);if(!a&&qa(r))return;if(!a&&lo(r)){const o=ct(It(t.geometry),3);if(o.positions.length===0)return;co(t,s=>{const l=ct(ye(o,s),3);if(l.positions.length===0)return;const c=ve(l);bt.matrix.copy(s),bt.matrixWorld.copy(s),bt.matrixWorldNeedsUpdate=!1;const d=kt(t.geometry,r,bt,c.slice,c.offset,!0);d&&e.push(d)});return}const n=er(t,a?1:3);if(!n)return;const i=kt(t.geometry,r,t,n.slice,n.offset,!a);i&&e.push(a?{...i,points:!0}:i)}function Bt(t){const e=t;return t instanceof en||e.isLineSegments2===!0||t.type==="LineSegments2"}function ha(t){const e=t;return t instanceof tn||e.isLineSegments===!0||t.type==="LineSegments"}function fa(t){const e=t;return t instanceof an||e.isMesh===!0||e.isInstancedMesh===!0||t.type==="Mesh"}function mo(t){const e=[],a=[];return t.traverse(r=>{if(!(Yr(r)||Gr(r)||so(r))){if(oo(r)){if(!Ct(r,t))return;r.isPoints===!0?pa(r,a,!0):ha(r)&&!Bt(r)?uo(r,e):fa(r)&&!Bt(r)&&pa(r,a,!1);return}if(r instanceof Oe){const n=ro(r);n&&e.push(n);return}if(r instanceof Wr){const n=ao(r);n&&e.push(n);return}if(r instanceof $e){const n=no(r);n&&a.push(n);return}if(r instanceof Kr){const n=io(r);n&&a.push(n);return}if(Bt(r)){if(!Ct(r,t))return;const n=qi(r.geometry);if(n.positions.length===0)return;const i=xt(r),{color:o,layer:s}=at(i),{offset:l,...c}=Zt(r,n),d={layer:s,color:o,offset:l,lineWidth:tr(i),...c};oe(r)&&(d.excludeFromOsnap=!0),dt(d,r,i),e.push(d)}else if(ha(r)&&!(r instanceof Oe)){if(!Ct(r,t))return;const n=ct(It(r.geometry),2);if(n.positions.length===0)return;const i=xt(r),{color:o,layer:s,linePattern:l}=at(i),{offset:c,...d}=Zt(r,n),u=l?Ae(d.positions):void 0,p={layer:s,color:o,offset:c,linePattern:l,lineDistances:u,...d};oe(r)&&(p.excludeFromOsnap=!0),dt(p,r,i),e.push(p)}else if(fa(r)&&!Bt(r)&&!(r instanceof $e)){if(!Ct(r,t))return;const n=xt(r);if(qa(n))return;const i=ct(It(r.geometry),3);if(i.positions.length===0)return;const{offset:o,...s}=Zt(r,i),l=kt(r.geometry,n,r,s,o,!0);l&&a.push(l)}}}),{lineBatches:e,meshBatches:a}}const ga={size:8,colorCss:"#0080ff",hotColorCss:"#ff0000"};function ba(t){const e=new qr(Qr.ByACI,t);return e.cssColor??`rgb(${e.red}, ${e.green}, ${e.blue})`}function po(t){try{const e=Xr.instance(),a=e.getVar(Gt.GRIPSIZE,t),r=e.getVar(Gt.GRIPCOLOR,t),n=e.getVar(Gt.GRIPHOT,t);return!(a>0)||!Number.isFinite(a)?ga:{size:a,colorCss:ba(r),hotColorCss:ba(n)}}catch{return ga}}function ar(t,e){const a=t.extmin,r=t.extmax,n=po(t);return{title:e==null?void 0:e.title,extents:{minX:a.x,minY:a.y,maxX:r.x,maxY:r.y},units:{insunits:t.insunits,lunits:t.lunits,luprec:t.luprec,aunits:t.aunits,auprec:t.auprec,measurement:t.measurement,ltscale:t.ltscale,angbase:t.angbase,angdir:t.angdir},grip:n,background:(e==null?void 0:e.background)??0}}function wa(t,e,a,r,n){return Math.atan2(r-e,n*(a-t))}function Ce(t){return t.z>=0?1:-1}function rr(t,e,a){if(!(a.radius>0)||!Number.isFinite(a.radius))return;const r=a.clockwise?-1:1,n=a.center.x,i=a.center.y;t.push({kind:"arc",layer:e,cx:n,cy:i,r:a.radius,startAngle:wa(n,i,a.startPoint.x,a.startPoint.y,r),endAngle:wa(n,i,a.endPoint.x,a.endPoint.y,r),normalSign:r})}function I(t,e){const a=new V(e.x,e.y,e.z??0).applyMatrix4(t);return{x:a.x,y:a.y}}function ho(t){const e=t.elements;return new ut(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])}function Pt(t,e){return new ut().multiplyMatrices(t,ho(e))}function nr(t,e){const a=new V(e.x,e.y,e.z??0).transformDirection(t).normalize();return{x:a.x,y:a.y}}function le(t){const e=new V(t.elements[0],t.elements[1],t.elements[2]).length(),a=new V(t.elements[4],t.elements[5],t.elements[6]).length();return lt.equal(e,a,Ha*Math.max(e,a,1))}function fo(t,e){const a=t.tables.blockTable.getIdAt(e);if(a)return a;for(const n of t.tables.blockTable.newIterator())if(n.objectId===e)return n;const r=t.tables.blockTable.modelSpace;if(r.objectId===e)return r}function go(t){if(t instanceof Pn)return!0;const e=t;return(e.type==="LINE"||e.type==="Line")&&e.startPoint!=null&&e.endPoint!=null}function bo(t,e,a,r){r.startPoint,r.endPoint}function ir(t,e){return t.blockTableRecord??(t.blockName?e.tables.blockTable.getAt(t.blockName):void 0)}function wo(t,e){const a=t.dimBlockId;return a?e.tables.blockTable.getAt(a):void 0}function xo(t,e){const a=ir(t,e);if(a)return a;const r=t.owningBlockRecordId;return r?e.tables.blockTable.getAt(r):void 0}function or(t){return t.getFullInsertionTransform()}function yo(t){for(const e of t.newIterator())return!0;return!1}function vo(t){return typeof t.getFullInsertionTransform=="function"&&"blockTableRecord"in t}function q(t,e,a,r,n){if(r.length<2)return;const i=le(a),o=a.elements[0]*a.elements[5]-a.elements[4]*a.elements[1]<0?-1:1,s=[];for(const l of r){const c=I(a,l);let d=l.bulge??0;lt.isPositive(Math.abs(d))&&(d=i?d*o:0),s.push(c.x,c.y,d)}t.push({kind:"path",layer:e,closed:n,vertices:s})}function sr(t,e){return lt.equal(t.x,e.x)&&lt.equal(t.y,e.y)}function ko(t){return(t.clockwise?-1:1)*Math.tan(t.deltaAngle/4)}function xa(t,e,a,r){if(t.length===0){t.push({x:e.x,y:e.y,z:e.z??0,bulge:r}),t.push({x:a.x,y:a.y,z:a.z??0,bulge:0});return}const n=t[t.length-1];sr(n,e)?n.bulge=r:(n.bulge=0,t.push({x:e.x,y:e.y,z:e.z??0,bulge:r})),t.push({x:a.x,y:a.y,z:a.z??0,bulge:0})}function ya(t){return t.length>=2&&sr(t[0],t[t.length-1])&&t.pop(),t}function yt(t,e,a,r,n){if(r.length<2)return;const i=n?r.length:r.length-1;for(let o=0;o<i;o++)r[o],r[(o+1)%r.length]}function Ao(t,e,a,r){const n=[r.startPosition];for(const i of r.segments)n.push(i.position);yt(t,e,a,n,r.closed)}function Mo(t,e,a){if(a.vertices.length>=2)return a.vertices;if(a.vertices.length===0)return[];const r=a.vertices[0],n=e.lastLeaderLinePoint??e.landingPoint??t.landingPoint??t.contentBasePosition;if(!n)return a.vertices;const i=r.x-n.x,o=r.y-n.y,s=(r.z??0)-(n.z??0);return Math.hypot(i,o,s)<=Ha?a.vertices:[r,n]}function Co(t,e,a,r){var n,i;for(const s of r.leaders)for(const l of s.leaderLines){const c=Mo(r,s,l);yt(t,e,a,c,!1)}const o=s=>{if(!s)return;const l=I(a,s);t.push({kind:"point",layer:e,x:l.x,y:l.y})};o(r.contentBasePosition),o((n=r.mtextContent)==null?void 0:n.anchorPoint),o((i=r.blockContent)==null?void 0:i.position)}function Bo(t,e,a,r){const n=r.numberOfVertices;if(n<2)return;const i=r.elevation,o=r.closed?n:n-1;for(let s=0;s<o;s++){const l=r.getPointAt(s),c=r.getPointAt((s+1)%n),d=r.getBulgeAt(s),u={x:l.x,y:l.y,z:i},p={x:c.x,y:c.y,z:i};if(lt.isPositive(Math.abs(d))){const m=I(a,u),h=I(a,p);rr(t,e,new me(m,h,d))}}}function Eo(t,e,a,r,n,i){const o=I(a,r),s=new V(a.elements[0],a.elements[1],a.elements[2]).length(),l={kind:"circle",layer:e,cx:o.x,cy:o.y,r:n*s,normalSign:Ce(i)};t.push(l)}function So(t,e,a,r){const n=I(a,r.center),i=new V(a.elements[0],a.elements[1],a.elements[2]).length(),o={kind:"arc",layer:e,cx:n.x,cy:n.y,r:r.radius*i,startAngle:r.startAngle,endAngle:r.endAngle,normalSign:Ce(r.normal)};t.push(o)}function Jt(t,e,a,r){const n=I(a,r.center),i=r._geo,o=(i==null?void 0:i.majorAxis)??{x:1,y:0,z:0},s=nr(a,o),l=Math.hypot(s.x,s.y)||1,c=new V(a.elements[0],a.elements[1],a.elements[2]).length(),d=new V(a.elements[4],a.elements[5],a.elements[6]).length(),u={kind:"ellipse",layer:e,cx:n.x,cy:n.y,majorX:s.x/l,majorY:s.y/l,majorR:r.majorAxisRadius*c,minorR:r.minorAxisRadius*d,startAngle:r.startAngle,endAngle:r.endAngle,closed:r.closed,normalSign:Ce(r.normal)};t.push(u)}function Fo(t,e,a,r){var n,i;const o=r._geo;if(!((n=o==null?void 0:o.controlPoints)!=null&&n.length))return;const s=[];for(const c of o.controlPoints){const d=I(a,c);s.push(d.x,d.y)}const l={kind:"spline",layer:e,controlPoints:s,degree:o.degree??3,knots:[...o.knots??[]],weights:[...o.weights??[]],closed:o.closed??!1};if((i=o.fitPoints)!=null&&i.length){l.fitPoints=[];for(const c of o.fitPoints){const d=I(a,c);l.fitPoints.push(d.x,d.y)}}t.push(l)}const va=1e-6;function Io(t){var e;const a=t.elevation,r=(e=t._geo)==null?void 0:e.vertices;return r&&r.length>1?r.map(n=>({x:n.x,y:n.y,z:a,bulge:n.bulge,startWidth:n.startWidth,endWidth:n.endWidth})):Array.from({length:t.numberOfVertices},(n,i)=>{const o=t.getPoint2dAt(i);return{x:o.x,y:o.y,z:a,bulge:0}})}function Lo(t){return t.some(e=>{const a=Math.max(0,e.startWidth??0),r=Math.max(0,e.endWidth??0);return a>va||r>va})}function zo(t,e,a,r){const n=Io(r),i=n.length;if(i<2)return;if(Lo(n)){q(t,e,a,n,r.closed);return}const o=r.closed?i:i-1;for(let s=0;s<o;s++){const l=n[s],c=n[(s+1)%i],d=l.bulge??0;if(lt.isPositive(Math.abs(d))){const u=I(a,l),p=I(a,c);rr(t,e,new me(u,p,d))}}}function Po(t,e,a,r,n){const i=I(a,{x:r.center.x,y:r.center.y,z:n}),o=nr(a,{x:Math.cos(r.rotation),y:Math.sin(r.rotation),z:0}),s=Math.hypot(o.x,o.y)||1,l=new V(a.elements[0],a.elements[1],a.elements[2]).length(),c=new V(a.elements[4],a.elements[5],a.elements[6]).length();t.push({kind:"ellipse",layer:e,cx:i.x,cy:i.y,majorX:o.x/s,majorY:o.y/s,majorR:r.majorAxisRadius*l,minorR:r.minorAxisRadius*c,startAngle:r.startAngle,endAngle:r.endAngle,closed:!1,normalSign:r.clockwise?-1:1})}function Ho(t,e,a,r,n){var i;const o=r.numberOfVertices;if(o<2)return;const s=[];for(let l=0;l<o;l++){const c=r.getPointAt(l);s.push({x:c.x,y:c.y,z:n,bulge:((i=r.vertices[l])==null?void 0:i.bulge)??0})}q(t,e,a,s,r.closed)}function Uo(t,e,a,r,n){if(r instanceof Un){Ho(t,e,a,r,n);return}if(!(r instanceof Dn))return;const i=[];let o=!1;const s=()=>{const c=ya(i);c.length>=2&&q(t,e,a,c,!1),i.length=0};for(const c of r.curves)c instanceof Tn?xa(i,{x:c.startPoint.x,y:c.startPoint.y,z:n},{x:c.endPoint.x,y:c.endPoint.y,z:n},0):c instanceof me?xa(i,{x:c.startPoint.x,y:c.startPoint.y,z:n},{x:c.endPoint.x,y:c.endPoint.y,z:n},ko(c)):c instanceof Nn&&(o=!0,s(),Po(t,e,a,c,n));const l=ya(i);l.length>=2&&q(t,e,a,l,!o)}function Do(t,e,a,r){var n;const i=(n=r._geo)==null?void 0:n.loops;if(!(i!=null&&i.length))return;const o=r.elevation;for(const s of i)Uo(t,e,a,s,o)}function To(t,e,a,r){Pt(a,or(r));const n=[0];for(let o=0;o<r.numColumns;o++)n.push(n[o]+r.columnWidth(o));const i=[0];for(let o=0;o<r.numRows;o++)i.push(i[o]-r.rowHeight(o));n[n.length-1],i[i.length-1];for(const o of i);for(const o of n);}function No(t,e,a,r,n,i,o,s=!0){const l=ce(t.layer,a);if(o&&!o(l))return;const c=xo(t,i);if(c&&!n.has(c.objectId)&&yo(c)){n.add(c.objectId);const u=Pt(e,or(t));Ht(c,u,l,r,n,i,o,s),n.delete(c.objectId);return}To(r,l,e,t);const d=I(e,t.position);r.push({kind:"point",layer:l,x:d.x,y:d.y})}function _o(t,e,a,r){let n=r.boundaryPath();if(n.length>1){const o=n[0],s=n[n.length-1];o.x===s.x&&o.y===s.y&&(o.z??0)===(s.z??0)&&(n=n.slice(0,-1))}n.length>=2&&q(t,e,a,n,!0);const i=I(a,r.position);t.push({kind:"point",layer:e,x:i.x,y:i.y})}function Ro(t,e,a,r){const n=r.position();q(t,e,a,[n.upperLeft,n.upperRight,n.lowerRight,n.lowerLeft],!0);const i=I(a,r.getLocation());t.push({kind:"point",layer:e,x:i.x,y:i.y})}function Oo(t){var e;const a=(e=t.attributeIterator)==null?void 0:e.call(t);return a?typeof a.toArray=="function"?a.toArray():[...a]:[]}function ce(t,e){return t==="0"?e:t}function lr(t,e,a,r,n,i,o,s=!0){if(!t.visibility)return;const l=ce(t.layer,a);if(!(o&&!o(l))){if(t instanceof ln){No(t,e,a,r,n,i,o,s);return}if(vo(t)){const c=ir(t,i);if(!c||n.has(c.objectId))return;n.add(c.objectId);const d=t.getFullInsertionTransform(),u=Math.max(1,t.columnCount??1),p=Math.max(1,t.rowCount??1),m=t.columnSpacing??0,h=t.rowSpacing??0,f=ce(t.layer,a);for(let g=0;g<p;g++)for(let w=0;w<u;w++){const b=Pt(e,d);(w!==0||g!==0)&&b.multiply(new ut().makeTranslation(w*m,g*h,0));const A=I(b,{x:0,y:0,z:0});r.push({kind:"point",layer:f,x:A.x,y:A.y}),Ht(c,b,f,r,n,i,o,s)}for(const g of Oo(t))g instanceof cn,g.isInvisible||lr(g,e,f,r,n,i,o,s);n.delete(c.objectId);return}if(t instanceof dn){const c=t,d=wo(c,i);if(!d||n.has(d.objectId))return;n.add(d.objectId);const u=Pt(e,c.getFullDimBlockTransform());Ht(d,u,l,r,n,i,o,!0),n.delete(d.objectId);return}if(go(t)){bo(r,l,e,t);return}if(t instanceof un){le(e)?Eo(r,l,e,t.center,t.radius,t.normal):Jt(r,l,e,$o(t));return}if(t instanceof mn){le(e)?So(r,l,e,t):Jt(r,l,e,jo(t));return}if(t instanceof ue){Jt(r,l,e,t);return}if(t instanceof pn){Fo(r,l,e,t);return}if(t instanceof hn){zo(r,l,e,t);return}if(t instanceof fn){Bo(r,l,e,t);return}if(t instanceof gn){const c=[];for(let d=0;d<t.numberOfVertices;d++)c.push(t.getPointAt(d));yt(r,l,e,c,t.closed);return}if(t instanceof bn){s&&Do(r,l,e,t);return}if(t instanceof wn){t.basePoint,t.unitDir;return}if(t instanceof xn){t.basePoint,t.unitDir;return}if(t instanceof yn){q(r,l,e,[t.getPointAt(0),t.getPointAt(1),t.getPointAt(3),t.getPointAt(2)],!0);return}if(t instanceof vn){s&&q(r,l,e,[t.getPointAt(0),t.getPointAt(1),t.getPointAt(3),t.getPointAt(2)],!0);return}if(t instanceof kn){const c=t.subGetGripPoints();c.length>=2&&yt(r,l,e,c,c.length>=3);return}if(t instanceof An){const c=t.vertices;c.length>=2&&yt(r,l,e,c,!1);return}if(t instanceof Mn){Ao(r,l,e,t);return}if(t instanceof Cn){Co(r,l,e,t);return}if(t instanceof Bn){const c=I(e,t.position);r.push({kind:"point",layer:l,x:c.x,y:c.y});return}if(t instanceof En){const c=I(e,t.location);r.push({kind:"point",layer:l,x:c.x,y:c.y});return}if(t instanceof Sn){s&&Ro(r,l,e,t);return}if(t instanceof Fn){s&&_o(r,l,e,t);return}if(t instanceof In){const c=I(e,t.position);r.push({kind:"point",layer:l,x:c.x,y:c.y})}}}function Ht(t,e,a,r,n,i,o,s=!0){for(const l of t.newIterator())lr(l,e,a,r,n,i,o,s)}function $o(t){return new ue(t.center,t.normal,{x:1,y:0,z:0},t.radius,t.radius,0,Hn)}function jo(t){return new ue(t.center,t.normal,{x:1,y:0,z:0},t.radius,t.radius,t.startAngle,t.endAngle)}function Vo(t,e,a={}){const r=fo(t,e);if(!r)return{primitives:[]};const n=[],i=new ut;return Ht(r,i,"0",n,new Set,t,a.includeLayer),{primitives:n.filter(o=>o.kind!=="line"&&Xo(o))}}function Xo(t){switch(t.kind){case"line":return Number.isFinite(t.x0)&&Number.isFinite(t.y0)&&Number.isFinite(t.x1)&&Number.isFinite(t.y1);case"circle":return Number.isFinite(t.cx)&&Number.isFinite(t.cy)&&Number.isFinite(t.r);case"arc":return Number.isFinite(t.cx)&&Number.isFinite(t.cy)&&Number.isFinite(t.r)&&Number.isFinite(t.startAngle)&&Number.isFinite(t.endAngle);case"ellipse":return Number.isFinite(t.cx)&&Number.isFinite(t.cy)&&Number.isFinite(t.majorX)&&Number.isFinite(t.majorY)&&Number.isFinite(t.majorR)&&Number.isFinite(t.minorR)&&Number.isFinite(t.startAngle)&&Number.isFinite(t.endAngle);case"spline":return t.controlPoints.every(e=>Number.isFinite(e))&&t.knots.every(e=>Number.isFinite(e))&&t.weights.every(e=>Number.isFinite(e));case"point":return Number.isFinite(t.x)&&Number.isFinite(t.y);case"path":return t.vertices.length>=6&&t.vertices.length%3===0&&t.vertices.every(e=>Number.isFinite(e));default:return t}}const Yo=["en","zh","cs","tr","ar"];function Be(t){if(t==null||t==="")return null;const e=t.toLowerCase().replace("_","-");for(const a of Yo)if(e===a||e.startsWith(`${a}-`))return a;return null}const Go=1128612673;function cr(t){if(t.version!==X)throw new Error(`Unsupported chunk version: ${t.version}`);const e=new ge;e.writeU32(Go),e.writeU8(X),e.writeU8(0),e.writeU8(0),e.writeU8(0),e.writeString(t.layoutBtrId),e.writeU32(t.lineBatches.length);for(const a of t.lineBatches)Ga(e,a);e.writeU32(t.meshBatches.length);for(const a of t.meshBatches)Wa(e,a);return e.toUint8Array()}async function Wo(t){const e=cr(t),a=(await Ya(e)).bytes;return{uncompressed:e,compressed:a}}const Ko=1,dr=2*1024*1024,Rt=2*1024*1024,Zo=8*1024*1024,ka=12*1024*1024,Jo=2*1024*1024,Ot="drawing.acex.json",qo=`./${Ot}`;function Ee(...t){return`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 1024 1024">${t.map(e=>`<path fill="currentColor" d="${e}"/>`).join("")}</svg>`}Ee("M624 475.968V640h144a128 128 0 0 1 128 128H128a128 128 0 0 1 128-128h144V475.968a192 192 0 1 1 224 0M128 896v-64h768v64z");Ee("M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160");Ee("M876.8 156.8c0-9.6-3.2-16-9.6-22.4s-12.8-9.6-22.4-9.6-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176S0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4m-646.4 528Q115.2 579.2 76.8 512q43.2-72 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4m140.8-96Q352 555.2 352 512c0-44.8 16-83.2 48-112s67.2-48 112-48c28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6q-43.2 72-153.6 172.8c-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176S1024 528 1024 512s-48.001-73.6-134.401-176","M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112s-67.2 48-112 48");const Qo='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" aria-hidden="true"><path fill="currentColor" d="M10 13.5 14.5 9h-9L10 13.5Z"/></svg>',ts='<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 20 20"><path fill="currentColor" d="M10.09 3.53 16.09 6.97 10.09 10.29 4.18 7 10.09 3.56M10.09 2.4 2.17 7 3.31 7.65 10.09 11.45 17 7.62 18.17 7 10.08 2.37 10.09 2.4Z"/><path fill="currentColor" d="M10.25 14.83 18.17 10.22 17 9.57 10.22 13.57 3.32 9.59 2.17 10.22 10.25 14.83Z"/><path fill="currentColor" d="M10.25 17.63 18.17 13 17 12.37 10.22 16.37 3.32 12.38 2.17 13 10.25 17.63Z"/></svg>',es='<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 20 20"><path fill="currentColor" d="M10.09 5.15 16.09 8.59 10.09 11.91 4.18 8.59 10.09 5.15ZM10.09 4 2.17 8.61 3.31 9.25 10.09 13.06 17 9.24 18.16 8.61 10.08 4 10.09 4Z"/><path fill="currentColor" d="M10.25 16.46 18.17 11.85 17 11.2 10.22 15.2 3.32 11.21 2.17 11.85 10.25 16.46Z"/><path fill="none" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" d="M3.5 3.5 16.5 16.5"/></svg>',de={layerOn:ts,layerOff:es,chevronDown:Qo},as=[90,45,30,23,18,10,5];function rs(){return`<div id="mlcad-polar-angles" role="group" data-i18n-attr="aria-label" data-i18n-key="settings.polarAngles" aria-label="Polar tracking angles" hidden>
2
2
  ${as.map(t=>`<button type="button" class="mlcad-tool-btn mlcad-settings-option-btn mlcad-polar-angle-btn" data-polar-ang="${t}" title="${t}°" aria-label="${t}°"><span class="mlcad-settings-option-indicator" aria-hidden="true"></span><span class="mlcad-settings-option-text">${t}°</span></button>`).join("")}
3
- </div>`}const ns=600,is=960,os=1.231,Ie=`
3
+ </div>`}const ns=600,is=960,os=1.231,Se=`
4
4
  :root {
5
5
  --mlcad-ui-bg: rgba(24, 26, 30, 0.94);
6
6
  --mlcad-ui-bg-elevated: rgba(32, 35, 40, 0.98);
@@ -1417,7 +1417,7 @@ import{D as Xr,E as Gt,F as Yr,V as Gr,G as $e,H as Wr,I as He,J as Kr,K as Zr,L
1417
1417
  <nav id="mlcad-toolbar" data-i18n-attr="aria-label" data-i18n-key="toolbar.viewerTools" aria-label="Viewer tools"></nav>
1418
1418
  ${r}
1419
1419
  <div id="mlcad-layer-drawer" role="dialog" data-i18n-attr="aria-label" data-i18n-key="layers.title" aria-label="Layers" hidden>
1420
- ${Se("mlcad-layer-sheet-close","layers.close","Close layers")}
1420
+ ${Ie("mlcad-layer-sheet-close","layers.close","Close layers")}
1421
1421
  <div class="mlcad-drawer-header">
1422
1422
  <span data-i18n-key="layers.title" data-i18n-text>Layers</span>
1423
1423
  <button type="button" class="mlcad-drawer-close" id="mlcad-layer-close" data-i18n-key="layers.close" data-i18n-attr="aria-label" aria-label="Close layers">×</button>
@@ -1434,11 +1434,11 @@ import{D as Xr,E as Gt,F as Yr,V as Gr,G as $e,H as Wr,I as He,J as Kr,K as Zr,L
1434
1434
  </div>
1435
1435
  </aside>
1436
1436
  </div>
1437
- `}function Se(t,e,a){return`<div class="mlcad-drawer-sheet-chrome">
1437
+ `}function Ie(t,e,a){return`<div class="mlcad-drawer-sheet-chrome">
1438
1438
  <div class="mlcad-drawer-grabber" role="separator" aria-orientation="horizontal"></div>
1439
1439
  <button type="button" class="mlcad-drawer-sheet-close" id="${t}" data-i18n-key="${e}" data-i18n-attr="aria-label" aria-label="${a}">${de.chevronDown}</button>
1440
1440
  </div>`}function ss(){return`<div id="mlcad-review-drawer" role="dialog" data-i18n-attr="aria-label" data-i18n-key="review.title" aria-label="Review" hidden>
1441
- ${Se("mlcad-review-sheet-close","review.close","Close review")}
1441
+ ${Ie("mlcad-review-sheet-close","review.close","Close review")}
1442
1442
  <div class="mlcad-drawer-header">
1443
1443
  <span data-i18n-key="review.title" data-i18n-text>Review</span>
1444
1444
  <button type="button" class="mlcad-drawer-close" id="mlcad-review-close" data-i18n-key="review.close" data-i18n-attr="aria-label" aria-label="Close review">×</button>
@@ -1487,7 +1487,7 @@ import{D as Xr,E as Gt,F as Yr,V as Gr,G as $e,H as Wr,I as He,J as Kr,K as Zr,L
1487
1487
  </div>
1488
1488
  </div>
1489
1489
  </div>`}function ls(){return`<div id="mlcad-measure-drawer" role="dialog" data-i18n-attr="aria-label" data-i18n-key="measurePanel.title" aria-label="Measurements" hidden>
1490
- ${Se("mlcad-measure-sheet-close","measurePanel.close","Close measurements")}
1490
+ ${Ie("mlcad-measure-sheet-close","measurePanel.close","Close measurements")}
1491
1491
  <div class="mlcad-drawer-header">
1492
1492
  <span data-i18n-key="measurePanel.title" data-i18n-text>Measurements</span>
1493
1493
  <button type="button" class="mlcad-drawer-close" id="mlcad-measure-close" data-i18n-key="measurePanel.close" data-i18n-attr="aria-label" aria-label="Close measurements">×</button>
@@ -1514,7 +1514,7 @@ import{D as Xr,E as Gt,F as Yr,V as Gr,G as $e,H as Wr,I as He,J as Kr,K as Zr,L
1514
1514
  <tbody></tbody>
1515
1515
  </table>
1516
1516
  </div>
1517
- </div>`}function cs(t,e){var a;const r=e.title??t.meta.title??"CAD Drawing",n=e.encoded??Za(t),i=e.viewerRuntime,o=Ui(),s=n.compression,l=((a=e.accessManifest)==null?void 0:a.encrypted)===!0,c=`#${t.meta.background.toString(16).padStart(6,"0")}`,d=Be(t.meta.locale)??"en",u=t.meta.viewerMode??"measure",p=t.meta.exportLayouts!==!1,m=e.accessManifest?` <script id="mlcad-access" type="application/json">${pr(JSON.stringify(e.accessManifest))}<\/script>
1517
+ </div>`}function cs(t,e){var a;const r=e.title??t.meta.title??"CAD Drawing",n=e.encoded??Za(t),i=e.viewerRuntime,o=Hi(),s=n.compression,l=((a=e.accessManifest)==null?void 0:a.encrypted)===!0,c=`#${t.meta.background.toString(16).padStart(6,"0")}`,d=Be(t.meta.locale)??"en",u=t.meta.viewerMode??"measure",p=t.meta.exportLayouts!==!1,m=e.accessManifest?` <script id="mlcad-access" type="application/json">${pr(JSON.stringify(e.accessManifest))}<\/script>
1518
1518
  `:"",h=l?`${o}+aes-gcm;base85`:`${o}+${s};base85`;return`<!DOCTYPE html>
1519
1519
  <html lang="${d}">
1520
1520
  <head>
@@ -1522,7 +1522,7 @@ import{D as Xr,E as Gt,F as Yr,V as Gr,G as $e,H as Wr,I as He,J as Kr,K as Zr,L
1522
1522
  <meta name="viewport" content="width=device-width, initial-scale=1" />
1523
1523
  <meta name="generator" content="mlightcad-cad-html-plugin" />
1524
1524
  <title>${ur(r)}</title>
1525
- <style>${Ie}</style>
1525
+ <style>${Se}</style>
1526
1526
  </head>
1527
1527
  <body>
1528
1528
  ${Fe(c,u,p)}
@@ -1536,30 +1536,30 @@ ${m} <script id="mlcad-snapshot" type="${h}">${n.payload}<\/script>
1536
1536
  <meta name="viewport" content="width=device-width, initial-scale=1" />
1537
1537
  <meta name="generator" content="mlightcad-cad-html-plugin" />
1538
1538
  <title>${ur(r)}</title>
1539
- <style>${Ie}</style>
1539
+ <style>${Se}</style>
1540
1540
  </head>
1541
1541
  <body>
1542
1542
  ${Fe(i,s,l)}
1543
1543
  <script id="mlcad-package" type="application/json">${pr(d)}<\/script>
1544
1544
  <script>${mr(n)}<\/script>
1545
1545
  </body>
1546
- </html>`}function ur(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function mr(t){return t.replace(/<\/script/gi,"<\\/script")}function pr(t){return t.replace(/</g,"\\u003c")}const us=1,ms=1e5,ps=16,hs=12;function fs(t,e=Date.now(),a){return t==="never"?null:t==="custom"?a??null:e+t*24*60*60*1e3}function hr(t){var e;const a=!!((e=t.password)!=null&&e.trim());return t.expiresAt!=null||a}function Dt(t){var e;if(!hr(t))return;const a=!!((e=t.password)!=null&&e.trim());return{v:us,expiresAt:t.expiresAt,encrypted:a,...a&&t.salt?{salt:t.salt}:{}}}async function fr(t,e){const a=crypto.getRandomValues(new Uint8Array(ps));return{key:await xs(t,a),salt:gr(a)}}async function Le(t,e){const a=crypto.getRandomValues(new Uint8Array(hs)),r=new Uint8Array(e),n=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:a},t,r)),i=new Uint8Array(a.length+n.length);return i.set(a,0),i.set(n,a.length),i}async function gs(t,e,a="base85"){const{key:r,salt:n}=await fr(t),i=li(e,a),o=await Le(r,i);return{encryptedPayload:_t(o,a),salt:n}}function bs(t){return gr(t)}async function ws(t,e){var a;if(!hr(e))return{encoded:t};const r=(a=e.password)==null?void 0:a.trim();if(r){const{encryptedPayload:n,salt:i}=await gs(r,t.payload);return{encoded:{payload:n,compression:t.compression},manifest:Dt({expiresAt:e.expiresAt,password:r,salt:i})}}return{encoded:t,manifest:Dt({expiresAt:e.expiresAt})}}async function xs(t,e){const a=new TextEncoder,r=await crypto.subtle.importKey("raw",a.encode(t),"PBKDF2",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(e),iterations:ms,hash:"SHA-256"},r,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}function gr(t){let e="";for(let a=0;a<t.length;a++)e+=String.fromCharCode(t[a]);return btoa(e)}const ys=256;function vs(t,e=Ot){return!(e>0)||be(t)<=e?[t]:t.indices&&t.indices.length>=2?Ms(t,e):As(t,e)}function ks(t,e=Ot){return t.texture?[t]:!(e>0)||we(t)<=e?[t]:t.points?Bs(t,e):!t.indices||t.indices.length<3?wr(t,e):Is(t,e)}function br(t){return t.linePattern?64+t.linePattern.pattern.length*8:0}function Pe(t){return(t.hatchPattern?128:0)+(t.gradientFill?64:0)}function Mt(t,e,a){const r=t-ys-e;return r<a?1:Math.max(1,Math.floor(r/a))}function As(t,e){var a;const r=(((a=t.lineDistances)==null?void 0:a.length)??0)>=2,n=24+(r?8:0),i=Mt(e,br(t),n),o=t.positions.length/6|0;if(o<=1)return[t];const s=[];for(let l=0;l<o;l+=i){const c=Math.min(i,o-l),d=l*6,u={layer:t.layer,color:t.color,offset:t.offset,positions:t.positions.slice(d,d+c*6)};if(vr(t,u),r&&t.lineDistances){const p=l*2;u.lineDistances=t.lineDistances.slice(p,p+c*2)}s.push(u)}return s.length>0?s:[t]}function Ms(t,e){var a;const r=t.indices,n=32+((((a=t.lineDistances)==null?void 0:a.length)??0)>0?8:0),i=Mt(e,br(t),n),o=[];for(let s=0;s+1<r.length;){const l=Math.min(i*2,r.length-s),c=l-l%2;if(c<2)break;o.push(Es(t,s,c)),s+=c}return o.length>0?o:[t]}function Es(t,e,a){const r=yr(t.positions,t.indices.subarray(e,e+a),t.lineDistances?[t.lineDistances]:[],[1]),n={layer:t.layer,color:t.color,offset:t.offset,positions:r.positions,indices:r.indices};return vr(t,n),r.attributes[0]&&r.attributes[0].length>0&&(n.lineDistances=r.attributes[0]),n}function Bs(t,e){return t.indices&&t.indices.length>0?Cs(t,e):wr(t,e)}function Cs(t,e){const a=t.indices,r=16+(t.uvs?8:0)+(t.gradientPositions?8:0),n=Mt(e,Pe(t),r),i=[];for(let o=0;o<a.length;){const s=Math.min(n,a.length-o);if(s<1)break;i.push(xr(t,o,s)),o+=s}return i.length>0?i:[t]}function wr(t,e){const a=t.positions.length/3|0;if(a<=1)return[t];const r=12+(t.uvs?8:0)+(t.gradientPositions?8:0),n=Mt(e,Pe(t),r),i=t.points?1:3,o=Math.max(i,n-n%i),s=[];for(let l=0;l<a;l+=o){const c=Math.min(o,a-l),d=c-c%i;if(d<i)break;s.push(Fs(t,l,d))}return s.length>0?s:[t]}function Is(t,e){const a=t.indices,r=48+(t.uvs?24:0)+(t.gradientPositions?24:0),n=Mt(e,Pe(t),r),i=[];for(let o=0;o+2<a.length;){const s=Math.min(n*3,a.length-o),l=s-s%3;if(l<3)break;i.push(xr(t,o,l)),o+=l}return i.length>0?i:[t]}function Fs(t,e,a){const r=e*3,n={layer:t.layer,color:t.color,offset:t.offset,positions:t.positions.slice(r,r+a*3)};return kr(t,n),t.uvs&&(n.uvs=t.uvs.slice(e*2,(e+a)*2)),t.gradientPositions&&(n.gradientPositions=t.gradientPositions.slice(e*2,(e+a)*2)),n}function xr(t,e,a){const r=[],n=[];t.uvs&&(r.push(t.uvs),n.push(2)),t.gradientPositions&&(r.push(t.gradientPositions),n.push(2));const i=yr(t.positions,t.indices.subarray(e,e+a),r,n),o={layer:t.layer,color:t.color,offset:t.offset,positions:i.positions,indices:i.indices};kr(t,o);let s=0;return t.uvs&&(o.uvs=i.attributes[s++]),t.gradientPositions&&(o.gradientPositions=i.attributes[s]),o}function yr(t,e,a,r){const n=new Map,i=[],o=new Uint32Array(e.length),s=a.map(()=>[]);for(let l=0;l<e.length;l++){const c=e[l];let d=n.get(c);if(d==null){d=n.size,n.set(c,d);const u=c*3;i.push(t[u]??0,t[u+1]??0,t[u+2]??0);for(let p=0;p<a.length;p++){const m=r[p],h=a[p],f=c*m;for(let g=0;g<m;g++)s[p].push(h[f+g]??0)}}o[l]=d}return{positions:Float32Array.from(i),indices:o,attributes:s.map(l=>Float32Array.from(l))}}function vr(t,e){t.linePattern&&(e.linePattern=t.linePattern),t.lineWidth!=null&&(e.lineWidth=t.lineWidth),t.renderOrder!=null&&(e.renderOrder=t.renderOrder),t.excludeFromOsnap&&(e.excludeFromOsnap=!0)}function kr(t,e){t.hatchPattern&&(e.hatchPattern=t.hatchPattern),t.gradientFill&&(e.gradientFill=t.gradientFill),t.side!=null&&(e.side=t.side),t.renderOrder!=null&&(e.renderOrder=t.renderOrder),t.points&&(e.points=!0)}function Ss(t,e,a=Ot){const r=[];let n={lineBatches:[],meshBatches:[],estimatedBytes:64};const i=()=>{n.lineBatches.length===0&&n.meshBatches.length===0&&r.length>0||(r.push(n),n={lineBatches:[],meshBatches:[],estimatedBytes:64})},o=c=>{const d=be(c);n.estimatedBytes+d>e&&(n.lineBatches.length>0||n.meshBatches.length>0)&&i(),n.lineBatches.push(c),n.estimatedBytes+=d},s=c=>{const d=we(c);n.estimatedBytes+d>e&&(n.lineBatches.length>0||n.meshBatches.length>0)&&i(),n.meshBatches.push(c),n.estimatedBytes+=d},l=Math.min(e,a);for(const c of t.lineBatches)for(const d of vs(c,l))o(d);for(const c of t.meshBatches)for(const d of ks(c,l))s(d);return(r.length===0||n.lineBatches.length>0||n.meshBatches.length>0)&&i(),r.length===0&&r.push({lineBatches:[],meshBatches:[],estimatedBytes:64}),r}function Ls(t,e){if(t.version!==X)throw new Error(`Unsupported snapshot version: ${t.version}`);const a=e.maxChunkBytes??dr,r=e.maxBatchBytes??Ot,n=e.maxOsnapChunkBytes??a,i=e.compressChunks!==!1,o=i?"acex.gz":"acex",s=i?"osnap.gz":"osnap",l=$t,c=Ds(t.layouts,t.activeLayoutBtrId),d=[],u=[],p=new Map;return c.forEach((m,h)=>{var f;p.set(m.btrId,h);const g=Ss(m,a,r),w=[];g.forEach((y,I)=>{const C=`L${h}-${String(I).padStart(3,"0")}`,E=`chunks/${C}.${o}`;w.push(C),d.push({kind:"geometry",id:C,href:E,layoutBtrId:m.btrId,lineBatchCount:y.lineBatches.length,meshBatchCount:y.meshBatches.length,chunk:{version:X,layoutBtrId:m.btrId,lineBatches:y.lineBatches,meshBatches:y.meshBatches}})});const b={btrId:m.btrId,name:m.name,isModelSpace:m.isModelSpace,viewports:m.viewports,...m.savedView?{savedView:m.savedView}:{},...m.fitExtents?{fitExtents:m.fitExtents}:{},chunkIds:w},A=(f=m.osnap)==null?void 0:f.primitives;if(A&&A.length>0){const y=Ei(A,n),I=[];y.forEach((C,E)=>{const v=`L${h}-osnap-${String(E).padStart(3,"0")}`,k=`chunks/${v}.${s}`;I.push(v),d.push({kind:"osnap",id:v,href:k,layoutBtrId:m.btrId,primitiveCount:C.length,primitives:C})}),b.osnapChunkIds=I}u.push(b)}),{jobs:d,layoutRefs:u,layoutIndexByBtrId:p,manifestFileName:l,compressChunks:i}}function Ps(t,e,a,r,n){var i,o;const s=[],l=[],c=[];for(const w of n){const{job:b,uncompressedByteLength:A,compressed:y}=w;c.push({path:b.href,bytes:y}),b.kind==="geometry"?s.push({id:b.id,href:b.href,layoutBtrId:b.layoutBtrId,byteLength:A,compressedByteLength:y.byteLength,lineBatchCount:b.lineBatchCount,meshBatchCount:b.meshBatchCount}):l.push({id:b.id,href:b.href,layoutBtrId:b.layoutBtrId,byteLength:A,compressedByteLength:y.byteLength,primitiveCount:b.primitiveCount})}const d=t.layouts.map(w=>{const b=a.get(w.btrId);return e[b]}),u=new Set(((i=d.find(w=>w.btrId===t.activeLayoutBtrId))==null?void 0:i.chunkIds)??[]),p=[...s.filter(w=>u.has(w.id)),...s.filter(w=>!u.has(w.id))],m=new Set(((o=d.find(w=>w.btrId===t.activeLayoutBtrId))==null?void 0:o.osnapChunkIds)??[]),h=[...l.filter(w=>m.has(w.id)),...l.filter(w=>!m.has(w.id))],f={format:"acex-package",packageVersion:Ko,snapshotVersion:X,meta:t.meta,layers:t.layers,activeLayoutBtrId:t.activeLayoutBtrId,layouts:d,chunks:p,...h.length>0?{osnapChunks:h}:{}},g=`${JSON.stringify(f)}
1547
- `;return c.unshift({path:r,bytes:vt(g)}),{manifest:f,manifestFileName:r,files:c}}async function zs(t,e){if(t.kind==="geometry"){if(!e){const o=cr(t.chunk);return{job:t,uncompressedByteLength:o.byteLength,compressed:o}}const{uncompressed:n,compressed:i}=await Wo(t.chunk);return{job:t,uncompressedByteLength:n.byteLength,compressed:i}}if(!e){const n=xe({primitives:t.primitives});return{job:t,uncompressedByteLength:n.byteLength,compressed:n}}const{uncompressed:a,compressed:r}=await Bi({primitives:t.primitives});return{job:t,uncompressedByteLength:a.byteLength,compressed:r}}async function Ar(t,e={}){const{jobs:a,layoutRefs:r,layoutIndexByBtrId:n,manifestFileName:i,compressChunks:o}=Ls(t,e),s=await Promise.all(a.map(l=>zs(l,o)));return Ps(t,r,n,i,s)}async function Us(t,e){const a=await Ar(t,e),r=ds(t,{title:t.meta.title,viewerRuntime:e.viewerRuntime,...e.manifestUrl?{manifestUrl:e.manifestUrl}:{}});return{html:r,manifest:a.manifest,manifestFileName:a.manifestFileName,files:[{path:"viewer.html",bytes:vt(r)},...a.files]}}function Ds(t,e){const a=t.find(n=>n.btrId===e),r=t.filter(n=>n.btrId!==e);return a?[a,...r]:[...t]}const Ns="application/vnd.mlightcad.acex-chunk;base85",Ts="application/vnd.mlightcad.acex-chunk+aes-gcm;base85",Mr="data-acex-href";function _s(t){var e;let a=0;for(const r of t.layouts){for(const i of r.lineBatches)a+=be(i);for(const i of r.meshBatches)a+=we(i);const n=(e=r.osnap)==null?void 0:e.primitives;if(n)for(const i of n)a+=Ka(i)}return a}function Rs(t,e=Zo){return _s(t)>=e}async function Os(t,e){var a;const r=e.title??t.meta.title??"CAD Drawing",n=e.viewerRuntime,i=`#${t.meta.background.toString(16).padStart(6,"0")}`,o=Be(t.meta.locale)??"en",s=t.meta.viewerMode??"measure",l=t.meta.exportLayouts!==!1,c=e.expiresAt??null,d=((a=e.password)==null?void 0:a.trim())||void 0,u={maxChunkBytes:e.maxChunkBytes??ka,maxBatchBytes:e.maxBatchBytes??e.maxChunkBytes??ka,maxOsnapChunkBytes:e.maxOsnapChunkBytes??Jo},p=await Ar(t,u);let m,h,f;if(d){const{key:w,salt:b}=await fr(d);m=Dt({expiresAt:c,password:d,salt:b});const A=new TextEncoder().encode(`${JSON.stringify(p.manifest)}
1548
- `),y=await Le(w,A);h={mode:"embedded",encrypted:!0,encryptedManifest:bs(y)},f=await Hs(p.files,w)}else m=Dt({expiresAt:c}),h={mode:"embedded",manifest:p.manifest},f=$s(p.files);const g=m?` <script id="mlcad-access" type="application/json">${Aa(JSON.stringify(m))}<\/script>
1546
+ </html>`}function ur(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function mr(t){return t.replace(/<\/script/gi,"<\\/script")}function pr(t){return t.replace(/</g,"\\u003c")}const us=1,ms=1e5,ps=16,hs=12;function fs(t,e=Date.now(),a){return t==="never"?null:t==="custom"?a??null:e+t*24*60*60*1e3}function hr(t){var e;const a=!!((e=t.password)!=null&&e.trim());return t.expiresAt!=null||a}function Ut(t){var e;if(!hr(t))return;const a=!!((e=t.password)!=null&&e.trim());return{v:us,expiresAt:t.expiresAt,encrypted:a,...a&&t.salt?{salt:t.salt}:{}}}async function fr(t,e){const a=crypto.getRandomValues(new Uint8Array(ps));return{key:await xs(t,a),salt:gr(a)}}async function Le(t,e){const a=crypto.getRandomValues(new Uint8Array(hs)),r=new Uint8Array(e),n=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:a},t,r)),i=new Uint8Array(a.length+n.length);return i.set(a,0),i.set(n,a.length),i}async function gs(t,e,a="base85"){const{key:r,salt:n}=await fr(t),i=li(e,a),o=await Le(r,i);return{encryptedPayload:Nt(o,a),salt:n}}function bs(t){return gr(t)}async function ws(t,e){var a;if(!hr(e))return{encoded:t};const r=(a=e.password)==null?void 0:a.trim();if(r){const{encryptedPayload:n,salt:i}=await gs(r,t.payload);return{encoded:{payload:n,compression:t.compression},manifest:Ut({expiresAt:e.expiresAt,password:r,salt:i})}}return{encoded:t,manifest:Ut({expiresAt:e.expiresAt})}}async function xs(t,e){const a=new TextEncoder,r=await crypto.subtle.importKey("raw",a.encode(t),"PBKDF2",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(e),iterations:ms,hash:"SHA-256"},r,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}function gr(t){let e="";for(let a=0;a<t.length;a++)e+=String.fromCharCode(t[a]);return btoa(e)}const ys=256;function vs(t,e=Rt){return!(e>0)||be(t)<=e?[t]:t.indices&&t.indices.length>=2?Ms(t,e):As(t,e)}function ks(t,e=Rt){return t.texture?[t]:!(e>0)||we(t)<=e?[t]:t.points?Bs(t,e):!t.indices||t.indices.length<3?wr(t,e):Ss(t,e)}function br(t){return t.linePattern?64+t.linePattern.pattern.length*8:0}function ze(t){return(t.hatchPattern?128:0)+(t.gradientFill?64:0)}function Mt(t,e,a){const r=t-ys-e;return r<a?1:Math.max(1,Math.floor(r/a))}function As(t,e){var a;const r=(((a=t.lineDistances)==null?void 0:a.length)??0)>=2,n=24+(r?8:0),i=Mt(e,br(t),n),o=t.positions.length/6|0;if(o<=1)return[t];const s=[];for(let l=0;l<o;l+=i){const c=Math.min(i,o-l),d=l*6,u={layer:t.layer,color:t.color,offset:t.offset,positions:t.positions.slice(d,d+c*6)};if(vr(t,u),r&&t.lineDistances){const p=l*2;u.lineDistances=t.lineDistances.slice(p,p+c*2)}s.push(u)}return s.length>0?s:[t]}function Ms(t,e){var a;const r=t.indices,n=32+((((a=t.lineDistances)==null?void 0:a.length)??0)>0?8:0),i=Mt(e,br(t),n),o=[];for(let s=0;s+1<r.length;){const l=Math.min(i*2,r.length-s),c=l-l%2;if(c<2)break;o.push(Cs(t,s,c)),s+=c}return o.length>0?o:[t]}function Cs(t,e,a){const r=yr(t.positions,t.indices.subarray(e,e+a),t.lineDistances?[t.lineDistances]:[],[1]),n={layer:t.layer,color:t.color,offset:t.offset,positions:r.positions,indices:r.indices};return vr(t,n),r.attributes[0]&&r.attributes[0].length>0&&(n.lineDistances=r.attributes[0]),n}function Bs(t,e){return t.indices&&t.indices.length>0?Es(t,e):wr(t,e)}function Es(t,e){const a=t.indices,r=16+(t.uvs?8:0)+(t.gradientPositions?8:0),n=Mt(e,ze(t),r),i=[];for(let o=0;o<a.length;){const s=Math.min(n,a.length-o);if(s<1)break;i.push(xr(t,o,s)),o+=s}return i.length>0?i:[t]}function wr(t,e){const a=t.positions.length/3|0;if(a<=1)return[t];const r=12+(t.uvs?8:0)+(t.gradientPositions?8:0),n=Mt(e,ze(t),r),i=t.points?1:3,o=Math.max(i,n-n%i),s=[];for(let l=0;l<a;l+=o){const c=Math.min(o,a-l),d=c-c%i;if(d<i)break;s.push(Fs(t,l,d))}return s.length>0?s:[t]}function Ss(t,e){const a=t.indices,r=48+(t.uvs?24:0)+(t.gradientPositions?24:0),n=Mt(e,ze(t),r),i=[];for(let o=0;o+2<a.length;){const s=Math.min(n*3,a.length-o),l=s-s%3;if(l<3)break;i.push(xr(t,o,l)),o+=l}return i.length>0?i:[t]}function Fs(t,e,a){const r=e*3,n={layer:t.layer,color:t.color,offset:t.offset,positions:t.positions.slice(r,r+a*3)};return kr(t,n),t.uvs&&(n.uvs=t.uvs.slice(e*2,(e+a)*2)),t.gradientPositions&&(n.gradientPositions=t.gradientPositions.slice(e*2,(e+a)*2)),n}function xr(t,e,a){const r=[],n=[];t.uvs&&(r.push(t.uvs),n.push(2)),t.gradientPositions&&(r.push(t.gradientPositions),n.push(2));const i=yr(t.positions,t.indices.subarray(e,e+a),r,n),o={layer:t.layer,color:t.color,offset:t.offset,positions:i.positions,indices:i.indices};kr(t,o);let s=0;return t.uvs&&(o.uvs=i.attributes[s++]),t.gradientPositions&&(o.gradientPositions=i.attributes[s]),o}function yr(t,e,a,r){const n=new Map,i=[],o=new Uint32Array(e.length),s=a.map(()=>[]);for(let l=0;l<e.length;l++){const c=e[l];let d=n.get(c);if(d==null){d=n.size,n.set(c,d);const u=c*3;i.push(t[u]??0,t[u+1]??0,t[u+2]??0);for(let p=0;p<a.length;p++){const m=r[p],h=a[p],f=c*m;for(let g=0;g<m;g++)s[p].push(h[f+g]??0)}}o[l]=d}return{positions:Float32Array.from(i),indices:o,attributes:s.map(l=>Float32Array.from(l))}}function vr(t,e){t.linePattern&&(e.linePattern=t.linePattern),t.lineWidth!=null&&(e.lineWidth=t.lineWidth),t.renderOrder!=null&&(e.renderOrder=t.renderOrder),t.excludeFromOsnap&&(e.excludeFromOsnap=!0)}function kr(t,e){t.hatchPattern&&(e.hatchPattern=t.hatchPattern),t.gradientFill&&(e.gradientFill=t.gradientFill),t.side!=null&&(e.side=t.side),t.renderOrder!=null&&(e.renderOrder=t.renderOrder),t.points&&(e.points=!0)}function Is(t,e,a=Rt){const r=[];let n={lineBatches:[],meshBatches:[],estimatedBytes:64};const i=()=>{n.lineBatches.length===0&&n.meshBatches.length===0&&r.length>0||(r.push(n),n={lineBatches:[],meshBatches:[],estimatedBytes:64})},o=c=>{const d=be(c);n.estimatedBytes+d>e&&(n.lineBatches.length>0||n.meshBatches.length>0)&&i(),n.lineBatches.push(c),n.estimatedBytes+=d},s=c=>{const d=we(c);n.estimatedBytes+d>e&&(n.lineBatches.length>0||n.meshBatches.length>0)&&i(),n.meshBatches.push(c),n.estimatedBytes+=d},l=Math.min(e,a);for(const c of t.lineBatches)for(const d of vs(c,l))o(d);for(const c of t.meshBatches)for(const d of ks(c,l))s(d);return(r.length===0||n.lineBatches.length>0||n.meshBatches.length>0)&&i(),r.length===0&&r.push({lineBatches:[],meshBatches:[],estimatedBytes:64}),r}function Ls(t,e){if(t.version!==X)throw new Error(`Unsupported snapshot version: ${t.version}`);const a=e.maxChunkBytes??dr,r=e.maxBatchBytes??Rt,n=e.maxOsnapChunkBytes??a,i=e.compressChunks!==!1,o=i?"acex.gz":"acex",s=i?"osnap.gz":"osnap",l=Ot,c=Us(t.layouts,t.activeLayoutBtrId),d=[],u=[],p=new Map;return c.forEach((m,h)=>{var f;p.set(m.btrId,h);const g=Is(m,a,r),w=[];g.forEach((y,S)=>{const E=`L${h}-${String(S).padStart(3,"0")}`,C=`chunks/${E}.${o}`;w.push(E),d.push({kind:"geometry",id:E,href:C,layoutBtrId:m.btrId,lineBatchCount:y.lineBatches.length,meshBatchCount:y.meshBatches.length,chunk:{version:X,layoutBtrId:m.btrId,lineBatches:y.lineBatches,meshBatches:y.meshBatches}})});const b={btrId:m.btrId,name:m.name,isModelSpace:m.isModelSpace,viewports:m.viewports,...m.savedView?{savedView:m.savedView}:{},...m.fitExtents?{fitExtents:m.fitExtents}:{},chunkIds:w},A=(f=m.osnap)==null?void 0:f.primitives;if(A&&A.length>0){const y=Ci(A,n),S=[];y.forEach((E,C)=>{const v=`L${h}-osnap-${String(C).padStart(3,"0")}`,k=`chunks/${v}.${s}`;S.push(v),d.push({kind:"osnap",id:v,href:k,layoutBtrId:m.btrId,primitiveCount:E.length,primitives:E})}),b.osnapChunkIds=S}u.push(b)}),{jobs:d,layoutRefs:u,layoutIndexByBtrId:p,manifestFileName:l,compressChunks:i}}function zs(t,e,a,r,n){var i,o;const s=[],l=[],c=[];for(const w of n){const{job:b,uncompressedByteLength:A,compressed:y}=w;c.push({path:b.href,bytes:y}),b.kind==="geometry"?s.push({id:b.id,href:b.href,layoutBtrId:b.layoutBtrId,byteLength:A,compressedByteLength:y.byteLength,lineBatchCount:b.lineBatchCount,meshBatchCount:b.meshBatchCount}):l.push({id:b.id,href:b.href,layoutBtrId:b.layoutBtrId,byteLength:A,compressedByteLength:y.byteLength,primitiveCount:b.primitiveCount})}const d=t.layouts.map(w=>{const b=a.get(w.btrId);return e[b]}),u=new Set(((i=d.find(w=>w.btrId===t.activeLayoutBtrId))==null?void 0:i.chunkIds)??[]),p=[...s.filter(w=>u.has(w.id)),...s.filter(w=>!u.has(w.id))],m=new Set(((o=d.find(w=>w.btrId===t.activeLayoutBtrId))==null?void 0:o.osnapChunkIds)??[]),h=[...l.filter(w=>m.has(w.id)),...l.filter(w=>!m.has(w.id))],f={format:"acex-package",packageVersion:Ko,snapshotVersion:X,meta:t.meta,layers:t.layers,activeLayoutBtrId:t.activeLayoutBtrId,layouts:d,chunks:p,...h.length>0?{osnapChunks:h}:{}},g=`${JSON.stringify(f)}
1547
+ `;return c.unshift({path:r,bytes:vt(g)}),{manifest:f,manifestFileName:r,files:c}}async function Ps(t,e){if(t.kind==="geometry"){if(!e){const o=cr(t.chunk);return{job:t,uncompressedByteLength:o.byteLength,compressed:o}}const{uncompressed:n,compressed:i}=await Wo(t.chunk);return{job:t,uncompressedByteLength:n.byteLength,compressed:i}}if(!e){const n=xe({primitives:t.primitives});return{job:t,uncompressedByteLength:n.byteLength,compressed:n}}const{uncompressed:a,compressed:r}=await Bi({primitives:t.primitives});return{job:t,uncompressedByteLength:a.byteLength,compressed:r}}async function Ar(t,e={}){const{jobs:a,layoutRefs:r,layoutIndexByBtrId:n,manifestFileName:i,compressChunks:o}=Ls(t,e),s=await Promise.all(a.map(l=>Ps(l,o)));return zs(t,r,n,i,s)}async function Hs(t,e){const a=await Ar(t,e),r=ds(t,{title:t.meta.title,viewerRuntime:e.viewerRuntime,...e.manifestUrl?{manifestUrl:e.manifestUrl}:{}});return{html:r,manifest:a.manifest,manifestFileName:a.manifestFileName,files:[{path:"viewer.html",bytes:vt(r)},...a.files]}}function Us(t,e){const a=t.find(n=>n.btrId===e),r=t.filter(n=>n.btrId!==e);return a?[a,...r]:[...t]}const Ds="application/vnd.mlightcad.acex-chunk;base85",Ts="application/vnd.mlightcad.acex-chunk+aes-gcm;base85",Mr="data-acex-href";function Ns(t){var e;let a=0;for(const r of t.layouts){for(const i of r.lineBatches)a+=be(i);for(const i of r.meshBatches)a+=we(i);const n=(e=r.osnap)==null?void 0:e.primitives;if(n)for(const i of n)a+=Ka(i)}return a}function _s(t,e=Zo){return Ns(t)>=e}async function Rs(t,e){var a;const r=e.title??t.meta.title??"CAD Drawing",n=e.viewerRuntime,i=`#${t.meta.background.toString(16).padStart(6,"0")}`,o=Be(t.meta.locale)??"en",s=t.meta.viewerMode??"measure",l=t.meta.exportLayouts!==!1,c=e.expiresAt??null,d=((a=e.password)==null?void 0:a.trim())||void 0,u={maxChunkBytes:e.maxChunkBytes??ka,maxBatchBytes:e.maxBatchBytes??e.maxChunkBytes??ka,maxOsnapChunkBytes:e.maxOsnapChunkBytes??Jo},p=await Ar(t,u);let m,h,f;if(d){const{key:w,salt:b}=await fr(d);m=Ut({expiresAt:c,password:d,salt:b});const A=new TextEncoder().encode(`${JSON.stringify(p.manifest)}
1548
+ `),y=await Le(w,A);h={mode:"embedded",encrypted:!0,encryptedManifest:bs(y)},f=await $s(p.files,w)}else m=Ut({expiresAt:c}),h={mode:"embedded",manifest:p.manifest},f=Os(p.files);const g=m?` <script id="mlcad-access" type="application/json">${Aa(JSON.stringify(m))}<\/script>
1549
1549
  `:"";return`<!DOCTYPE html>
1550
1550
  <html lang="${o}">
1551
1551
  <head>
1552
1552
  <meta charset="utf-8" />
1553
1553
  <meta name="viewport" content="width=device-width, initial-scale=1" />
1554
1554
  <meta name="generator" content="mlightcad-cad-html-plugin" />
1555
- <title>${Er(r)}</title>
1556
- <style>${Ie}</style>
1555
+ <title>${Cr(r)}</title>
1556
+ <style>${Se}</style>
1557
1557
  </head>
1558
1558
  <body>
1559
1559
  ${Fe(i,s,l)}
1560
1560
  ${g} <script id="mlcad-package" type="application/json">${Aa(JSON.stringify(h))}<\/script>
1561
1561
  ${f} <script>${js(n)}<\/script>
1562
1562
  </body>
1563
- </html>`}function $s(t){const e=[];for(const a of t)a.path!==$t&&e.push(` <script type="${Ns}" ${Mr}="${Br(a.path)}">${_t(a.bytes,"base85")}<\/script>
1564
- `);return e.join("")}async function Hs(t,e){const a=[];for(const r of t){if(r.path===$t)continue;const n=await Le(e,r.bytes);a.push(` <script type="${Ts}" ${Mr}="${Br(r.path)}">${_t(n,"base85")}<\/script>
1565
- `)}return a.join("")}function Er(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Br(t){return Er(t).replace(/'/g,"&#39;")}function js(t){return t.replace(/<\/script/gi,"<\\/script")}function Aa(t){return t.replace(/</g,"\\u003c")}function Vs(t){return!t||t.startsWith("/")||t.includes("\\")||t.includes("\0")?!1:t.split("/").every(e=>e.length>0&&e!=="."&&e!==".."&&/^[A-Za-z0-9._-]+$/.test(e))}function Xs(t){return t.endsWith(".gz")}function Ys(t){const e={};for(const a of t.files){if(!Vs(a.path))throw new Error(`Unsafe package path: ${a.path}`);Xs(a.path)?e[a.path]=[a.bytes,{level:0}]:e[a.path]=[a.bytes,{level:6}]}return si(e)}const Ht=0,ze=16777215;function Cr(t){return t==="white"||t==="space"?t:"black"}function Gs(t){return t==="white"?ze:Ht}function Ma(t,e,a){return t==="space"?e?Ht:ze:a>>>0}function Ea(t){const e=t>>>0,a=e>>16&255,r=e>>8&255,n=e&255;return(a*299+r*587+n*114)/1e3>=128}function Ws(t){const e=t>>>0,a=e>>16&255,r=e>>8&255,n=e&255,i=Math.max(a,r,n),o=Math.min(a,r,n);return i-o>16?null:i<=40?ze:o>=215?Ht:null}function Ct(t){return Ws(t)??t}function Ir(t,e,a){if(Ea(e)!==Ea(a)){for(const r of t.lineBatches)r.color=Ct(r.color);for(const r of t.meshBatches){if(r.texture)continue;r.color=Ct(r.color);const n=r.gradientFill;n&&(n.startColor=Ct(n.startColor),n.endColor=Ct(n.endColor))}}}function Ks(t,e,a){const r=a>>>0;t.meta.background=r;for(const n of t.layouts)Ir(n,e,r)}function Zs(t,e,a){const r=Cr(a);if(t.meta.backgroundMode=r,r==="space"){for(const i of t.layouts)Ir(i,e,Ma("space",i.isModelSpace,0));const n=t.layouts.find(i=>i.btrId===t.activeLayoutBtrId);t.meta.background=Ma("space",n==null||n.isModelSpace,Ht);return}Ks(t,e,Gs(r)),t.meta.backgroundMode=r}const Fr="https://mlightcad.com/cad-viewer/docs/";let Sr=Pr(Fr);function Lr(){return Sr}function Js(t){Sr=Pr(t)}function Pr(t){const e=t.trim();return e?e.replace(/\/+$/,""):Fr.replace(/\/+$/,"")}function qs(){return{minX:0,minY:0,maxX:0,maxY:0,valid:!1}}function Qs(t,e,a){if(e.length<3)return;const r=a[0],n=a[1];for(let i=0;i+2<e.length;i+=3){const o=ca(e[i],r),s=ca(e[i+1],n);t.valid?(o<t.minX&&(t.minX=o),o>t.maxX&&(t.maxX=o),s<t.minY&&(t.minY=s),s>t.maxY&&(t.maxY=s)):(t.minX=t.maxX=o,t.minY=t.maxY=s,t.valid=!0)}}function Ba(t,e){Qs(t,e.positions,e.offset)}function tl(t){return t.valid?{minX:t.minX,minY:t.minY,maxX:t.maxX,maxY:t.maxY}:null}function el(t,e){const a=qs();for(const r of t)Ba(a,r);for(const r of e)Ba(a,r);return tl(a)}function zr(t,e){return t?e?{minX:Math.min(t.minX,e.minX),minY:Math.min(t.minY,e.minY),maxX:Math.max(t.maxX,e.maxX),maxY:Math.max(t.maxY,e.maxY)}:t:e??null}function al(t){if(!t||t.length===0)return null;let e=null;for(const a of t)e=zr(e,a.paper);return e}function Ur(t){return zr(el(t.lineBatches,t.meshBatches),al(t.viewports))}function rl(t,e,a){if(a)return;const r=il(t,e);if(!(r!=null&&r.newIterator))return;const n=[];for(const i of r.newIterator()){if(!(i instanceof Zr)||Jr.isDefaultPaperSpaceViewport(i)||typeof i.toGiViewport!="function")continue;const o=i.toGiViewport(),s=o.box,l=o.viewBox,c=Ca(s),d=Ca(l);if(!c||!d)continue;const u=Number.isFinite(o.viewTwistAngle)?o.viewTwistAngle:i.viewTwistAngle,p=nl(o,i),m={paper:c,model:d};Number.isFinite(u)&&Math.abs(u)>1e-12&&(m.twist=u),p.length>0&&(m.frozenLayers=p),n.push(m)}return n.length>0?n:void 0}function nl(t,e){var a;const r=t.frozenLayers;if(r&&r.length>0)return[...r];const n=e.frozenLayerIds;if(!(n!=null&&n.length))return[];const i=(a=e.database)==null?void 0:a.tables.layerTable;if(!i)return[];const o=[];for(const s of n){const l=i.getIdAt(s);l&&o.push(l.name)}return o}function Ca(t){if(typeof t.isEmpty=="function"&&t.isEmpty())return;const e=t.min.x,a=t.min.y,r=t.max.x,n=t.max.y;if(!(!Number.isFinite(e)||!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(n)||r-e<=0||n-a<=0))return{minX:e,minY:a,maxX:r,maxY:n}}function il(t,e){var a;const r=(a=t.tables)==null?void 0:a.blockTable;if(!r)return;const n=typeof r.getIdAt=="function"?r.getIdAt(e):void 0;if(n)return n;if(typeof r.newIterator=="function"){for(const o of r.newIterator())if(o.objectId===e)return o}const i=r.modelSpace;if((i==null?void 0:i.objectId)===e)return i}const Ia=16/9;function ol(t,e,a,r=Ia){var n,i,o,s;const l=Number.isFinite(r)&&r>0?r:Ia;if(a){const d=(o=(i=(n=t.tables)==null?void 0:n.viewportTable)==null?void 0:i.getActiveVportBox)==null?void 0:o.call(i,l);return Fa(d)}const c=(s=t.objects)==null?void 0:s.layout;if(c!=null&&c.newIterator){for(const d of c.newIterator())if(d.blockTableRecordId===e)return Fa(d.limits)}}function Fa(t){if(!t||typeof t.isEmpty=="function"&&t.isEmpty())return;const e=t.min.x,a=t.min.y,r=t.max.x,n=t.max.y;if(!(!Number.isFinite(e)||!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(n)||r-e<=0||n-a<=0))return{minX:e,minY:a,maxX:r,maxY:n}}function Dr(t){var e;const a=(e=t.objects)==null?void 0:e.layout;if(!(a!=null&&a.newIterator))return[];const r=[];for(const n of a.newIterator()){const i=n.blockTableRecordId;i&&r.push({name:n.layoutName||i,tabOrder:n.tabOrder??0,blockTableRecordId:i})}return r.sort((n,i)=>n.tabOrder-i.tabOrder),r}function sl(t,e,a={}){return cl(t,e,a)}async function ll(t,e,a={}){const r=a.yieldBetweenLayouts;r&&await r();const n=a.exportInvisibleLayers!==!1,i=a.exportLayouts!==!1,o=n?void 0:h=>Ue(e,h,n),s=ar(t,{title:a.title,background:a.background}),l=Nr(e,n),c=Dr(t),d=new Map(c.map(h=>[h.blockTableRecordId,h.name])),u=Rr(e,i),p=_r(e,c,i),m=[];for(const h of p)m.push(Or(t,e,h,d,a,o)),r&&await r();return{version:X,meta:Tr(s,a,m,u),layers:l,layouts:m,activeLayoutBtrId:u}}function cl(t,e,a){const r=a.exportInvisibleLayers!==!1,n=a.exportLayouts!==!1,i=r?void 0:m=>Ue(e,m,r),o=ar(t,{title:a.title,background:a.background}),s=Nr(e,r),l=Dr(t),c=new Map(l.map(m=>[m.blockTableRecordId,m.name])),d=Rr(e,n),u=_r(e,l,n),p=[];for(const m of u)p.push(Or(t,e,m,c,a,i));return{version:X,meta:Tr(o,a,p,d),layers:s,layouts:p,activeLayoutBtrId:d}}function Nr(t,e){const a=[];for(const r of t.layers)Ue(t,r.name,e)&&a.push({name:r.name,color:r.color,visible:r.visible});return a}function Tr(t,e,a,r){const n=a.find(s=>s.btrId===r)??a[0],i=n?Ur(n):null,o=e.initialView??"fit";return{title:t.title,createdAt:new Date().toISOString(),extents:t.extents,viewExtents:i??void 0,units:t.units,grip:t.grip,background:t.background,locale:e.locale??"en",initialView:o,viewState:o==="current"?e.viewState:void 0,viewerMode:e.viewerMode??"measure",exportLayouts:e.exportLayouts!==!1,docsBaseUrl:e.docsBaseUrl??Lr()}}function dl(t){return(t.viewerMode??"measure")==="measure"}function Ue(t,e,a){if(a)return!0;const r=t.layers.find(n=>n.name===e);return r?r.visible:!0}function _r(t,e,a){if(!a){const o=t.layouts.find(s=>s.btrId===t.modelSpaceBtrId);return o?[o]:[]}const r=new Map(t.layouts.map(o=>[o.btrId,o])),n=new Set,i=[];for(const o of e){if(n.has(o.blockTableRecordId))continue;n.add(o.blockTableRecordId);const s=r.get(o.blockTableRecordId);i.push(s??{btrId:o.blockTableRecordId,name:o.name,isModelSpace:o.blockTableRecordId===t.modelSpaceBtrId,layers:[]})}for(const o of t.layouts)n.has(o.btrId)||(n.add(o.btrId),i.push(o));return i}function Rr(t,e){return e&&t.activeLayoutBtrId||t.modelSpaceBtrId}function Or(t,e,a,r,n,i){const o=[],s=[];for(const m of a.layers){if(i&&!i(m.name))continue;const h=mo(m.root);o.push(...h.lineBatches),s.push(...h.meshBatches)}const l=a.isModelSpace||a.btrId===e.modelSpaceBtrId,c=ol(t,a.btrId,l,n.canvasAspectRatio),d=rl(t,a.btrId,l),u=Ur({lineBatches:o,meshBatches:s,viewports:d})??void 0;let p;if(dl(n)){const m=performance.now();p=Vo(t,a.btrId,{includeLayer:i}),console.log(`[chtml] osnap catalog ${r.get(a.btrId)??a.name??a.btrId}: ${(performance.now()-m).toFixed(0)} ms (${(p==null?void 0:p.primitives.length)??0} primitives)`)}return{btrId:a.btrId,name:r.get(a.btrId)??a.name??ul(t,a.btrId),isModelSpace:l,lineBatches:o,meshBatches:s,osnap:p,viewports:d,...c?{savedView:c}:{},...u?{fitExtents:u}:{}}}function ul(t,e){var a;const r=(a=t.tables)==null?void 0:a.blockTable;if(r!=null&&r.newIterator){for(const n of r.newIterator())if(n.objectId===e)return n.name}return e}const ml=400,De=10,Ne=1,$r=64;function Nt(t){return Math.floor(t)*1024*1024}function Hr(t){return Math.max(Ne,Math.round(t/(1024*1024)))}function jr(t){return Number.isFinite(t)?Math.min($r,Math.max(Ne,Math.floor(t))):De}function G(t={}){var e;const a=t.exportFormat==="multi"?"multi":"single",r=a==="multi"?Nt(jr(t.maxChunkBytes!=null?Hr(t.maxChunkBytes):De)):dr;return{exportFormat:a,exportInvisibleLayers:t.exportInvisibleLayers!==!1,exportLayouts:t.exportLayouts!==!1,background:Cr(t.background),initialView:t.initialView??"fit",viewerMode:t.viewerMode??"measure",expiryDays:a==="multi"?"never":t.expiryDays??"never",expiresAt:a==="multi"?null:t.expiresAt??null,password:a==="multi"?"":((e=t.password)==null?void 0:e.trim())??"",maxChunkBytes:r,compressChunks:a==="multi"?t.compressChunks!==!1:!0}}function pl(t){const e=t.maxChunkBytes??Nt(De),a=t.compressChunks!==!1;return{maxChunkBytes:e,maxBatchBytes:e,maxOsnapChunkBytes:e,compressChunks:a}}function hl(t){const e=t.activeLayoutView,a=e.center,r=e.trCamera.zoom,n=Math.max(e.height,1),i=r*(2*ml)/n;return{centerX:a.x,centerY:a.y,zoom:i}}const fl="./viewer-runtime.iife.js";let At={};function gl(t){At={...At,...t}}function bl(){return{...At}}function wl(t){return t!=null?String(t):At.viewerRuntimeUrl!=null?String(At.viewerRuntimeUrl):fl}class xl{build(e,a,r={}){return sl(a,La(e),Sa(r))}async buildAsync(e,a,r={}){return ll(a,La(e),{...Sa(r),yieldBetweenLayouts:()=>j()})}}function Sa(t){return{title:t.title,background:t.background,locale:t.locale??x.currentLocale,exportInvisibleLayers:t.exportInvisibleLayers,exportLayouts:t.exportLayouts,initialView:t.initialView,viewState:t.viewState,viewerMode:t.viewerMode,canvasAspectRatio:t.canvasAspectRatio,docsBaseUrl:yl()}}function yl(){try{Js(Xn())}catch{}return Lr()}function La(t){const e=[...t.layers.values()].map(r=>({name:r.name,color:r.color.RGB??16777215,visible:!r.isOff&&!r.isFrozen})),a=[...t.layouts.entries()].map(([r,n])=>({btrId:r,isModelSpace:r===t.modelSpaceBtrId,layers:[...n.layers.values()].map(i=>({name:i.name,root:i.internalObject}))}));return{layers:e,layouts:a,activeLayoutBtrId:t.activeLayoutBtrId||t.modelSpaceBtrId,modelSpaceBtrId:t.modelSpaceBtrId}}function Z(t,e){console.log(`[chtml] ${t}: ${e.toFixed(0)} ms`)}class vl{constructor(e={}){this.options=e,this._snapshotBuilder=new xl}async prepareAcTrView2dForHtmlExport(e,a={}){if(!e||!("cadScene"in e)||!e.cadScene)throw new Error("CAD scene is not available. Open a drawing before exporting to HTML.");if(!(e instanceof jn))throw new Error("HTML export requires a 2D CAD view. Open a drawing before exporting.");const r=G(a),n={includeInvisibleLayers:r.exportInvisibleLayers,includeLayouts:r.exportLayouts};return await e.ensureEntitiesConvertedForExport(n),await j(),e}async convert(e,a={},r){const n=J.instance,i=G(a),o=performance.now();await n.withBusyIndicator(async()=>{await j();const s=n.curDocument;let l=performance.now();const c=await this.prepareAcTrView2dForHtmlExport(r??n.curView,i);Z("prepare (missing entities)",performance.now()-l);const d=e||s.fileName||s.docTitle,u=Vn(d);l=performance.now();const p=await this._snapshotBuilder.buildAsync(c.cadScene,s.database,{title:u,background:c.backgroundColor,exportInvisibleLayers:i.exportInvisibleLayers,exportLayouts:i.exportLayouts,initialView:i.initialView,viewerMode:i.viewerMode,viewState:i.initialView==="current"&&(i.exportLayouts||c.activeLayoutBtrId===c.modelSpaceBtrId)?hl(c):void 0,canvasAspectRatio:c.width/Math.max(c.height,1)});Zs(p,c.backgroundColor,i.background),Z("snapshot build",performance.now()-l),await j(),l=performance.now();const m=await this.loadViewerRuntime();if(Z("load viewer runtime",performance.now()-l),await j(),i.exportFormat==="multi"){l=performance.now();const g=pl(i),w=await Us(p,{viewerRuntime:m,...g});Z(g.compressChunks?"package + gzip chunks":"package chunks",performance.now()-l),l=performance.now();const b=Ys(w);Z("zip package",performance.now()-l),await j(),this.downloadBytes(b,Ve(d,"zip"),"application/zip"),Z("chtml total",performance.now()-o);return}const h=fs(i.expiryDays,Date.now(),i.expiresAt);l=performance.now();const f=await this.packSelfContainedHtml(p,m,{expiresAt:h,password:i.password||void 0});Z("pack self-contained html",performance.now()-l),await j(),this.downloadHtml(f,Ve(d,"html")),Z("chtml total",performance.now()-o)})}async packSnapshot(e,a){await J.instance.withBusyIndicator(async()=>{await j();const r=await this.loadViewerRuntime();await j();const n=await this.packSelfContainedHtml(e,r,{expiresAt:null});await j(),this.downloadHtml(n,a)})}async packSelfContainedHtml(e,a,r){if(Rs(e))return Os(e,{title:e.meta.title,viewerRuntime:a,expiresAt:r.expiresAt,password:r.password});const n=await ws(Za(e),{expiresAt:r.expiresAt,password:r.password});return cs(e,{title:e.meta.title,viewerRuntime:a,encoded:n.encoded,accessManifest:n.manifest})}async loadViewerRuntime(){const e=wl(this.options.viewerRuntimeUrl),a=await fetch(e);if(!a.ok)throw new Error(`Failed to load HTML viewer runtime from "${e}" (${a.status}). Install @mlightcad/cad-html-plugin, copy viewer-runtime.iife.js to your app assets, and set viewerRuntimeUrl on registerLazyHtmlPlugin / createHtmlPlugin / AcApHtmlConvertor.`);return a.text()}downloadHtml(e,a){this.downloadBytes(new TextEncoder().encode(e),a,"text/html;charset=utf-8")}downloadBytes(e,a,r){const n=new Uint8Array(e.byteLength);n.set(e);const i=new Blob([n],{type:r}),o=URL.createObjectURL(i),s=document.createElement("a");s.href=o,s.download=a,document.body.appendChild(s),s.click(),document.body.removeChild(s),window.setTimeout(()=>URL.revokeObjectURL(o),6e4)}}class kl extends $n{constructor(e={}){super(),this.pluginOptions=e}async execute(e){const a=await this.promptOptions();a&&await new vl(this.pluginOptions).convert(e.doc.fileName||e.doc.docTitle,a,e.view)}async promptOptions(){const e=G(),a=await this.promptExportFormat();if(a===void 0)return;const r=await this.promptYesNo("jig.chtml.exportInvisibleLayers",e.exportInvisibleLayers);if(r===void 0)return;const n=await this.promptYesNo("jig.chtml.exportLayouts",e.exportLayouts);if(n===void 0)return;const i=await this.promptBackground();if(i===void 0)return;const o=await this.promptInitialView();if(o===void 0)return;const s=await this.promptViewerMode();if(s===void 0)return;let l,c;if(!(a==="multi"&&(l=await this.promptChunkSizeMiB(),l===void 0||(c=await this.promptYesNo("jig.chtml.compressChunks",e.compressChunks),c===void 0))))return G({exportFormat:a,exportInvisibleLayers:r,exportLayouts:n,background:i,initialView:o,viewerMode:s,...a==="multi"?{maxChunkBytes:l,compressChunks:c}:{}})}async promptExportFormat(){const e=G(),a=new pt(x.t("jig.chtml.exportFormat"));a.allowNone=!0;const r=a.keywords.add(x.t("jig.chtml.keywords.single.display"),x.t("jig.chtml.keywords.single.global"),x.t("jig.chtml.keywords.single.local")),n=a.keywords.add(x.t("jig.chtml.keywords.multi.display"),x.t("jig.chtml.keywords.multi.global"),x.t("jig.chtml.keywords.multi.local"));a.keywords.default=e.exportFormat==="multi"?n:r;const i=await J.instance.editor.getKeywords(a);if(i.status!==B.Cancel){if(i.status===B.None)return e.exportFormat;if(i.status===B.OK||i.status===B.Keyword)return i.stringResult?i.stringResult==="Multi"?"multi":"single":e.exportFormat}}async promptYesNo(e,a){const r=new pt(x.t(e));r.allowNone=!0;const n=r.keywords.add(x.t("jig.chtml.keywords.yes.display"),x.t("jig.chtml.keywords.yes.global"),x.t("jig.chtml.keywords.yes.local")),i=r.keywords.add(x.t("jig.chtml.keywords.no.display"),x.t("jig.chtml.keywords.no.global"),x.t("jig.chtml.keywords.no.local"));r.keywords.default=a?n:i;const o=await J.instance.editor.getKeywords(r);if(o.status!==B.Cancel){if(o.status===B.None)return a;if(o.status===B.OK||o.status===B.Keyword)return o.stringResult?o.stringResult==="Yes":a}}async promptChunkSizeMiB(){const e=G({exportFormat:"multi"}),a=Hr(e.maxChunkBytes),r=new Hn(x.t("jig.chtml.chunkSizeMiB"),Ne,$r);r.allowNone=!0,r.allowZero=!1,r.allowNegative=!1,r.useDefaultValue=!0,r.defaultValue=a;const n=await J.instance.editor.getInteger(r);if(n.status!==B.Cancel){if(n.status===B.None)return Nt(a);if(n.status===B.OK){const i=jr(n.value??a);return Nt(i)}}}async promptBackground(){const e=G(),a=new pt(x.t("jig.chtml.background"));a.allowNone=!0;const r=a.keywords.add(x.t("jig.chtml.keywords.black.display"),x.t("jig.chtml.keywords.black.global"),x.t("jig.chtml.keywords.black.local")),n=a.keywords.add(x.t("jig.chtml.keywords.white.display"),x.t("jig.chtml.keywords.white.global"),x.t("jig.chtml.keywords.white.local")),i=a.keywords.add(x.t("jig.chtml.keywords.space.display"),x.t("jig.chtml.keywords.space.global"),x.t("jig.chtml.keywords.space.local"));a.keywords.default=e.background==="white"?n:e.background==="space"?i:r;const o=await J.instance.editor.getKeywords(a);if(o.status!==B.Cancel){if(o.status===B.None)return e.background;if(o.status===B.OK||o.status===B.Keyword)return o.stringResult?o.stringResult==="White"?"white":o.stringResult==="Space"?"space":"black":e.background}}async promptInitialView(){const e=G(),a=new pt(x.t("jig.chtml.initialView"));a.allowNone=!0;const r=a.keywords.add(x.t("jig.chtml.keywords.extents.display"),x.t("jig.chtml.keywords.extents.global"),x.t("jig.chtml.keywords.extents.local")),n=a.keywords.add(x.t("jig.chtml.keywords.current.display"),x.t("jig.chtml.keywords.current.global"),x.t("jig.chtml.keywords.current.local"));a.keywords.default=e.initialView==="current"?n:r;const i=await J.instance.editor.getKeywords(a);if(i.status!==B.Cancel){if(i.status===B.None)return e.initialView;if(i.status===B.OK||i.status===B.Keyword)return i.stringResult?i.stringResult==="Current"?"current":"fit":e.initialView}}async promptViewerMode(){const e=G(),a=new pt(x.t("jig.chtml.viewerMode"));a.allowNone=!0;const r=a.keywords.add(x.t("jig.chtml.keywords.view.display"),x.t("jig.chtml.keywords.view.global"),x.t("jig.chtml.keywords.view.local")),n=a.keywords.add(x.t("jig.chtml.keywords.measure.display"),x.t("jig.chtml.keywords.measure.global"),x.t("jig.chtml.keywords.measure.local"));a.keywords.default=e.viewerMode==="view"?r:n;const i=await J.instance.editor.getKeywords(a);if(i.status!==B.Cancel){if(i.status===B.None)return e.viewerMode;if(i.status===B.OK||i.status===B.Keyword)return i.stringResult?i.stringResult==="View"?"view":"measure":e.viewerMode}}}const Al="1.7.8-preview.6",Ml={version:Al};class El{constructor(e={}){this.options=e,this.name="HtmlPlugin",this.version=Ml.version,this.description="HTML export (-chtml) command",this.registeredCommands=[]}onLoad(e,a){const r=On.SYSTEMT_COMMAND_GROUP_NAME,n=new kl(this.options);a.addCommand(r,"-chtml","-chtml",n),this.registeredCommands.push({group:r,name:"-chtml"}),a.lookupGlobalCmd("chtml")||(a.addCommand(r,"chtml","chtml",n),this.registeredCommands.push({group:r,name:"chtml"}))}onUnload(e,a){for(const r of this.registeredCommands)a.removeCmd(r.group,r.name);this.registeredCommands=[]}}async function Cl(t={}){return t.viewerRuntimeUrl!=null&&gl(t),new El(bl())}export{Go as ACEC_CHUNK_MAGIC,gi as ACEO_OSNAP_MAGIC,bi as ACEO_OSNAP_VERSION,os as ACEX_COORDINATE_BADGE_LIFT_EM,dr as ACEX_DEFAULT_CHUNK_MAX_BYTES,De as ACEX_DEFAULT_CHUNK_SIZE_MIB,Fr as ACEX_DEFAULT_DOCS_BASE_URL,$t as ACEX_DEFAULT_MANIFEST_FILE,qo as ACEX_DEFAULT_MANIFEST_HREF,Ts as ACEX_EMBEDDED_CHUNK_ENCRYPTED_MIME,Mr as ACEX_EMBEDDED_CHUNK_HREF_ATTR,ka as ACEX_EMBEDDED_CHUNK_MAX_BYTES,Ns as ACEX_EMBEDDED_CHUNK_MIME,Zo as ACEX_EMBEDDED_CHUNK_THRESHOLD_BYTES,Jo as ACEX_EMBEDDED_OSNAP_CHUNK_MAX_BYTES,Ht as ACEX_HTML_BACKGROUND_BLACK,ze as ACEX_HTML_BACKGROUND_WHITE,Yo as ACEX_HTML_LOCALES,Ie as ACEX_HTML_SHELL_CSS,$r as ACEX_MAX_CHUNK_SIZE_MIB,Ot as ACEX_MAX_GEOMETRY_BATCH_BYTES,Ne as ACEX_MIN_CHUNK_SIZE_MIB,Ko as ACEX_PACKAGE_VERSION,as as ACEX_POLAR_ANGLE_INCREMENTS,Xa as ACEX_SNAPSHOT_COMPRESSION,X as ACEX_SNAPSHOT_VERSION,kl as AcApExportHtmlCmd,vl as AcApHtmlConvertor,xl as AcApHtmlSnapshotBuilder,ge as AcExBinaryWriter,de as AcExHtmlIcons,fl as DEFAULT_HTML_VIEWER_RUNTIME_URL,Qe as F_LINE_DISTANCES,hi as F_LINE_EXCLUDE_OSNAP,Je as F_LINE_INDICES,qe as F_LINE_PATTERN,ea as F_LINE_RENDER_ORDER,ta as F_LINE_WIDTH,na as F_MESH_GRADIENT_FILL,ia as F_MESH_GRADIENT_POS,ra as F_MESH_HATCH,aa as F_MESH_INDICES,fi as F_MESH_POINTS,sa as F_MESH_RENDER_ORDER,oa as F_MESH_SIDE,la as F_MESH_TEXTURE,Sl as HTML_PLUGIN_NAME,Ll as HTML_PLUGIN_TRIGGERS,is as ML_UI_COMPACT_MAX_WIDTH,ns as ML_UI_MOBILE_MAX_WIDTH,Gs as acExHtmlBackgroundRgb,di as acExHtmlBase85ToBytes,bs as acExHtmlBytesToBase64,ci as acExHtmlBytesToBase85,_t as acExHtmlBytesToText,Ma as acExHtmlLayoutBackground,li as acExHtmlTextToBytes,Hr as acexChunkSizeBytesToMiB,Nt as acexChunkSizeMiBToBytes,Lr as acexGetDocsBaseUrl,Js as acexSetDocsBaseUrl,Zs as applyAcExHtmlBackground,ye as bakePlainDrawableSlice,Dt as buildAcExHtmlAccessManifest,rs as buildAcExHtmlPolarAnglesPanel,Fe as buildAcExHtmlShellBody,Us as buildAcExPackageAsync,Ar as buildAcExPackageDataAsync,Vo as buildOsnapCatalog,sl as buildSnapshotFromExportScene,ll as buildSnapshotFromExportSceneAsync,ar as buildViewerMetadata,hl as captureAcApHtmlViewState,ol as captureAcExSavedViewExtents,jr as clampAcApHtmlChunkSizeMiB,mo as collectBatchesFromObject3D,rl as collectLayoutViewports,Ja as compactIndexedSlice,ae as compressSnapshotBinary,Ya as compressSnapshotBinaryAsync,el as computeLayoutExtents,Ur as computeLayoutViewExtents,Ae as computeLineDistancesForSegments,al as computeViewportPaperExtents,gl as configureHtmlPlugin,et as copyFloat32Range,Di as copyUint32Range,fr as createAcExHtmlAccessKey,qs as createEmptyExtents,Cl as createHtmlPlugin,cr as encodeChunkBinary,xe as encodeOsnapCatalogBinary,Za as encodeSnapshot,Fi as encodeSnapshotBinary,_i as encodeTextureForExport,Le as encryptAcExHtmlBytes,gs as encryptAcExHtmlSnapshotPayload,_s as estimateAcExSnapshotGeometryBytes,be as estimateLineBatchBytes,we as estimateMeshBatchBytes,Ka as estimateOsnapPrimitiveBytes,Ba as expandExtentsFromBatch,Qs as expandExtentsFromPositions,Zi as exportActiveBatchedLine2Slice,Me as exportActiveBatchedSlice,St as exportBufferGeometrySlice,Ti as exportPlainDrawableSlice,ji as exportUvsForPositionSlice,Wi as exportVertexAttributeSlice,Yi as extractGradientFill,Xi as extractHatchPattern,Vi as extractLinePattern,bl as getHtmlPluginOptions,qa as isTransparentImagePlaceholder,Dr as listDatabaseLayouts,hr as needsAcExHtmlAccessControl,Pr as normalizeAcExDocsBaseUrl,ct as omitNonFinitePrimitives,cs as packHtml,Os as packHtmlEmbeddedPackage,ds as packHtmlPackage,ws as protectAcExHtmlEncodedSnapshot,Ni as readBatchWorldOffset,Ki as rebaseHatchPatternToLocalOffset,ve as rebasePlainDrawableSliceAroundCentroid,Ks as remapAcExSnapshotForegroundForBackground,fs as resolveAcApHtmlExpiresAt,G as resolveAcApHtmlExportOptions,pl as resolveAcApHtmlPackageBuildOptions,Cr as resolveAcExHtmlBackground,Be as resolveAcExHtmlLocale,wl as resolveViewerRuntimeUrl,Rs as shouldEmbedAcExChunks,Ui as snapshotMimeType,Ss as splitLayoutIntoSlices,vs as splitLineBatch,ks as splitMeshBatch,Ei as splitOsnapPrimitives,tl as toExtents,ca as toWcsCoord,ua as transformHatchPatternToWorldSpace,zr as unionExtents,wa as wcsPointToOcsArcAngle,Ga as writeLineBatch,Wa as writeMeshBatch,Ys as zipAcExPackageFiles};
1563
+ </html>`}function Os(t){const e=[];for(const a of t)a.path!==Ot&&e.push(` <script type="${Ds}" ${Mr}="${Br(a.path)}">${Nt(a.bytes,"base85")}<\/script>
1564
+ `);return e.join("")}async function $s(t,e){const a=[];for(const r of t){if(r.path===Ot)continue;const n=await Le(e,r.bytes);a.push(` <script type="${Ts}" ${Mr}="${Br(r.path)}">${Nt(n,"base85")}<\/script>
1565
+ `)}return a.join("")}function Cr(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Br(t){return Cr(t).replace(/'/g,"&#39;")}function js(t){return t.replace(/<\/script/gi,"<\\/script")}function Aa(t){return t.replace(/</g,"\\u003c")}function Vs(t){return!t||t.startsWith("/")||t.includes("\\")||t.includes("\0")?!1:t.split("/").every(e=>e.length>0&&e!=="."&&e!==".."&&/^[A-Za-z0-9._-]+$/.test(e))}function Xs(t){return t.endsWith(".gz")}function Ys(t){const e={};for(const a of t.files){if(!Vs(a.path))throw new Error(`Unsafe package path: ${a.path}`);Xs(a.path)?e[a.path]=[a.bytes,{level:0}]:e[a.path]=[a.bytes,{level:6}]}return si(e)}const $t=0,Pe=16777215;function Er(t){return t==="white"||t==="space"?t:"black"}function Gs(t){return t==="white"?Pe:$t}function Ma(t,e,a){return t==="space"?e?$t:Pe:a>>>0}function Ca(t){const e=t>>>0,a=e>>16&255,r=e>>8&255,n=e&255;return(a*299+r*587+n*114)/1e3>=128}function Ws(t){const e=t>>>0,a=e>>16&255,r=e>>8&255,n=e&255,i=Math.max(a,r,n),o=Math.min(a,r,n);return i-o>16?null:i<=40?Pe:o>=215?$t:null}function Et(t){return Ws(t)??t}function Sr(t,e,a){if(Ca(e)!==Ca(a)){for(const r of t.lineBatches)r.color=Et(r.color);for(const r of t.meshBatches){if(r.texture)continue;r.color=Et(r.color);const n=r.gradientFill;n&&(n.startColor=Et(n.startColor),n.endColor=Et(n.endColor))}}}function Ks(t,e,a){const r=a>>>0;t.meta.background=r;for(const n of t.layouts)Sr(n,e,r)}function Zs(t,e,a){const r=Er(a);if(t.meta.backgroundMode=r,r==="space"){for(const i of t.layouts)Sr(i,e,Ma("space",i.isModelSpace,0));const n=t.layouts.find(i=>i.btrId===t.activeLayoutBtrId);t.meta.background=Ma("space",n==null||n.isModelSpace,$t);return}Ks(t,e,Gs(r)),t.meta.backgroundMode=r}const Fr="https://mlightcad.com/cad-viewer/docs/";let Ir=zr(Fr);function Lr(){return Ir}function Js(t){Ir=zr(t)}function zr(t){const e=t.trim();return e?e.replace(/\/+$/,""):Fr.replace(/\/+$/,"")}function qs(){return{minX:0,minY:0,maxX:0,maxY:0,valid:!1}}function Qs(t,e,a){if(e.length<3)return;const r=a[0],n=a[1];for(let i=0;i+2<e.length;i+=3){const o=ca(e[i],r),s=ca(e[i+1],n);t.valid?(o<t.minX&&(t.minX=o),o>t.maxX&&(t.maxX=o),s<t.minY&&(t.minY=s),s>t.maxY&&(t.maxY=s)):(t.minX=t.maxX=o,t.minY=t.maxY=s,t.valid=!0)}}function Ba(t,e){Qs(t,e.positions,e.offset)}function tl(t){return t.valid?{minX:t.minX,minY:t.minY,maxX:t.maxX,maxY:t.maxY}:null}function el(t,e){const a=qs();for(const r of t)Ba(a,r);for(const r of e)Ba(a,r);return tl(a)}function Pr(t,e){return t?e?{minX:Math.min(t.minX,e.minX),minY:Math.min(t.minY,e.minY),maxX:Math.max(t.maxX,e.maxX),maxY:Math.max(t.maxY,e.maxY)}:t:e??null}function al(t){if(!t||t.length===0)return null;let e=null;for(const a of t)e=Pr(e,a.paper);return e}function Hr(t){return Pr(el(t.lineBatches,t.meshBatches),al(t.viewports))}function rl(t,e,a){if(a)return;const r=il(t,e);if(!(r!=null&&r.newIterator))return;const n=[];for(const i of r.newIterator()){if(!(i instanceof Zr)||Jr.isDefaultPaperSpaceViewport(i)||typeof i.toGiViewport!="function")continue;const o=i.toGiViewport(),s=o.box,l=o.viewBox,c=Ea(s),d=Ea(l);if(!c||!d)continue;const u=Number.isFinite(o.viewTwistAngle)?o.viewTwistAngle:i.viewTwistAngle,p=nl(o,i),m={paper:c,model:d};Number.isFinite(u)&&Math.abs(u)>1e-12&&(m.twist=u),p.length>0&&(m.frozenLayers=p),n.push(m)}return n.length>0?n:void 0}function nl(t,e){var a;const r=t.frozenLayers;if(r&&r.length>0)return[...r];const n=e.frozenLayerIds;if(!(n!=null&&n.length))return[];const i=(a=e.database)==null?void 0:a.tables.layerTable;if(!i)return[];const o=[];for(const s of n){const l=i.getIdAt(s);l&&o.push(l.name)}return o}function Ea(t){if(typeof t.isEmpty=="function"&&t.isEmpty())return;const e=t.min.x,a=t.min.y,r=t.max.x,n=t.max.y;if(!(!Number.isFinite(e)||!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(n)||r-e<=0||n-a<=0))return{minX:e,minY:a,maxX:r,maxY:n}}function il(t,e){var a;const r=(a=t.tables)==null?void 0:a.blockTable;if(!r)return;const n=typeof r.getIdAt=="function"?r.getIdAt(e):void 0;if(n)return n;if(typeof r.newIterator=="function"){for(const o of r.newIterator())if(o.objectId===e)return o}const i=r.modelSpace;if((i==null?void 0:i.objectId)===e)return i}const Sa=16/9;function ol(t,e,a,r=Sa){var n,i,o,s;const l=Number.isFinite(r)&&r>0?r:Sa;if(a){const d=(o=(i=(n=t.tables)==null?void 0:n.viewportTable)==null?void 0:i.getActiveVportBox)==null?void 0:o.call(i,l);return Fa(d)}const c=(s=t.objects)==null?void 0:s.layout;if(c!=null&&c.newIterator){for(const d of c.newIterator())if(d.blockTableRecordId===e)return Fa(d.limits)}}function Fa(t){if(!t||typeof t.isEmpty=="function"&&t.isEmpty())return;const e=t.min.x,a=t.min.y,r=t.max.x,n=t.max.y;if(!(!Number.isFinite(e)||!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(n)||r-e<=0||n-a<=0))return{minX:e,minY:a,maxX:r,maxY:n}}function Ur(t){var e;const a=(e=t.objects)==null?void 0:e.layout;if(!(a!=null&&a.newIterator))return[];const r=[];for(const n of a.newIterator()){const i=n.blockTableRecordId;i&&r.push({name:n.layoutName||i,tabOrder:n.tabOrder??0,blockTableRecordId:i})}return r.sort((n,i)=>n.tabOrder-i.tabOrder),r}function sl(t,e,a={}){return cl(t,e,a)}async function ll(t,e,a={}){const r=a.yieldBetweenLayouts;r&&await r();const n=a.exportInvisibleLayers!==!1,i=a.exportLayouts!==!1,o=n?void 0:h=>He(e,h,n),s=ar(t,{title:a.title,background:a.background}),l=Dr(e,n),c=Ur(t),d=new Map(c.map(h=>[h.blockTableRecordId,h.name])),u=_r(e,i),p=Nr(e,c,i),m=[];for(const h of p)m.push(Rr(t,e,h,d,a,o)),r&&await r();return{version:X,meta:Tr(s,a,m,u),layers:l,layouts:m,activeLayoutBtrId:u}}function cl(t,e,a){const r=a.exportInvisibleLayers!==!1,n=a.exportLayouts!==!1,i=r?void 0:m=>He(e,m,r),o=ar(t,{title:a.title,background:a.background}),s=Dr(e,r),l=Ur(t),c=new Map(l.map(m=>[m.blockTableRecordId,m.name])),d=_r(e,n),u=Nr(e,l,n),p=[];for(const m of u)p.push(Rr(t,e,m,c,a,i));return{version:X,meta:Tr(o,a,p,d),layers:s,layouts:p,activeLayoutBtrId:d}}function Dr(t,e){const a=[];for(const r of t.layers)He(t,r.name,e)&&a.push({name:r.name,color:r.color,visible:r.visible});return a}function Tr(t,e,a,r){const n=a.find(s=>s.btrId===r)??a[0],i=n?Hr(n):null,o=e.initialView??"fit";return{title:t.title,createdAt:new Date().toISOString(),extents:t.extents,viewExtents:i??void 0,units:t.units,grip:t.grip,background:t.background,locale:e.locale??"en",initialView:o,viewState:o==="current"?e.viewState:void 0,viewerMode:e.viewerMode??"measure",exportLayouts:e.exportLayouts!==!1,docsBaseUrl:e.docsBaseUrl??Lr()}}function dl(t){return(t.viewerMode??"measure")==="measure"}function He(t,e,a){if(a)return!0;const r=t.layers.find(n=>n.name===e);return r?r.visible:!0}function Nr(t,e,a){if(!a){const o=t.layouts.find(s=>s.btrId===t.modelSpaceBtrId);return o?[o]:[]}const r=new Map(t.layouts.map(o=>[o.btrId,o])),n=new Set,i=[];for(const o of e){if(n.has(o.blockTableRecordId))continue;n.add(o.blockTableRecordId);const s=r.get(o.blockTableRecordId);i.push(s??{btrId:o.blockTableRecordId,name:o.name,isModelSpace:o.blockTableRecordId===t.modelSpaceBtrId,layers:[]})}for(const o of t.layouts)n.has(o.btrId)||(n.add(o.btrId),i.push(o));return i}function _r(t,e){return e&&t.activeLayoutBtrId||t.modelSpaceBtrId}function Rr(t,e,a,r,n,i){const o=[],s=[];for(const m of a.layers){if(i&&!i(m.name))continue;const h=mo(m.root);o.push(...h.lineBatches),s.push(...h.meshBatches)}const l=a.isModelSpace||a.btrId===e.modelSpaceBtrId,c=ol(t,a.btrId,l,n.canvasAspectRatio),d=rl(t,a.btrId,l),u=Hr({lineBatches:o,meshBatches:s,viewports:d})??void 0;let p;if(dl(n)){const m=performance.now();p=Vo(t,a.btrId,{includeLayer:i}),console.log(`[chtml] osnap catalog ${r.get(a.btrId)??a.name??a.btrId}: ${(performance.now()-m).toFixed(0)} ms (${(p==null?void 0:p.primitives.length)??0} primitives)`)}return{btrId:a.btrId,name:r.get(a.btrId)??a.name??ul(t,a.btrId),isModelSpace:l,lineBatches:o,meshBatches:s,osnap:p,viewports:d,...c?{savedView:c}:{},...u?{fitExtents:u}:{}}}function ul(t,e){var a;const r=(a=t.tables)==null?void 0:a.blockTable;if(r!=null&&r.newIterator){for(const n of r.newIterator())if(n.objectId===e)return n.name}return e}const ml=400,Ue=10,De=1,Or=64;function Dt(t){return Math.floor(t)*1024*1024}function $r(t){return Math.max(De,Math.round(t/(1024*1024)))}function jr(t){return Number.isFinite(t)?Math.min(Or,Math.max(De,Math.floor(t))):Ue}function G(t={}){var e;const a=t.exportFormat==="multi"?"multi":"single",r=a==="multi"?Dt(jr(t.maxChunkBytes!=null?$r(t.maxChunkBytes):Ue)):dr;return{exportFormat:a,exportInvisibleLayers:t.exportInvisibleLayers!==!1,exportLayouts:t.exportLayouts!==!1,background:Er(t.background),initialView:t.initialView??"fit",viewerMode:t.viewerMode??"measure",expiryDays:a==="multi"?"never":t.expiryDays??"never",expiresAt:a==="multi"?null:t.expiresAt??null,password:a==="multi"?"":((e=t.password)==null?void 0:e.trim())??"",maxChunkBytes:r,compressChunks:a==="multi"?t.compressChunks!==!1:!0}}function pl(t){const e=t.maxChunkBytes??Dt(Ue),a=t.compressChunks!==!1;return{maxChunkBytes:e,maxBatchBytes:e,maxOsnapChunkBytes:e,compressChunks:a}}function hl(t){const e=t.activeLayoutView,a=e.center,r=e.trCamera.zoom,n=Math.max(e.height,1),i=r*(2*ml)/n;return{centerX:a.x,centerY:a.y,zoom:i}}const fl="./viewer-runtime.iife.js";let At={};function gl(t){At={...At,...t}}function bl(){return{...At}}function wl(t){return t!=null?String(t):At.viewerRuntimeUrl!=null?String(At.viewerRuntimeUrl):fl}class xl{build(e,a,r={}){return sl(a,La(e),Ia(r))}async buildAsync(e,a,r={}){return ll(a,La(e),{...Ia(r),yieldBetweenLayouts:()=>j()})}}function Ia(t){return{title:t.title,background:t.background,locale:t.locale??x.currentLocale,exportInvisibleLayers:t.exportInvisibleLayers,exportLayouts:t.exportLayouts,initialView:t.initialView,viewState:t.viewState,viewerMode:t.viewerMode,canvasAspectRatio:t.canvasAspectRatio,docsBaseUrl:yl()}}function yl(){try{Js(Xn())}catch{}return Lr()}function La(t){const e=[...t.layers.values()].map(r=>({name:r.name,color:r.color.RGB??16777215,visible:!r.isOff&&!r.isFrozen})),a=[...t.layouts.entries()].map(([r,n])=>({btrId:r,isModelSpace:r===t.modelSpaceBtrId,layers:[...n.layers.values()].map(i=>({name:i.name,root:i.internalObject}))}));return{layers:e,layouts:a,activeLayoutBtrId:t.activeLayoutBtrId||t.modelSpaceBtrId,modelSpaceBtrId:t.modelSpaceBtrId}}function Q(t,e){console.log(`[chtml] ${t}: ${e.toFixed(0)} ms`)}class vl{constructor(e={}){this.options=e,this._snapshotBuilder=new xl}async prepareAcTrView2dForHtmlExport(e,a={}){if(!e||!("cadScene"in e)||!e.cadScene)throw new Error("CAD scene is not available. Open a drawing before exporting to HTML.");if(!(e instanceof jn))throw new Error("HTML export requires a 2D CAD view. Open a drawing before exporting.");const r=G(a),n={includeInvisibleLayers:r.exportInvisibleLayers,includeLayouts:r.exportLayouts};return await e.ensureEntitiesConvertedForExport(n),await j(),e}async exportToResult(e,a={},r){const n=W.instance,i=G(a),o=performance.now();let s;return await n.withBusyIndicator(async()=>{s=await this.buildExportResult(e,i,r),Q("chtml total",performance.now()-o)}),s}async convert(e,a={},r){const n=await this.exportToResult(e,a,r);this.downloadBytes(n.bytes,n.fileName,n.mediaType)}async buildExportResult(e,a,r){const n=W.instance;await j();const i=n.curDocument;let o=performance.now();const s=await this.prepareAcTrView2dForHtmlExport(r??n.curView,a);Q("prepare (missing entities)",performance.now()-o);const l=e||i.fileName||i.docTitle,c=Vn(l);o=performance.now();const d=await this._snapshotBuilder.buildAsync(s.cadScene,i.database,{title:c,background:s.backgroundColor,exportInvisibleLayers:a.exportInvisibleLayers,exportLayouts:a.exportLayouts,initialView:a.initialView,viewerMode:a.viewerMode,viewState:a.initialView==="current"&&(a.exportLayouts||s.activeLayoutBtrId===s.modelSpaceBtrId)?hl(s):void 0,canvasAspectRatio:s.width/Math.max(s.height,1)});Zs(d,s.backgroundColor,a.background),Q("snapshot build",performance.now()-o),await j(),o=performance.now();const u=await this.loadViewerRuntime();if(Q("load viewer runtime",performance.now()-o),await j(),a.exportFormat==="multi"){o=performance.now();const h=pl(a),f=await Hs(d,{viewerRuntime:u,...h});Q(h.compressChunks?"package + gzip chunks":"package chunks",performance.now()-o),o=performance.now();const g=Ys(f);return Q("zip package",performance.now()-o),await j(),{fileName:Ve(l,"zip"),bytes:g,mediaType:"application/zip"}}const p=fs(a.expiryDays,Date.now(),a.expiresAt);o=performance.now();const m=await this.packSelfContainedHtml(d,u,{expiresAt:p,password:a.password||void 0});return Q("pack self-contained html",performance.now()-o),await j(),{fileName:Ve(l,"html"),bytes:new TextEncoder().encode(m),mediaType:"text/html;charset=utf-8"}}async packSnapshot(e,a){await W.instance.withBusyIndicator(async()=>{await j();const r=await this.loadViewerRuntime();await j();const n=await this.packSelfContainedHtml(e,r,{expiresAt:null});await j(),this.downloadHtml(n,a)})}async packSelfContainedHtml(e,a,r){if(_s(e))return Rs(e,{title:e.meta.title,viewerRuntime:a,expiresAt:r.expiresAt,password:r.password});const n=await ws(Za(e),{expiresAt:r.expiresAt,password:r.password});return cs(e,{title:e.meta.title,viewerRuntime:a,encoded:n.encoded,accessManifest:n.manifest})}async loadViewerRuntime(){const e=wl(this.options.viewerRuntimeUrl),a=await fetch(e);if(!a.ok)throw new Error(`Failed to load HTML viewer runtime from "${e}" (${a.status}). Install @mlightcad/cad-html-plugin, copy viewer-runtime.iife.js to your app assets, and set viewerRuntimeUrl on registerLazyHtmlPlugin / createHtmlPlugin / AcApHtmlConvertor.`);return a.text()}downloadHtml(e,a){this.downloadBytes(new TextEncoder().encode(e),a,"text/html;charset=utf-8")}downloadBytes(e,a,r){const n=new Uint8Array(e.byteLength);n.set(e);const i=new Blob([n],{type:r}),o=URL.createObjectURL(i),s=document.createElement("a");s.href=o,s.download=a,document.body.appendChild(s),s.click(),document.body.removeChild(s),window.setTimeout(()=>URL.revokeObjectURL(o),6e4)}}class kl extends On{constructor(e={}){super(),this.pluginOptions=e}async execute(e){const a=await this.promptOptions();a&&await new vl(this.pluginOptions).convert(e.doc.fileName||e.doc.docTitle,a,e.view)}async promptOptions(){const e=G(),a=await this.promptExportFormat();if(a===void 0)return;const r=await this.promptYesNo("jig.chtml.exportInvisibleLayers",e.exportInvisibleLayers);if(r===void 0)return;const n=await this.promptYesNo("jig.chtml.exportLayouts",e.exportLayouts);if(n===void 0)return;const i=await this.promptBackground();if(i===void 0)return;const o=await this.promptInitialView();if(o===void 0)return;const s=await this.promptViewerMode();if(s===void 0)return;let l,c;if(!(a==="multi"&&(l=await this.promptChunkSizeMiB(),l===void 0||(c=await this.promptYesNo("jig.chtml.compressChunks",e.compressChunks),c===void 0))))return G({exportFormat:a,exportInvisibleLayers:r,exportLayouts:n,background:i,initialView:o,viewerMode:s,...a==="multi"?{maxChunkBytes:l,compressChunks:c}:{}})}async promptExportFormat(){const e=G(),a=new pt(x.t("jig.chtml.exportFormat"));a.allowNone=!0;const r=a.keywords.add(x.t("jig.chtml.keywords.single.display"),x.t("jig.chtml.keywords.single.global"),x.t("jig.chtml.keywords.single.local")),n=a.keywords.add(x.t("jig.chtml.keywords.multi.display"),x.t("jig.chtml.keywords.multi.global"),x.t("jig.chtml.keywords.multi.local"));a.keywords.default=e.exportFormat==="multi"?n:r;const i=await W.instance.editor.getKeywords(a);if(i.status!==B.Cancel){if(i.status===B.None)return e.exportFormat;if(i.status===B.OK||i.status===B.Keyword)return i.stringResult?i.stringResult==="Multi"?"multi":"single":e.exportFormat}}async promptYesNo(e,a){const r=new pt(x.t(e));r.allowNone=!0;const n=r.keywords.add(x.t("jig.chtml.keywords.yes.display"),x.t("jig.chtml.keywords.yes.global"),x.t("jig.chtml.keywords.yes.local")),i=r.keywords.add(x.t("jig.chtml.keywords.no.display"),x.t("jig.chtml.keywords.no.global"),x.t("jig.chtml.keywords.no.local"));r.keywords.default=a?n:i;const o=await W.instance.editor.getKeywords(r);if(o.status!==B.Cancel){if(o.status===B.None)return a;if(o.status===B.OK||o.status===B.Keyword)return o.stringResult?o.stringResult==="Yes":a}}async promptChunkSizeMiB(){const e=G({exportFormat:"multi"}),a=$r(e.maxChunkBytes),r=new $n(x.t("jig.chtml.chunkSizeMiB"),De,Or);r.allowNone=!0,r.allowZero=!1,r.allowNegative=!1,r.useDefaultValue=!0,r.defaultValue=a;const n=await W.instance.editor.getInteger(r);if(n.status!==B.Cancel){if(n.status===B.None)return Dt(a);if(n.status===B.OK){const i=jr(n.value??a);return Dt(i)}}}async promptBackground(){const e=G(),a=new pt(x.t("jig.chtml.background"));a.allowNone=!0;const r=a.keywords.add(x.t("jig.chtml.keywords.black.display"),x.t("jig.chtml.keywords.black.global"),x.t("jig.chtml.keywords.black.local")),n=a.keywords.add(x.t("jig.chtml.keywords.white.display"),x.t("jig.chtml.keywords.white.global"),x.t("jig.chtml.keywords.white.local")),i=a.keywords.add(x.t("jig.chtml.keywords.space.display"),x.t("jig.chtml.keywords.space.global"),x.t("jig.chtml.keywords.space.local"));a.keywords.default=e.background==="white"?n:e.background==="space"?i:r;const o=await W.instance.editor.getKeywords(a);if(o.status!==B.Cancel){if(o.status===B.None)return e.background;if(o.status===B.OK||o.status===B.Keyword)return o.stringResult?o.stringResult==="White"?"white":o.stringResult==="Space"?"space":"black":e.background}}async promptInitialView(){const e=G(),a=new pt(x.t("jig.chtml.initialView"));a.allowNone=!0;const r=a.keywords.add(x.t("jig.chtml.keywords.extents.display"),x.t("jig.chtml.keywords.extents.global"),x.t("jig.chtml.keywords.extents.local")),n=a.keywords.add(x.t("jig.chtml.keywords.current.display"),x.t("jig.chtml.keywords.current.global"),x.t("jig.chtml.keywords.current.local"));a.keywords.default=e.initialView==="current"?n:r;const i=await W.instance.editor.getKeywords(a);if(i.status!==B.Cancel){if(i.status===B.None)return e.initialView;if(i.status===B.OK||i.status===B.Keyword)return i.stringResult?i.stringResult==="Current"?"current":"fit":e.initialView}}async promptViewerMode(){const e=G(),a=new pt(x.t("jig.chtml.viewerMode"));a.allowNone=!0;const r=a.keywords.add(x.t("jig.chtml.keywords.view.display"),x.t("jig.chtml.keywords.view.global"),x.t("jig.chtml.keywords.view.local")),n=a.keywords.add(x.t("jig.chtml.keywords.measure.display"),x.t("jig.chtml.keywords.measure.global"),x.t("jig.chtml.keywords.measure.local"));a.keywords.default=e.viewerMode==="view"?r:n;const i=await W.instance.editor.getKeywords(a);if(i.status!==B.Cancel){if(i.status===B.None)return e.viewerMode;if(i.status===B.OK||i.status===B.Keyword)return i.stringResult?i.stringResult==="View"?"view":"measure":e.viewerMode}}}const Al="1.8.0-preview.0",Ml={version:Al};class Cl{constructor(e={}){this.options=e,this.name="HtmlPlugin",this.version=Ml.version,this.description="HTML export (-chtml) command",this.registeredCommands=[]}onLoad(e,a){const r=Rn.SYSTEMT_COMMAND_GROUP_NAME,n=new kl(this.options);a.addCommand(r,"-chtml","-chtml",n),this.registeredCommands.push({group:r,name:"-chtml"}),a.lookupGlobalCmd("chtml")||(a.addCommand(r,"chtml","chtml",n),this.registeredCommands.push({group:r,name:"chtml"}))}onUnload(e,a){for(const r of this.registeredCommands)a.removeCmd(r.group,r.name);this.registeredCommands=[]}}async function El(t={}){return t.viewerRuntimeUrl!=null&&gl(t),new Cl(bl())}export{Go as ACEC_CHUNK_MAGIC,gi as ACEO_OSNAP_MAGIC,bi as ACEO_OSNAP_VERSION,os as ACEX_COORDINATE_BADGE_LIFT_EM,dr as ACEX_DEFAULT_CHUNK_MAX_BYTES,Ue as ACEX_DEFAULT_CHUNK_SIZE_MIB,Fr as ACEX_DEFAULT_DOCS_BASE_URL,Ot as ACEX_DEFAULT_MANIFEST_FILE,qo as ACEX_DEFAULT_MANIFEST_HREF,Ts as ACEX_EMBEDDED_CHUNK_ENCRYPTED_MIME,Mr as ACEX_EMBEDDED_CHUNK_HREF_ATTR,ka as ACEX_EMBEDDED_CHUNK_MAX_BYTES,Ds as ACEX_EMBEDDED_CHUNK_MIME,Zo as ACEX_EMBEDDED_CHUNK_THRESHOLD_BYTES,Jo as ACEX_EMBEDDED_OSNAP_CHUNK_MAX_BYTES,$t as ACEX_HTML_BACKGROUND_BLACK,Pe as ACEX_HTML_BACKGROUND_WHITE,Yo as ACEX_HTML_LOCALES,Se as ACEX_HTML_SHELL_CSS,Or as ACEX_MAX_CHUNK_SIZE_MIB,Rt as ACEX_MAX_GEOMETRY_BATCH_BYTES,De as ACEX_MIN_CHUNK_SIZE_MIB,Ko as ACEX_PACKAGE_VERSION,as as ACEX_POLAR_ANGLE_INCREMENTS,Xa as ACEX_SNAPSHOT_COMPRESSION,X as ACEX_SNAPSHOT_VERSION,kl as AcApExportHtmlCmd,vl as AcApHtmlConvertor,xl as AcApHtmlSnapshotBuilder,ge as AcExHtmlBinaryWriter,de as AcExHtmlIcons,fl as DEFAULT_HTML_VIEWER_RUNTIME_URL,Qe as F_LINE_DISTANCES,hi as F_LINE_EXCLUDE_OSNAP,Je as F_LINE_INDICES,qe as F_LINE_PATTERN,ea as F_LINE_RENDER_ORDER,ta as F_LINE_WIDTH,na as F_MESH_GRADIENT_FILL,ia as F_MESH_GRADIENT_POS,ra as F_MESH_HATCH,aa as F_MESH_INDICES,fi as F_MESH_POINTS,sa as F_MESH_RENDER_ORDER,oa as F_MESH_SIDE,la as F_MESH_TEXTURE,Il as HTML_PLUGIN_NAME,Ll as HTML_PLUGIN_TRIGGERS,is as ML_UI_COMPACT_MAX_WIDTH,ns as ML_UI_MOBILE_MAX_WIDTH,$r as acexChunkSizeBytesToMiB,Dt as acexChunkSizeMiBToBytes,Zs as acexHtmlApplyBackground,Gs as acexHtmlBackgroundRgb,ye as acexHtmlBakePlainDrawableSlice,di as acexHtmlBase85ToBytes,Ut as acexHtmlBuildAccessManifest,Vo as acexHtmlBuildOsnapCatalog,Hs as acexHtmlBuildPackageAsync,Ar as acexHtmlBuildPackageDataAsync,rs as acexHtmlBuildPolarAnglesPanel,Fe as acexHtmlBuildShellBody,sl as acexHtmlBuildSnapshotFromExportScene,ll as acexHtmlBuildSnapshotFromExportSceneAsync,ar as acexHtmlBuildViewerMetadata,bs as acexHtmlBytesToBase64,ci as acexHtmlBytesToBase85,Nt as acexHtmlBytesToText,ol as acexHtmlCaptureSavedViewExtents,mo as acexHtmlCollectBatchesFromObject3D,rl as acexHtmlCollectLayoutViewports,Ja as acexHtmlCompactIndexedSlice,ae as acexHtmlCompressSnapshotBinary,Ya as acexHtmlCompressSnapshotBinaryAsync,el as acexHtmlComputeLayoutExtents,Hr as acexHtmlComputeLayoutViewExtents,Ae as acexHtmlComputeLineDistancesForSegments,al as acexHtmlComputeViewportPaperExtents,et as acexHtmlCopyFloat32Range,Ui as acexHtmlCopyUint32Range,fr as acexHtmlCreateAccessKey,qs as acexHtmlCreateEmptyExtents,cr as acexHtmlEncodeChunkBinary,xe as acexHtmlEncodeOsnapCatalogBinary,Za as acexHtmlEncodeSnapshot,Fi as acexHtmlEncodeSnapshotBinary,Ni as acexHtmlEncodeTextureForExport,Le as acexHtmlEncryptBytes,gs as acexHtmlEncryptSnapshotPayload,be as acexHtmlEstimateLineBatchBytes,we as acexHtmlEstimateMeshBatchBytes,Ka as acexHtmlEstimateOsnapPrimitiveBytes,Ns as acexHtmlEstimateSnapshotGeometryBytes,Ba as acexHtmlExpandExtentsFromBatch,Qs as acexHtmlExpandExtentsFromPositions,Zi as acexHtmlExportActiveBatchedLine2Slice,Me as acexHtmlExportActiveBatchedSlice,It as acexHtmlExportBufferGeometrySlice,Ti as acexHtmlExportPlainDrawableSlice,ji as acexHtmlExportUvsForPositionSlice,Wi as acexHtmlExportVertexAttributeSlice,Yi as acexHtmlExtractGradientFill,Xi as acexHtmlExtractHatchPattern,Vi as acexHtmlExtractLinePattern,Lr as acexHtmlGetDocsBaseUrl,qa as acexHtmlIsTransparentImagePlaceholder,Ma as acexHtmlLayoutBackground,Ur as acexHtmlListDatabaseLayouts,hr as acexHtmlNeedsAccessControl,zr as acexHtmlNormalizeDocsBaseUrl,ct as acexHtmlOmitNonFinitePrimitives,cs as acexHtmlPackHtml,Rs as acexHtmlPackHtmlEmbeddedPackage,ds as acexHtmlPackHtmlPackage,ws as acexHtmlProtectEncodedSnapshot,Di as acexHtmlReadBatchWorldOffset,Ki as acexHtmlRebaseHatchPatternToLocalOffset,ve as acexHtmlRebasePlainDrawableSliceAroundCentroid,Ks as acexHtmlRemapSnapshotForegroundForBackground,Er as acexHtmlResolveBackground,fs as acexHtmlResolveExpiresAt,Be as acexHtmlResolveLocale,Js as acexHtmlSetDocsBaseUrl,_s as acexHtmlShouldEmbedChunks,Hi as acexHtmlSnapshotMimeType,Is as acexHtmlSplitLayoutIntoSlices,vs as acexHtmlSplitLineBatch,ks as acexHtmlSplitMeshBatch,Ci as acexHtmlSplitOsnapPrimitives,li as acexHtmlTextToBytes,tl as acexHtmlToExtents,ca as acexHtmlToWcsCoord,ua as acexHtmlTransformHatchPatternToWorldSpace,Pr as acexHtmlUnionExtents,wa as acexHtmlWcsPointToOcsArcAngle,Ga as acexHtmlWriteLineBatch,Wa as acexHtmlWriteMeshBatch,Ys as acexHtmlZipPackageFiles,hl as captureAcApHtmlViewState,jr as clampAcApHtmlChunkSizeMiB,gl as configureHtmlPlugin,El as createHtmlPlugin,bl as getHtmlPluginOptions,G as resolveAcApHtmlExportOptions,pl as resolveAcApHtmlPackageBuildOptions,wl as resolveViewerRuntimeUrl};