@mlightcad/cad-simple-viewer-cli 1.8.0-preview.0 → 1.8.0-preview.1
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/dist-runner/assets/{cad-html-plugin-xBZOCVKb.js → cad-html-plugin-Bq1qj-zC.js} +6 -6
- package/dist-runner/assets/{cad-pdf-plugin-B2X4e6-g.js → cad-pdf-plugin-rlqDWDwB.js} +70 -70
- package/dist-runner/assets/{cad-svg-plugin-vag8yWJA.js → cad-svg-plugin-YgVIE0ak.js} +2 -2
- package/dist-runner/assets/{index-BKIO0gN3.js → index-cDLTeF5c.js} +294 -294
- package/dist-runner/index.html +1 -1
- package/dist-runner/viewer-runtime.iife.js +96 -96
- package/package.json +7 -7
|
@@ -1,4 +1,4 @@
|
|
|
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)&<.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>
|
|
1
|
+
import{C as Xr,D as Gt,V as Yr,N as Gr,E as Oe,F as Wr,H as $e,S as Kr,I as Zr,J as Jr,K as ut,g as qr,L as Qr,O as za,P as tn,Q as en,R as an,W as Pa,Y as rn,Z as nn,_ 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,o as Un,ax as Dn,ay as Nn,az as Tn,aA as _n,U as Rn,G as On,aB as pt,d as x,v as W,aC as B,aD as $n,aE as jn,a as j,aF as Vn,j as Ve,aG as Xn}from"./index-cDLTeF5c.js";import{aH as Il,aI as Ll}from"./index-cDLTeF5c.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),Na=function(t){return(t+7)/8|0},Ta=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"],Nt=function(t,e,a){var r=new Error(e||Zn[t]);if(r.code=t,Error.captureStackTrace&&Error.captureStackTrace(r,Nt),!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=Na(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,N=ft(n,tt)+ft(i,St)+o,T=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<=N&&nt<=T)return _a(e,d,t.subarray(l,l+c));var R,L,_,K;if(Y(e,d,1+(T<N)),d+=2,T<N){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),N=k&32767,T=g[nt];if(f[N]=T,g[nt]=N,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=N-T&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&&N!=T;){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),Ne=0,L=0;L<ot;++L){var Vt=k-O+L&32767,Vr=f[Vt],Te=Vt-Vr&32767;Te>Ne&&(Ne=Te,T=Vt)}}}N=T,T=f[N],O+=N-T&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 Ta(s,0,r+Na(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 Ta(n,0,i)}var ee=function(t){var e=0;if(t)for(var a in t){var r=t[a].length;r>65535&&Nt(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)&&Nt(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&&Nt(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 Tt(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:Tt(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 Ni(t,e,a={}){t.updateMatrixWorld(!0);const r=ye(e,t.matrixWorld);return ve(r)}function Ti(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=Ni(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=Ti(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)&<.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 Nn?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 Tn&&(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 No(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 To(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}No(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){To(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
3
|
</div>`}const ns=600,is=960,os=1.231,Se=`
|
|
4
4
|
:root {
|
|
@@ -1543,8 +1543,8 @@ ${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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}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:
|
|
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",
|
|
1546
|
+
</html>`}function ur(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}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:Tt(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",Ns="application/vnd.mlightcad.acex-chunk+aes-gcm;base85",Mr="data-acex-href";function Ts(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 Ts(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
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}">
|
|
@@ -1560,6 +1560,6 @@ ${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 Os(t){const e=[];for(const a of t)a.path!==Ot&&e.push(` <script type="${Ds}" ${Mr}="${Br(a.path)}">${
|
|
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="${
|
|
1565
|
-
`)}return a.join("")}function Cr(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Br(t){return Cr(t).replace(/'/g,"'")}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};
|
|
1563
|
+
</html>`}function Os(t){const e=[];for(const a of t)a.path!==Ot&&e.push(` <script type="${Ds}" ${Mr}="${Br(a.path)}">${Tt(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="${Ns}" ${Mr}="${Br(r.path)}">${Tt(n,"base85")}<\/script>
|
|
1565
|
+
`)}return a.join("")}function Cr(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Br(t){return Cr(t).replace(/'/g,"'")}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=Tr(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:Nr(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=Tr(e,l,n),p=[];for(const m of u)p.push(Rr(t,e,m,c,a,i));return{version:X,meta:Nr(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 Nr(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 Tr(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);for(const f of h.lineBatches)f.layer=m.name;for(const f of h.meshBatches)f.layer=m.name;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.1",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,Ns 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,Tt 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,Ti as acexHtmlEncodeTextureForExport,Le as acexHtmlEncryptBytes,gs as acexHtmlEncryptSnapshotPayload,be as acexHtmlEstimateLineBatchBytes,we as acexHtmlEstimateMeshBatchBytes,Ka as acexHtmlEstimateOsnapPrimitiveBytes,Ts as acexHtmlEstimateSnapshotGeometryBytes,Ba as acexHtmlExpandExtentsFromBatch,Qs as acexHtmlExpandExtentsFromPositions,Zi as acexHtmlExportActiveBatchedLine2Slice,Me as acexHtmlExportActiveBatchedSlice,It as acexHtmlExportBufferGeometrySlice,Ni 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};
|