@omrips/viewstl 0.0.0-stage → 2.0.0-rc.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/LICENSE +21 -0
- package/README.md +162 -2
- package/THIRD-PARTY-NOTICES.txt +1129 -0
- package/build/v2/README.md +11 -0
- package/build/v2/THIRD-PARTY-NOTICES.txt +1129 -0
- package/build/v2/cad/occt-import-js.js +8 -0
- package/build/v2/cad/occt-import-js.source.txt +57 -0
- package/build/v2/cad/occt-import-js.wasm +0 -0
- package/build/v2/cad/prepare-cad.source.txt +112 -0
- package/build/v2/chunks/archive-VGS4J4Z7.js +1 -0
- package/build/v2/chunks/cad-VY42CMP4.js +1 -0
- package/build/v2/chunks/chunk-JH3H3JWA.js +1 -0
- package/build/v2/chunks/chunk-JS56KC3I.js +1 -0
- package/build/v2/chunks/chunk-R3HNTB5A.js +38 -0
- package/build/v2/chunks/chunk-U33KANV7.js +1 -0
- package/build/v2/chunks/chunk-ZMK3UZZE.js +1 -0
- package/build/v2/chunks/chunk-ZSV4PTIA.js +1 -0
- package/build/v2/chunks/export-7OP4ZGGJ.js +29 -0
- package/build/v2/chunks/export-cad-QPBT756V.js +13 -0
- package/build/v2/chunks/export-zip-EDCWH5PX.js +1 -0
- package/build/v2/chunks/print-check-2PU7CSL3.js +1 -0
- package/build/v2/chunks/scene-export-KQBS7VRJ.js +1 -0
- package/build/v2/chunks/scene-reader-APUJOPUR.js +1 -0
- package/build/v2/stl_viewer.min.js +51 -0
- package/build/v2/viewstl.cjs +5445 -0
- package/build/v2/viewstl.d.cts +446 -0
- package/build/v2/viewstl.d.ts +446 -0
- package/build/v2/viewstl.js +5426 -0
- package/build/v2/viewstl.min.js +51 -0
- package/build/v2/viewstl.worker.js +1 -0
- package/docs/v2-compatibility.md +204 -0
- package/docs/v2-usage.md +723 -0
- package/docs/v2-verification.md +423 -0
- package/legacy/README.md +43 -0
- package/package.json +73 -4
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import{a as Mt,d as It}from"./chunk-ZSV4PTIA.js";import{a as Y,b as Rt,c as vt}from"./chunk-JH3H3JWA.js";import{a as G}from"./chunk-JS56KC3I.js";import{a as K,b as me,f as wt,g as bt,h as St}from"./chunk-U33KANV7.js";var yt=K(f=>{"use strict";Object.defineProperty(f,"__esModule",{value:!0});f.CHAR=`
|
|
2
|
+
\r -\uD7FF\uE000-\uFFFD\u{10000}-\u{10FFFF}`;f.S=` \r
|
|
3
|
+
`;f.NAME_START_CHAR=":A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}";f.NAME_CHAR="-"+f.NAME_START_CHAR+".0-9\xB7\u0300-\u036F\u203F-\u2040";f.CHAR_RE=new RegExp("^["+f.CHAR+"]$","u");f.S_RE=new RegExp("^["+f.S+"]+$","u");f.NAME_START_CHAR_RE=new RegExp("^["+f.NAME_START_CHAR+"]$","u");f.NAME_CHAR_RE=new RegExp("^["+f.NAME_CHAR+"]$","u");f.NAME_RE=new RegExp("^["+f.NAME_START_CHAR+"]["+f.NAME_CHAR+"]*$","u");f.NMTOKEN_RE=new RegExp("^["+f.NAME_CHAR+"]+$","u");var at=9,ot=10,ht=13,lt=32;f.S_LIST=[lt,ot,ht,at];function pe(e){return e>=lt&&e<=55295||e===ot||e===ht||e===at||e>=57344&&e<=65533||e>=65536&&e<=1114111}f.isChar=pe;function ge(e){return e===lt||e===ot||e===ht||e===at}f.isS=ge;function Lt(e){return e>=65&&e<=90||e>=97&&e<=122||e===58||e===95||e===8204||e===8205||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}f.isNameStartChar=Lt;function Ee(e){return Lt(e)||e>=48&&e<=57||e===45||e===46||e===183||e>=768&&e<=879||e>=8255&&e<=8256}f.isNameChar=Ee});var $t=K(c=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});c.CHAR="-\uD7FF\uE000-\uFFFD\u{10000}-\u{10FFFF}";c.RESTRICTED_CHAR="-\b\v\f-\x7F-\x84\x86-\x9F";c.S=` \r
|
|
4
|
+
`;c.NAME_START_CHAR=":A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}";c.NAME_CHAR="-"+c.NAME_START_CHAR+".0-9\xB7\u0300-\u036F\u203F-\u2040";c.CHAR_RE=new RegExp("^["+c.CHAR+"]$","u");c.RESTRICTED_CHAR_RE=new RegExp("^["+c.RESTRICTED_CHAR+"]$","u");c.S_RE=new RegExp("^["+c.S+"]+$","u");c.NAME_START_CHAR_RE=new RegExp("^["+c.NAME_START_CHAR+"]$","u");c.NAME_CHAR_RE=new RegExp("^["+c.NAME_CHAR+"]$","u");c.NAME_RE=new RegExp("^["+c.NAME_START_CHAR+"]["+c.NAME_CHAR+"]*$","u");c.NMTOKEN_RE=new RegExp("^["+c.NAME_CHAR+"]+$","u");var Pt=9,kt=10,Ot=13,Ht=32;c.S_LIST=[Ht,kt,Ot,Pt];function Ce(e){return e>=1&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}c.isChar=Ce;function _e(e){return e>=1&&e<=8||e===11||e===12||e>=14&&e<=31||e>=127&&e<=132||e>=134&&e<=159}c.isRestrictedChar=_e;function Fe(e){return e===9||e===10||e===13||e>31&&e<127||e===133||e>159&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}c.isCharAndNotRestricted=Fe;function De(e){return e===Ht||e===kt||e===Ot||e===Pt}c.isS=De;function Bt(e){return e>=65&&e<=90||e>=97&&e<=122||e===58||e===95||e===8204||e===8205||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}c.isNameStartChar=Bt;function Ae(e){return Bt(e)||e>=48&&e<=57||e===45||e===46||e===183||e>=768&&e<=879||e>=8255&&e<=8256}c.isNameChar=Ae});var Xt=K(F=>{"use strict";Object.defineProperty(F,"__esModule",{value:!0});F.NC_NAME_START_CHAR="A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}";F.NC_NAME_CHAR="-"+F.NC_NAME_START_CHAR+".0-9\xB7\u0300-\u036F\u203F-\u2040";F.NC_NAME_START_CHAR_RE=new RegExp("^["+F.NC_NAME_START_CHAR+"]$","u");F.NC_NAME_CHAR_RE=new RegExp("^["+F.NC_NAME_CHAR+"]$","u");F.NC_NAME_RE=new RegExp("^["+F.NC_NAME_START_CHAR+"]["+F.NC_NAME_CHAR+"]*$","u");function Ut(e){return e>=65&&e<=90||e===95||e>=97&&e<=122||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}F.isNCNameStartChar=Ut;function Te(e){return Ut(e)||e===45||e===46||e>=48&&e<=57||e===183||e>=768&&e<=879||e>=8255&&e<=8256}F.isNCNameChar=Te});var he=K(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.SaxesParser=V.EVENTS=void 0;var q=yt(),Ne=$t(),At=Xt(),D=q.isS,we=q.isChar,z=q.isNameStartChar,Wt=q.isNameChar,ie=q.S_LIST,be=q.NAME_RE,Se=Ne.isChar,Re=At.isNCNameStartChar,ve=At.isNCNameChar,Me=At.NC_NAME_RE,rt="http://www.w3.org/XML/1998/namespace",j="http://www.w3.org/2000/xmlns/",Ie={__proto__:null,xml:rt,xmlns:j},Le={__proto__:null,amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},x=-1,R=-2,jt=0,ye=1,ct=2,Pe=3,U=4,ke=5,Oe=6,He=7,ut=8,Be=9,$e=10,Ue=11,Xe=12,_=13,J=14,dt=15,We=16,ft=17,je=18,Ve=19,xt=20,qe=21,Ge=22,ze=23,Vt=24,mt=25,tt=26,qt=27,Qe=28,Ze=29,Gt=30,Ke=31,Ye=32,B=33,Je=34,pt=35,Q=36,gt=37,ts=38,zt=39,Qt=40,es=41,Zt=42,ss=43,is=44,Et=9,N=10,Ct=13,Kt=32,Yt=33,re=34,Z=38,ne=39,et=45,st=47,rs=59,k=60,X=61,p=62,E=63,ae=91,W=93,Jt=133,te=8232,it=e=>e===re||e===ne,oe=[re,ne],ns=[...oe,ae,p],as=[...oe,k,W],os=[X,E,...ie],hs=[...ie,p,Z,k];function Ft(e,t,s){switch(t){case"xml":s!==rt&&e.fail(`xml prefix must be bound to ${rt}.`);break;case"xmlns":s!==j&&e.fail(`xmlns prefix must be bound to ${j}.`);break;default:}switch(s){case j:e.fail(t===""?`the default namespace may not be set to ${s}.`:`may not assign a prefix (even "xmlns") to the URI ${j}.`);break;case rt:switch(t){case"xml":break;case"":e.fail(`the default namespace may not be set to ${s}.`);break;default:e.fail("may not assign the xml namespace to another prefix.")}break;default:}}function ls(e,t){for(let s of Object.keys(t))Ft(e,s,t[s])}var cs=e=>Me.test(e),us=e=>be.test(e),$=0,ee=1,_t=2;V.EVENTS=["xmldecl","text","processinginstruction","doctype","comment","opentagstart","attribute","opentag","closetag","cdata","error","end","ready"];var se={xmldecl:"xmldeclHandler",text:"textHandler",processinginstruction:"piHandler",doctype:"doctypeHandler",comment:"commentHandler",opentagstart:"openTagStartHandler",attribute:"attributeHandler",opentag:"openTagHandler",closetag:"closeTagHandler",cdata:"cdataHandler",error:"errorHandler",end:"endHandler",ready:"readyHandler"},Dt=class{constructor(t){this.opt=t??{},this.fragmentOpt=!!this.opt.fragment;let s=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=this.opt.position!==!1,this.fileName=this.opt.fileName,s){this.nameStartCheck=Re,this.nameCheck=ve,this.isName=cs,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},Ie);let i=this.opt.additionalNamespaces;i!=null&&(ls(this,i),Object.assign(this.ns,i))}else this.nameStartCheck=z,this.nameCheck=Wt,this.isName=us,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}get closed(){return this._closed}_init(){var t;this.openWakaBang="",this.text="",this.name="",this.piTarget="",this.entity="",this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk="",this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=$,this.attribList=[];let{fragmentOpt:s}=this;this.state=s?_:jt,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=s,this.xmlDeclPossible=!s,this.xmlDeclExpects=["version"],this.entityReturnState=void 0;let{defaultXMLVersion:i}=this.opt;if(i===void 0){if(this.opt.forceXMLVersion===!0)throw new Error("forceXMLVersion set but defaultXMLVersion is not set");i="1.0"}this.setXMLVersion(i),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(Le),(t=this.readyHandler)===null||t===void 0||t.call(this)}get position(){return this.chunkPosition+this.i}get columnIndex(){return this.position-this.positionAtNewLine}on(t,s){this[se[t]]=s}off(t){this[se[t]]=void 0}makeError(t){var s;let i=(s=this.fileName)!==null&&s!==void 0?s:"";return this.trackPosition&&(i.length>0&&(i+=":"),i+=`${this.line}:${this.column}`),i.length>0&&(i+=": "),new Error(i+t)}fail(t){let s=this.makeError(t),i=this.errorHandler;if(i===void 0)throw s;return i(s),this}write(t){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");let s=!1;t===null?(s=!0,t=""):typeof t=="object"&&(t=t.toString()),this.carriedFromPrevious!==void 0&&(t=`${this.carriedFromPrevious}${t}`,this.carriedFromPrevious=void 0);let i=t.length,r=t.charCodeAt(i-1);!s&&(r===Ct||r>=55296&&r<=56319)&&(this.carriedFromPrevious=t[i-1],i--,t=t.slice(0,i));let{stateTable:n}=this;for(this.chunk=t,this.i=0;this.i<i;)n[this.state].call(this);return this.chunkPosition+=i,s?this.end():this}close(){return this.write(null)}getCode10(){let{chunk:t,i:s}=this;if(this.prevI=s,this.i=s+1,s>=t.length)return x;let i=t.charCodeAt(s);if(this.column++,i<55296){if(i>=Kt||i===Et)return i;switch(i){case N:return this.line++,this.column=0,this.positionAtNewLine=this.position,N;case Ct:return t.charCodeAt(s+1)===N&&(this.i=s+2),this.line++,this.column=0,this.positionAtNewLine=this.position,R;default:return this.fail("disallowed character."),i}}if(i>56319)return i>=57344&&i<=65533||this.fail("disallowed character."),i;let r=65536+(i-55296)*1024+(t.charCodeAt(s+1)-56320);return this.i=s+2,r>1114111&&this.fail("disallowed character."),r}getCode11(){let{chunk:t,i:s}=this;if(this.prevI=s,this.i=s+1,s>=t.length)return x;let i=t.charCodeAt(s);if(this.column++,i<55296){if(i>31&&i<127||i>159&&i!==te||i===Et)return i;switch(i){case N:return this.line++,this.column=0,this.positionAtNewLine=this.position,N;case Ct:{let n=t.charCodeAt(s+1);(n===N||n===Jt)&&(this.i=s+2)}case Jt:case te:return this.line++,this.column=0,this.positionAtNewLine=this.position,R;default:return this.fail("disallowed character."),i}}if(i>56319)return i>=57344&&i<=65533||this.fail("disallowed character."),i;let r=65536+(i-55296)*1024+(t.charCodeAt(s+1)-56320);return this.i=s+2,r>1114111&&this.fail("disallowed character."),r}getCodeNorm(){let t=this.getCode();return t===R?N:t}unget(){this.i=this.prevI,this.column--}captureTo(t){let{i:s}=this,{chunk:i}=this;for(;;){let r=this.getCode(),n=r===R,o=n?N:r;if(o===x||t.includes(o))return this.text+=i.slice(s,this.prevI),o;n&&(this.text+=`${i.slice(s,this.prevI)}
|
|
5
|
+
`,s=this.i)}}captureToChar(t){let{i:s}=this,{chunk:i}=this;for(;;){let r=this.getCode();switch(r){case R:this.text+=`${i.slice(s,this.prevI)}
|
|
6
|
+
`,s=this.i,r=N;break;case x:return this.text+=i.slice(s),!1;default:}if(r===t)return this.text+=i.slice(s,this.prevI),!0}}captureNameChars(){let{chunk:t,i:s}=this;for(;;){let i=this.getCode();if(i===x)return this.name+=t.slice(s),x;if(!Wt(i))return this.name+=t.slice(s,this.prevI),i===R?N:i}}skipSpaces(){for(;;){let t=this.getCodeNorm();if(t===x||!D(t))return t}}setXMLVersion(t){this.currentXMLVersion=t,t==="1.0"?(this.isChar=we,this.getCode=this.getCode10):(this.isChar=Se,this.getCode=this.getCode11)}sBegin(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=ye}sBeginWhitespace(){let t=this.i,s=this.skipSpaces();switch(this.prevI!==t&&(this.xmlDeclPossible=!1),s){case k:if(this.state=dt,this.text.length!==0)throw new Error("no-empty text at start");break;case x:break;default:this.unget(),this.state=_,this.xmlDeclPossible=!1}}sDoctype(){var t;let s=this.captureTo(ns);switch(s){case p:{(t=this.doctypeHandler)===null||t===void 0||t.call(this,this.text),this.text="",this.state=_,this.doctype=!0;break}case x:break;default:this.text+=String.fromCodePoint(s),s===ae?this.state=U:it(s)&&(this.state=Pe,this.q=s)}}sDoctypeQuote(){let t=this.q;this.captureToChar(t)&&(this.text+=String.fromCodePoint(t),this.q=null,this.state=ct)}sDTD(){let t=this.captureTo(as);t!==x&&(this.text+=String.fromCodePoint(t),t===W?this.state=ct:t===k?this.state=Oe:it(t)&&(this.state=ke,this.q=t))}sDTDQuoted(){let t=this.q;this.captureToChar(t)&&(this.text+=String.fromCodePoint(t),this.state=U,this.q=null)}sDTDOpenWaka(){let t=this.getCodeNorm();switch(this.text+=String.fromCodePoint(t),t){case Yt:this.state=He,this.openWakaBang="";break;case E:this.state=Ue;break;default:this.state=U}}sDTDOpenWakaBang(){let t=String.fromCodePoint(this.getCodeNorm()),s=this.openWakaBang+=t;this.text+=t,s!=="-"&&(this.state=s==="--"?ut:U,this.openWakaBang="")}sDTDComment(){this.captureToChar(et)&&(this.text+="-",this.state=Be)}sDTDCommentEnding(){let t=this.getCodeNorm();this.text+=String.fromCodePoint(t),this.state=t===et?$e:ut}sDTDCommentEnded(){let t=this.getCodeNorm();this.text+=String.fromCodePoint(t),t===p?this.state=U:(this.fail("malformed comment."),this.state=ut)}sDTDPI(){this.captureToChar(E)&&(this.text+="?",this.state=Xe)}sDTDPIEnding(){let t=this.getCodeNorm();this.text+=String.fromCodePoint(t),t===p&&(this.state=U)}sText(){this.tags.length!==0?this.handleTextInRoot():this.handleTextOutsideRoot()}sEntity(){let{i:t}=this,{chunk:s}=this;t:for(;;)switch(this.getCode()){case R:this.entity+=`${s.slice(t,this.prevI)}
|
|
7
|
+
`,t=this.i;break;case rs:{let{entityReturnState:i}=this,r=this.entity+s.slice(t,this.prevI);this.state=i;let n;r===""?(this.fail("empty entity name."),n="&;"):(n=this.parseEntity(r),this.entity=""),(i!==_||this.textHandler!==void 0)&&(this.text+=n);break t}case x:this.entity+=s.slice(t);break t;default:}}sOpenWaka(){let t=this.getCode();if(z(t))this.state=Je,this.unget(),this.xmlDeclPossible=!1;else switch(t){case st:this.state=ss,this.xmlDeclPossible=!1;break;case Yt:this.state=We,this.openWakaBang="",this.xmlDeclPossible=!1;break;case E:this.state=ze;break;default:this.fail("disallowed character in tag name"),this.state=_,this.xmlDeclPossible=!1}}sOpenWakaBang(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case"[CDATA[":!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0),this.state=xt,this.openWakaBang="";break;case"--":this.state=ft,this.openWakaBang="";break;case"DOCTYPE":this.state=ct,(this.doctype||this.sawRoot)&&this.fail("inappropriately located doctype declaration."),this.openWakaBang="";break;default:this.openWakaBang.length>=7&&this.fail("incorrect syntax.")}}sComment(){this.captureToChar(et)&&(this.state=je)}sCommentEnding(){var t;let s=this.getCodeNorm();s===et?(this.state=Ve,(t=this.commentHandler)===null||t===void 0||t.call(this,this.text),this.text=""):(this.text+=`-${String.fromCodePoint(s)}`,this.state=ft)}sCommentEnded(){let t=this.getCodeNorm();t!==p?(this.fail("malformed comment."),this.text+=`--${String.fromCodePoint(t)}`,this.state=ft):this.state=_}sCData(){this.captureToChar(W)&&(this.state=qe)}sCDataEnding(){let t=this.getCodeNorm();t===W?this.state=Ge:(this.text+=`]${String.fromCodePoint(t)}`,this.state=xt)}sCDataEnding2(){var t;let s=this.getCodeNorm();switch(s){case p:{(t=this.cdataHandler)===null||t===void 0||t.call(this,this.text),this.text="",this.state=_;break}case W:this.text+="]";break;default:this.text+=`]]${String.fromCodePoint(s)}`,this.state=xt}}sPIFirstChar(){let t=this.getCodeNorm();this.nameStartCheck(t)?(this.piTarget+=String.fromCodePoint(t),this.state=Vt):t===E||D(t)?(this.fail("processing instruction without a target."),this.state=t===E?tt:mt):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(t),this.state=Vt)}sPIRest(){let{chunk:t,i:s}=this;for(;;){let i=this.getCodeNorm();if(i===x){this.piTarget+=t.slice(s);return}if(!this.nameCheck(i)){this.piTarget+=t.slice(s,this.prevI);let r=i===E;r||D(i)?this.piTarget==="xml"?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=r?B:qt):this.state=r?tt:mt:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(i));break}}}sPIBody(){if(this.text.length===0){let t=this.getCodeNorm();t===E?this.state=tt:D(t)||(this.text=String.fromCodePoint(t))}else this.captureToChar(E)&&(this.state=tt)}sPIEnding(){var t;let s=this.getCodeNorm();if(s===p){let{piTarget:i}=this;i.toLowerCase()==="xml"&&this.fail("the XML declaration must appear at the start of the document."),(t=this.piHandler)===null||t===void 0||t.call(this,{target:i,body:this.text}),this.piTarget=this.text="",this.state=_}else s===E?this.text+="?":(this.text+=`?${String.fromCodePoint(s)}`,this.state=mt);this.xmlDeclPossible=!1}sXMLDeclNameStart(){let t=this.skipSpaces();if(t===E){this.state=B;return}t!==x&&(this.state=Qe,this.name=String.fromCodePoint(t))}sXMLDeclName(){let t=this.captureTo(os);if(t===E){this.state=B,this.name+=this.text,this.text="",this.fail("XML declaration is incomplete.");return}if(D(t)||t===X){if(this.name+=this.text,this.text="",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail("did not expect any more name/value pairs.");break;case 1:this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);break;default:this.fail(`expected one of ${this.xmlDeclExpects.join(", ")}`)}this.state=t===X?Gt:Ze}}sXMLDeclEq(){let t=this.getCodeNorm();if(t===E){this.state=B,this.fail("XML declaration is incomplete.");return}D(t)||(t!==X&&this.fail("value required."),this.state=Gt)}sXMLDeclValueStart(){let t=this.getCodeNorm();if(t===E){this.state=B,this.fail("XML declaration is incomplete.");return}D(t)||(it(t)?this.q=t:(this.fail("value must be quoted."),this.q=Kt),this.state=Ke)}sXMLDeclValue(){let t=this.captureTo([this.q,E]);if(t===E){this.state=B,this.text="",this.fail("XML declaration is incomplete.");return}if(t===x)return;let s=this.text;switch(this.text="",this.name){case"version":{this.xmlDeclExpects=["encoding","standalone"];let i=s;this.xmlDecl.version=i,/^1\.[0-9]+$/.test(i)?this.opt.forceXMLVersion||this.setXMLVersion(i):this.fail("version number must match /^1\\.[0-9]+$/.");break}case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(s)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=s;break;case"standalone":s!=="yes"&&s!=="no"&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=s;break;default:}this.name="",this.state=Ye}sXMLDeclSeparator(){let t=this.getCodeNorm();if(t===E){this.state=B;return}D(t)||(this.fail("whitespace required."),this.unget()),this.state=qt}sXMLDeclEnding(){var t;this.getCodeNorm()===p?(this.piTarget!=="xml"?this.fail("processing instructions are not allowed before root."):this.name!=="version"&&this.xmlDeclExpects.includes("version")&&this.fail("XML declaration must contain a version."),(t=this.xmldeclHandler)===null||t===void 0||t.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=_):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}sOpenTag(){var t;let s=this.captureNameChars();if(s===x)return;let i=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=i.ns=Object.create(null)),(t=this.openTagStartHandler)===null||t===void 0||t.call(this,i),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),s){case p:this.openTag();break;case st:this.state=pt;break;default:D(s)||this.fail("disallowed character in tag name."),this.state=Q}}sOpenTagSlash(){this.getCode()===p?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=Q)}sAttrib(){let t=this.skipSpaces();t!==x&&(z(t)?(this.unget(),this.state=gt):t===p?this.openTag():t===st?this.state=pt:this.fail("disallowed character in attribute name."))}sAttribName(){let t=this.captureNameChars();t===X?this.state=zt:D(t)?this.state=ts:t===p?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):t!==x&&this.fail("disallowed character in attribute name.")}sAttribNameSawWhite(){let t=this.skipSpaces();switch(t){case x:return;case X:this.state=zt;break;default:this.fail("attribute without value."),this.text="",this.name="",t===p?this.openTag():z(t)?(this.unget(),this.state=gt):(this.fail("disallowed character in attribute name."),this.state=Q)}}sAttribValue(){let t=this.getCodeNorm();it(t)?(this.q=t,this.state=Qt):D(t)||(this.fail("unquoted attribute value."),this.state=Zt,this.unget())}sAttribValueQuoted(){let{q:t,chunk:s}=this,{i}=this;for(;;)switch(this.getCode()){case t:this.pushAttrib(this.name,this.text+s.slice(i,this.prevI)),this.name=this.text="",this.q=null,this.state=es;return;case Z:this.text+=s.slice(i,this.prevI),this.state=J,this.entityReturnState=Qt;return;case N:case R:case Et:this.text+=`${s.slice(i,this.prevI)} `,i=this.i;break;case k:this.text+=s.slice(i,this.prevI),this.fail("disallowed character.");return;case x:this.text+=s.slice(i);return;default:}}sAttribValueClosed(){let t=this.getCodeNorm();D(t)?this.state=Q:t===p?this.openTag():t===st?this.state=pt:z(t)?(this.fail("no whitespace between attributes."),this.unget(),this.state=gt):this.fail("disallowed character in attribute name.")}sAttribValueUnquoted(){let t=this.captureTo(hs);switch(t){case Z:this.state=J,this.entityReturnState=Zt;break;case k:this.fail("disallowed character.");break;case x:break;default:this.text.includes("]]>")&&this.fail('the string "]]>" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text="",t===p?this.openTag():this.state=Q}}sCloseTag(){let t=this.captureNameChars();t===p?this.closeTag():D(t)?this.state=is:t!==x&&this.fail("disallowed character in closing tag.")}sCloseTagSawWhite(){switch(this.skipSpaces()){case p:this.closeTag();break;case x:break;default:this.fail("disallowed character in closing tag.")}}handleTextInRoot(){let{i:t,forbiddenState:s}=this,{chunk:i,textHandler:r}=this;t:for(;;)switch(this.getCode()){case k:{if(this.state=dt,r!==void 0){let{text:n}=this,o=i.slice(t,this.prevI);n.length!==0?(r(n+o),this.text=""):o.length!==0&&r(o)}s=$;break t}case Z:this.state=J,this.entityReturnState=_,r!==void 0&&(this.text+=i.slice(t,this.prevI)),s=$;break t;case W:switch(s){case $:s=ee;break;case ee:s=_t;break;case _t:break;default:throw new Error("impossible state")}break;case p:s===_t&&this.fail('the string "]]>" is disallowed in char data.'),s=$;break;case R:r!==void 0&&(this.text+=`${i.slice(t,this.prevI)}
|
|
8
|
+
`),t=this.i,s=$;break;case x:r!==void 0&&(this.text+=i.slice(t));break t;default:s=$}this.forbiddenState=s}handleTextOutsideRoot(){let{i:t}=this,{chunk:s,textHandler:i}=this,r=!1;t:for(;;){let n=this.getCode();switch(n){case k:{if(this.state=dt,i!==void 0){let{text:o}=this,l=s.slice(t,this.prevI);o.length!==0?(i(o+l),this.text=""):l.length!==0&&i(l)}break t}case Z:this.state=J,this.entityReturnState=_,i!==void 0&&(this.text+=s.slice(t,this.prevI)),r=!0;break t;case R:i!==void 0&&(this.text+=`${s.slice(t,this.prevI)}
|
|
9
|
+
`),t=this.i;break;case x:i!==void 0&&(this.text+=s.slice(t));break t;default:D(n)||(r=!0)}}r&&(!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0))}pushAttribNS(t,s){var i;let{prefix:r,local:n}=this.qname(t),o={name:t,prefix:r,local:n,value:s};if(this.attribList.push(o),(i=this.attributeHandler)===null||i===void 0||i.call(this,o),r==="xmlns"){let l=s.trim();this.currentXMLVersion==="1.0"&&l===""&&this.fail("invalid attempt to undefine prefix in XML 1.0"),this.topNS[n]=l,Ft(this,n,l)}else if(t==="xmlns"){let l=s.trim();this.topNS[""]=l,Ft(this,"",l)}}pushAttribPlain(t,s){var i;let r={name:t,value:s};this.attribList.push(r),(i=this.attributeHandler)===null||i===void 0||i.call(this,r)}end(){var t,s;this.sawRoot||this.fail("document must contain a root element.");let{tags:i}=this;for(;i.length>0;){let n=i.pop();this.fail(`unclosed tag: ${n.name}`)}this.state!==jt&&this.state!==_&&this.fail("unexpected end.");let{text:r}=this;return r.length!==0&&((t=this.textHandler)===null||t===void 0||t.call(this,r),this.text=""),this._closed=!0,(s=this.endHandler)===null||s===void 0||s.call(this),this._init(),this}resolve(t){var s,i;let r=this.topNS[t];if(r!==void 0)return r;let{tags:n}=this;for(let o=n.length-1;o>=0;o--)if(r=n[o].ns[t],r!==void 0)return r;return r=this.ns[t],r!==void 0?r:(i=(s=this.opt).resolvePrefix)===null||i===void 0?void 0:i.call(s,t)}qname(t){let s=t.indexOf(":");if(s===-1)return{prefix:"",local:t};let i=t.slice(s+1),r=t.slice(0,s);return(r===""||i===""||i.includes(":"))&&this.fail(`malformed name: ${t}.`),{prefix:r,local:i}}processAttribsNS(){var t;let{attribList:s}=this,i=this.tag;{let{prefix:o,local:l}=this.qname(i.name);i.prefix=o,i.local=l;let m=i.uri=(t=this.resolve(o))!==null&&t!==void 0?t:"";o!==""&&(o==="xmlns"&&this.fail('tags may not have "xmlns" as prefix.'),m===""&&(this.fail(`unbound namespace prefix: ${JSON.stringify(o)}.`),i.uri=o))}if(s.length===0)return;let{attributes:r}=i,n=new Set;for(let o of s){let{name:l,prefix:m,local:w}=o,d,A;m===""?(d=l==="xmlns"?j:"",A=l):(d=this.resolve(m),d===void 0&&(this.fail(`unbound namespace prefix: ${JSON.stringify(m)}.`),d=m),A=`{${d}}${w}`),n.has(A)&&this.fail(`duplicate attribute: ${A}.`),n.add(A),o.uri=d,r[l]=o}this.attribList=[]}processAttribsPlain(){let{attribList:t}=this,s=this.tag.attributes;for(let{name:i,value:r}of t)s[i]!==void 0&&this.fail(`duplicate attribute: ${i}.`),s[i]=r;this.attribList=[]}openTag(){var t;this.processAttribs();let{tags:s}=this,i=this.tag;i.isSelfClosing=!1,(t=this.openTagHandler)===null||t===void 0||t.call(this,i),s.push(i),this.state=_,this.name=""}openSelfClosingTag(){var t,s,i;this.processAttribs();let{tags:r}=this,n=this.tag;n.isSelfClosing=!0,(t=this.openTagHandler)===null||t===void 0||t.call(this,n),(s=this.closeTagHandler)===null||s===void 0||s.call(this,n),(this.tag=(i=r[r.length-1])!==null&&i!==void 0?i:null)===null&&(this.closedRoot=!0),this.state=_,this.name=""}closeTag(){let{tags:t,name:s}=this;if(this.state=_,this.name="",s===""){this.fail("weird empty close tag."),this.text+="</>";return}let i=this.closeTagHandler,r=t.length;for(;r-- >0;){let n=this.tag=t.pop();if(this.topNS=n.ns,i?.(n),n.name===s)break;this.fail("unexpected close tag.")}r===0?this.closedRoot=!0:r<0&&(this.fail(`unmatched closing tag: ${s}.`),this.text+=`</${s}>`)}parseEntity(t){if(t[0]!=="#"){let i=this.ENTITIES[t];return i!==void 0?i:(this.fail(this.isName(t)?"undefined entity.":"disallowed character in entity name."),`&${t};`)}let s=NaN;return t[1]==="x"&&/^#x[0-9a-f]+$/i.test(t)?s=parseInt(t.slice(2),16):/^#[0-9]+$/.test(t)&&(s=parseInt(t.slice(1),10)),this.isChar(s)?String.fromCodePoint(s):(this.fail("malformed character entity."),`&${t};`)}};V.SaxesParser=Dt});var de=me(he(),1);var Tt=new TextDecoder("utf-8",{fatal:!0}),fs=Uint32Array.from({length:256},(e,t)=>{for(let s=0;s<8;s++)t=t&1?3988292384^t>>>1:t>>>1;return t>>>0});function xs(e,t=4294967295){for(let s of e)t=fs[(t^s)&255]^t>>>8;return t>>>0}function Nt(e){if(!e||e.includes("\\")||e.startsWith("/")||e.includes("\0")||e.split("/").some(t=>t===".."||t===".")||/^[a-z]+:/i.test(e))throw new Error("Unsafe archive path");return e}function ms(e,t=Y){if(e.byteLength>t.max_file_bytes)throw new Error("Archive size limit exceeded");let s=new Uint8Array(e),i=new DataView(e),r=-1;for(let u=s.length-22;u>=Math.max(0,s.length-65557);u--)if(i.getUint32(u,!0)===101010256&&u+22+i.getUint16(u+20,!0)===s.length){r=u;break}if(r<0)throw new Error("ZIP central directory not found");let n=i.getUint16(r+10,!0),o=i.getUint32(r+12,!0),l=i.getUint32(r+16,!0);if(i.getUint16(r+4,!0)||i.getUint16(r+6,!0)||n!==i.getUint16(r+8,!0))throw new Error("Multi-disk ZIP is unsupported");if(n===65535||l===4294967295||o===4294967295)throw new Error("ZIP64 is unsupported");if(n>t.max_archive_entries||l+o>r)throw new Error("Invalid or oversized ZIP directory");let m=[],w=new Set,d=l,A=0;for(let u=0;u<n;u++){if(d+46>l+o||i.getUint32(d,!0)!==33639248)throw new Error("Invalid ZIP directory entry");let C=i.getUint16(d+8,!0),P=i.getUint16(d+10,!0),v=i.getUint32(d+16,!0),M=i.getUint32(d+20,!0),I=i.getUint32(d+24,!0),T=i.getUint16(d+28,!0),L=i.getUint16(d+30,!0),y=i.getUint16(d+32,!0),H=i.getUint32(d+42,!0);if(d+46+T+L+y>l+o)throw new Error("Truncated ZIP directory");let a=Nt(Tt.decode(s.subarray(d+46,d+46+T)));if(w.has(a))throw new Error("Duplicate archive entry");if(w.add(a),C&1||![0,8].includes(P))throw new Error("Encrypted or unsupported ZIP compression");if(A+=I,G(t,67108864+e.byteLength+A*4,"expanded archive"),A>t.max_uncompressed_bytes)throw new Error("Archive expansion limit exceeded");m.push({name:a,method:P,checksum:v,compressed:M,original:I,local:H}),d+=46+T+L+y}if(d!==l+o)throw new Error("ZIP directory size mismatch");let O=new Map;for(let u of m){let C=u.local;if(C+30>l||i.getUint32(C,!0)!==67324752)throw new Error("Invalid ZIP local header");let P=i.getUint16(C+26,!0),v=i.getUint16(C+28,!0),M=C+30+P+v;if(M+u.compressed>l||i.getUint16(C+8,!0)!==u.method||i.getUint16(C+6,!0)&1||Tt.decode(s.subarray(C+30,C+30+P))!==u.name)throw new Error("ZIP header mismatch");let I=new Uint8Array(u.original),T=0,L=4294967295,y=!1,H=(a,h)=>{if(T+a.length>I.length)throw new Error("ZIP entry exceeds declared size");I.set(a,T),T+=a.length,L=xs(a,L),y=h};if(u.method===0)H(s.subarray(M,M+u.compressed),!0);else{let a=new Mt(H);for(let h=0;h<u.compressed;h+=1024)a.push(s.subarray(M+h,M+Math.min(h+1024,u.compressed)),h+1024>=u.compressed)}if(!y||T!==u.original||(L^4294967295)>>>0!==u.checksum)throw new Error("ZIP checksum or length mismatch");u.name.endsWith("/")||O.set(u.name,I)}return O}function Ts(e,t=Y){let s=Object.create(null);s["json_data.vsj"]=new TextEncoder().encode(JSON.stringify(e.vsj));let i=s["json_data.vsj"].length;for(let n of e.files){let o=Nt(`${n.id}.stl`),l=new Uint8Array(n.bin);i+=l.length,s[o]=l}if(Object.keys(s).length>t.max_archive_entries||i>t.max_uncompressed_bytes)throw new Error("Scene archive limit exceeded");let r=It(s,{level:6});if(r.length>t.max_file_bytes)throw new Error("Archive size limit exceeded");return r.buffer}function le(e,t,s=()=>{}){let i=new de.SaxesParser({xmlns:!0});i.on("doctype",()=>{throw new Error("XML document types are not supported")}),i.on("error",r=>{throw r}),i.on("opentag",r=>{let n=Object.create(null);for(let o of Object.values(r.attributes))n[o.local]=o.value;t(r.local,n,r)}),i.on("closetag",r=>s(r.local)),i.write(Tt.decode(e)).close()}function ce(e){if(!e)return wt();let t=e.trim().split(/\s+/).map(Number);if(t.length!==12||t.some(s=>!Number.isFinite(s)))throw new Error("Invalid 3MF transform");return new Float64Array([t[0],t[1],t[2],0,t[3],t[4],t[5],0,t[6],t[7],t[8],0,t[9],t[10],t[11],1])}function Ns(e,t=Y){let s=ms(e,t),i=67108864+e.byteLength+[...s.values()].reduce((a,h)=>a+h.byteLength*3,0),r=null;if(s.has("_rels/.rels")&&le(s.get("_rels/.rels"),(a,h)=>{if(a==="Relationship"&&h.Type?.endsWith("/3dmodel")){if(h.TargetMode==="External")throw new Error("External 3MF resources are unsupported");r=Nt(h.Target.replace(/^\//,""))}}),r??=[...s.keys()].find(a=>/^3d\/3dmodel\.model$/i.test(a)),!r||!s.has(r))throw new Error("3MF model part not found");let n=new Map,o=new Map,l=[],m=null,w=null,d=!1,A=1,O=0,u=0,C=!1;if(le(s.get(r),(a,h,b)=>{if(a==="model"){if(C)throw new Error("Multiple 3MF roots");if(C=!0,A={micron:.001,millimeter:1,centimeter:10,inch:25.4,foot:304.8,meter:1e3}[h.unit||"millimeter"],!A)throw new Error("Unsupported 3MF unit");for(let S of(h.requiredextensions||"").split(/\s+/).filter(Boolean))if(!/material\/2015\/02$/.test(b.ns[S]||""))throw new Error(`Unsupported required 3MF extension: ${S}`)}else if(a==="object"){if(n.has(h.id))throw new Error("Duplicate 3MF object");m={id:h.id,vertices:[],triangles:[],components:[],pid:h.pid,pindex:h.pindex},n.set(h.id,m)}else if(a==="vertex"&&m){let g=[Number(h.x),Number(h.y),Number(h.z)];if(g.some(S=>!Number.isFinite(S)))throw new Error("Invalid 3MF vertex");if(m.vertices.push(g),++u>t.max_triangles*3)throw new Error("3MF vertex limit exceeded");G(t,i+u*128+O*320)}else if(a==="triangle"&&m){if(m.triangles.push(h),++O>t.max_triangles)throw new Error("Triangle limit exceeded");G(t,i+u*128+O*320)}else if(a==="component"&&m){if(h.path)throw new Error("External 3MF components are unsupported");m.components.push({id:h.objectid,matrix:ce(h.transform)})}else if(a==="build")d=!0;else if(a==="item"&&d){if(h.path)throw new Error("External 3MF build items are unsupported");h.printable!=="0"&&l.push({id:h.objectid,matrix:ce(h.transform)})}else if(a==="basematerials"||a==="colorgroup")w=[],o.set(h.id,w);else if((a==="base"||a==="color")&&w){let g=h.displaycolor||h.color;if(!/^#[\da-f]{6}(?:[\da-f]{2})?$/i.test(g||""))throw new Error("Invalid 3MF color");w.push(Rt(g.slice(0,7)))}else if(a==="texture2d"||a==="texture2dgroup"||a==="multiproperties")throw new Error("3MF textures and composite materials are not supported")},a=>{a==="object"&&(m=null),a==="build"&&(d=!1),(a==="basematerials"||a==="colorgroup")&&(w=null)}),!C||!l.length)throw new Error("3MF build is empty");let P=[],v=0,M=0,I=(a,h,b)=>{if(b.includes(a)||b.length>=64)throw new Error("Cyclic or excessively nested 3MF components");if(++M>t.max_archive_entries*1024)throw new Error("3MF component expansion limit exceeded");let g=n.get(a);if(!g)throw new Error("Missing 3MF object");if(v+=g.triangles.length,v>t.max_triangles)throw new Error("Expanded triangle limit exceeded");G(t,i+u*128+O*320+v*224,"expanded model"),g.triangles.length&&P.push({obj:g,matrix:h});for(let S of g.components)I(S.id,bt(h,S.matrix),[...b,a])};for(let a of l)I(a.id,a.matrix,[]);let T=new Float32Array(v*9),L=new Float32Array(v*9),y=0,H=!1;for(let a of P)for(let h of a.obj.triangles)for(let b=0;b<3;b++){let g=Number(h[`v${b+1}`]);if(!Number.isInteger(g)||g<0||g>=a.obj.vertices.length)throw new Error("Invalid 3MF triangle index");T.set(St(a.matrix,a.obj.vertices[g]).map(xe=>xe*A),y);let S=h.pid??a.obj.pid,fe=Number(h[`p${b+1}`]??h.p1??a.obj.pindex??0),nt=[144/255,144/255,144/255];if(S!==void 0){if(nt=o.get(S)?.[fe],!nt)throw new Error("Unsupported or invalid 3MF material reference");H=!0}L.set(nt,y),y+=3}return{...vt(T,H?L:null,t),format:"3mf"}}export{Nt as a,ms as b,Ts as c,Ns as d};
|
|
10
|
+
/*! Bundled license information:
|
|
11
|
+
|
|
12
|
+
xmlchars/xml/1.0/ed5.js:
|
|
13
|
+
(**
|
|
14
|
+
* Character classes and associated utilities for the 5th edition of XML 1.0.
|
|
15
|
+
*
|
|
16
|
+
* @author Louis-Dominique Dubeau
|
|
17
|
+
* @license MIT
|
|
18
|
+
* @copyright Louis-Dominique Dubeau
|
|
19
|
+
*)
|
|
20
|
+
|
|
21
|
+
xmlchars/xml/1.1/ed2.js:
|
|
22
|
+
(**
|
|
23
|
+
* Character classes and associated utilities for the 2nd edition of XML 1.1.
|
|
24
|
+
*
|
|
25
|
+
* @author Louis-Dominique Dubeau
|
|
26
|
+
* @license MIT
|
|
27
|
+
* @copyright Louis-Dominique Dubeau
|
|
28
|
+
*)
|
|
29
|
+
|
|
30
|
+
xmlchars/xmlns/1.0/ed3.js:
|
|
31
|
+
(**
|
|
32
|
+
* Character class utilities for XML NS 1.0 edition 3.
|
|
33
|
+
*
|
|
34
|
+
* @author Louis-Dominique Dubeau
|
|
35
|
+
* @license MIT
|
|
36
|
+
* @copyright Louis-Dominique Dubeau
|
|
37
|
+
*)
|
|
38
|
+
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var f=Object.create;var s=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var x=(t,r)=>()=>{try{return r||t((r={exports:{}}).exports,r),r.exports}catch(o){throw r=0,o}};var h=(t,r,o,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of i(r))!u.call(t,n)&&n!==o&&s(t,n,{get:()=>r[n],enumerable:!(e=c(r,n))||e.enumerable});return t};var M=(t,r,o)=>(o=t!=null?f(l(t)):{},h(r||!t||!t.__esModule?s(o,"default",{value:t,enumerable:!0}):o,t));var A=(t,r)=>t.map((o,e)=>o-r[e]),y=(t,r)=>t.map(o=>o*r);var w=(t,r)=>[t[1]*r[2]-t[2]*r[1],t[2]*r[0]-t[0]*r[2],t[0]*r[1]-t[1]*r[0]],F=t=>y(t,1/(Math.hypot(...t)||1)),I=()=>new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);function d(t,r){let o=new Float64Array(16);for(let e=0;e<4;e++)for(let n=0;n<4;n++)for(let a=0;a<4;a++)o[e*4+n]+=t[a*4+n]*r[e*4+a];return o}function _(t,r,o=1){let e=t[3]*r[0]+t[7]*r[1]+t[11]*r[2]+t[15]*o;return[0,1,2].map(n=>(t[n]*r[0]+t[4+n]*r[1]+t[8+n]*r[2]+t[12+n]*o)/(o&&e?e:1))}export{x as a,M as b,A as c,w as d,F as e,I as f,d as g,_ as h};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as p,d as c,e as x,h as d}from"./chunk-U33KANV7.js";var u=r=>{if(!Number.isFinite(r))throw new Error("Non-finite export coordinate");return Object.is(r,-0)?"0":String(r)},b=r=>String(r).replace(/[\x00-\x08\x0b\x0c\x0e-\x1f]/g,"").replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t]),m=class{constructor(t){this.limit=t,this.bytes=0}add(t){if(this.bytes+=t,this.bytes>this.limit)throw new Error("Export size limit exceeded")}},g=class{constructor(t){this.budget=t,this.parts=[],this.pending=""}write(t){this.pending+=t,this.pending.length>=32768&&this.flush()}flush(){if(!this.pending)return;let t=new TextEncoder().encode(this.pending);this.budget.add(t.byteLength),this.parts.push(t),this.pending=""}finish(){return this.flush(),this.parts}};function f(r,t){let i=r.positions,e=r.matrix,n=[0,3,6].map(o=>d(e,[i[t+o],i[t+o+1],i[t+o+2]]));if(n.flat().some(o=>!Number.isFinite(o)))throw new Error("Non-finite export coordinate");let a=e[0]*(e[5]*e[10]-e[9]*e[6])-e[4]*(e[1]*e[10]-e[9]*e[2])+e[8]*(e[1]*e[6]-e[5]*e[2]);a<0&&([n[1],n[2]]=[n[2],n[1]]);let s=c(p(n[1],n[0]),p(n[2],n[0]));if(!Number.isFinite(Math.hypot(...s)))throw new Error("Geometry magnitude exceeds export limits");return{vertices:n,normal:x(s),degenerate:!Math.hypot(...s),reflected:a<0}}function h(r,t){return r.color||(r.colors?Array.from(r.colors.subarray(t,t+3)):[144/255,144/255,144/255])}var w=(r,t=1)=>"#"+[...r,t].map(i=>Math.round(Math.max(0,Math.min(1,i))*255).toString(16).padStart(2,"0")).join("").toUpperCase(),y=(r,t)=>[0,1,2].map(i=>(h(r,t)[i]+h(r,t+3)[i]+h(r,t+6)[i])/3);function E(r,t){let i=0;return t({loaded:0,total:r,phase:"exporting"}),()=>{i++,(i%1024===0||i===r)&&t({loaded:i,total:r,phase:"exporting"})}}export{u as a,b,m as c,g as d,f as e,h as f,w as g,y as h,E as i};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var z=Uint8Array,V=Uint16Array,Ur=Int32Array,pr=new z([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),gr=new z([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),zr=new z([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Gr=function(n,r){for(var t=new V(31),e=0;e<31;++e)t[e]=r+=1<<n[e-1];for(var a=new Ur(t[30]),e=1;e<30;++e)for(var i=t[e];i<t[e+1];++i)a[i]=i-t[e]<<5|e;return{b:t,r:a}},Or=Gr(pr,2),qr=Or.b,Ar=Or.r;qr[28]=258,Ar[258]=28;var Lr=Gr(gr,0),Rr=Lr.b,Cr=Lr.r,Mr=new V(32768);for(m=0;m<32768;++m)Q=(m&43690)>>1|(m&21845)<<1,Q=(Q&52428)>>2|(Q&13107)<<2,Q=(Q&61680)>>4|(Q&3855)<<4,Mr[m]=((Q&65280)>>8|(Q&255)<<8)>>1;var Q,m,J=(function(n,r,t){for(var e=n.length,a=0,i=new V(r);a<e;++a)n[a]&&++i[n[a]-1];var s=new V(r);for(a=1;a<r;++a)s[a]=s[a-1]+i[a-1]<<1;var h;if(t){h=new V(1<<r);var v=15-r;for(a=0;a<e;++a)if(n[a])for(var u=a<<4|n[a],f=r-n[a],o=s[n[a]-1]++<<f,l=o|(1<<f)-1;o<=l;++o)h[Mr[o]>>v]=u}else for(h=new V(e),a=0;a<e;++a)n[a]&&(h[a]=Mr[s[n[a]-1]++]>>15-n[a]);return h}),d=new z(288);for(m=0;m<144;++m)d[m]=8;var m;for(m=144;m<256;++m)d[m]=9;var m;for(m=256;m<280;++m)d[m]=7;var m;for(m=280;m<288;++m)d[m]=8;var m,fr=new z(32);for(m=0;m<32;++m)fr[m]=5;var m,Vr=J(d,9,0),Wr=J(d,9,1),Yr=J(fr,5,0),jr=J(fr,5,1),wr=function(n){for(var r=n[0],t=1;t<n.length;++t)n[t]>r&&(r=n[t]);return r},Y=function(n,r,t){var e=r/8|0;return(n[e]|n[e+1]<<8)>>(r&7)&t},mr=function(n,r){var t=r/8|0;return(n[t]|n[t+1]<<8|n[t+2]<<16)>>(r&7)},Fr=function(n){return(n+7)/8|0},nr=function(n,r,t){return(r==null||r<0)&&(r=0),(t==null||t>n.length)&&(t=n.length),new z(n.subarray(r,t))};var Jr=["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"],M=function(n,r,t){var e=new Error(r||Jr[n]);if(e.code=n,Error.captureStackTrace&&Error.captureStackTrace(e,M),!t)throw e;return e},Kr=function(n,r,t,e){var a=n.length,i=e?e.length:0;if(!a||r.f&&!r.l)return t||new z(0);var s=!t,h=s||r.i!=2,v=r.i;s&&(t=new z(a*3));var u=function(ir){var ar=t.length;if(ir>ar){var rr=new z(Math.max(ar*2,ir));rr.set(t),t=rr}},f=r.f||0,o=r.p||0,l=r.b||0,p=r.l,w=r.d,g=r.m,x=r.n,F=a*8;do{if(!p){f=Y(n,o,1);var D=Y(n,o+1,3);if(o+=3,D)if(D==1)p=Wr,w=jr,g=9,x=5;else if(D==2){var E=Y(n,o,31)+257,C=Y(n,o+10,15)+4,y=E+Y(n,o+5,31)+1;o+=14;for(var c=new z(y),G=new z(19),B=0;B<C;++B)G[zr[B]]=Y(n,o+B*3,7);o+=C*3;for(var L=wr(G),k=(1<<L)-1,H=J(G,L,1),B=0;B<y;){var P=H[Y(n,o,k)];o+=P&15;var A=P>>4;if(A<16)c[B++]=A;else{var O=0,S=0;for(A==16?(S=3+Y(n,o,3),o+=2,O=c[B-1]):A==17?(S=3+Y(n,o,7),o+=3):A==18&&(S=11+Y(n,o,127),o+=7);S--;)c[B++]=O}}var $=c.subarray(0,E),q=c.subarray(E);g=wr($),x=wr(q),p=J($,g,1),w=J(q,x,1)}else M(1);else{var A=Fr(o)+4,T=n[A-4]|n[A-3]<<8,Z=A+T;if(Z>a){v&&M(0);break}h&&u(l+T),t.set(n.subarray(A,Z),l),r.b=l+=T,r.p=o=Z*8,r.f=f;continue}if(o>F){v&&M(0);break}}h&&u(l+131072);for(var er=(1<<g)-1,W=(1<<x)-1,K=o;;K=o){var O=p[mr(n,o)&er],N=O>>4;if(o+=O&15,o>F){v&&M(0);break}if(O||M(2),N<256)t[l++]=N;else if(N==256){K=o,p=null;break}else{var R=N-254;if(N>264){var B=N-257,U=pr[B];R=Y(n,o,(1<<U)-1)+qr[B],o+=U}var j=w[mr(n,o)&W],b=j>>4;j||M(3),o+=j&15;var q=Rr[b];if(b>3){var U=gr[b];q+=mr(n,o)&(1<<U)-1,o+=U}if(o>F){v&&M(0);break}h&&u(l+131072);var _=l+R;if(l<q){var hr=i-q,ur=Math.min(q,_);for(hr+l<0&&M(3);l<ur;++l)t[l]=e[hr+l]}for(;l<_;++l)t[l]=t[l-q]}}r.l=p,r.p=K,r.b=l,r.f=f,p&&(f=1,r.m=g,r.d=w,r.n=x)}while(!f);return l!=t.length&&s?nr(t,0,l):t.subarray(0,l)},X=function(n,r,t){t<<=r&7;var e=r/8|0;n[e]|=t,n[e+1]|=t>>8},or=function(n,r,t){t<<=r&7;var e=r/8|0;n[e]|=t,n[e+1]|=t>>8,n[e+2]|=t>>16},xr=function(n,r){for(var t=[],e=0;e<n.length;++e)n[e]&&t.push({s:e,f:n[e]});var a=t.length,i=t.slice();if(!a)return{t:lr,l:0};if(a==1){var s=new z(t[0].s+1);return s[t[0].s]=1,{t:s,l:1}}t.sort(function(Z,E){return Z.f-E.f}),t.push({s:-1,f:25001});var h=t[0],v=t[1],u=0,f=1,o=2;for(t[0]={s:-1,f:h.f+v.f,l:h,r:v};f!=a-1;)h=t[t[u].f<t[o].f?u++:o++],v=t[u!=f&&t[u].f<t[o].f?u++:o++],t[f++]={s:-1,f:h.f+v.f,l:h,r:v};for(var l=i[0].s,e=1;e<a;++e)i[e].s>l&&(l=i[e].s);var p=new V(l+1),w=Sr(t[f-1],p,0);if(w>r){var e=0,g=0,x=w-r,F=1<<x;for(i.sort(function(E,C){return p[C.s]-p[E.s]||E.f-C.f});e<a;++e){var D=i[e].s;if(p[D]>r)g+=F-(1<<w-p[D]),p[D]=r;else break}for(g>>=x;g>0;){var A=i[e].s;p[A]<r?g-=1<<r-p[A]++-1:++e}for(;e>=0&&g;--e){var T=i[e].s;p[T]==r&&(--p[T],++g)}w=r}return{t:new z(p),l:w}},Sr=function(n,r,t){return n.s==-1?Math.max(Sr(n.l,r,t+1),Sr(n.r,r,t+1)):r[n.s]=t},Ir=function(n){for(var r=n.length;r&&!n[--r];);for(var t=new V(++r),e=0,a=n[0],i=1,s=function(v){t[e++]=v},h=1;h<=r;++h)if(n[h]==a&&h!=r)++i;else{if(!a&&i>2){for(;i>138;i-=138)s(32754);i>2&&(s(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(s(a),--i;i>6;i-=6)s(8304);i>2&&(s(i-3<<5|8208),i=0)}for(;i--;)s(a);i=1,a=n[h]}return{c:t.subarray(0,e),n:r}},sr=function(n,r){for(var t=0,e=0;e<r.length;++e)t+=n[e]*r[e];return t},Dr=function(n,r,t){var e=t.length,a=Fr(r+2);n[a]=e&255,n[a+1]=e>>8,n[a+2]=n[a]^255,n[a+3]=n[a+1]^255;for(var i=0;i<e;++i)n[a+i+4]=t[i];return(a+4+e)*8},Br=function(n,r,t,e,a,i,s,h,v,u,f){X(r,f++,t),++a[256];for(var o=xr(a,15),l=o.t,p=o.l,w=xr(i,15),g=w.t,x=w.l,F=Ir(l),D=F.c,A=F.n,T=Ir(g),Z=T.c,E=T.n,C=new V(19),y=0;y<D.length;++y)++C[D[y]&31];for(var y=0;y<Z.length;++y)++C[Z[y]&31];for(var c=xr(C,7),G=c.t,B=c.l,L=19;L>4&&!G[zr[L-1]];--L);var k=u+5<<3,H=sr(a,d)+sr(i,fr)+s,P=sr(a,l)+sr(i,g)+s+14+3*L+sr(C,G)+2*C[16]+3*C[17]+7*C[18];if(v>=0&&k<=H&&k<=P)return Dr(r,f,n.subarray(v,v+u));var O,S,$,q;if(X(r,f,1+(P<H)),f+=2,P<H){O=J(l,p,0),S=l,$=J(g,x,0),q=g;var er=J(G,B,0);X(r,f,A-257),X(r,f+5,E-1),X(r,f+10,L-4),f+=14;for(var y=0;y<L;++y)X(r,f+3*y,G[zr[y]]);f+=3*L;for(var W=[D,Z],K=0;K<2;++K)for(var N=W[K],y=0;y<N.length;++y){var R=N[y]&31;X(r,f,er[R]),f+=G[R],R>15&&(X(r,f,N[y]>>5&127),f+=N[y]>>12)}}else O=Vr,S=d,$=Yr,q=fr;for(var y=0;y<h;++y){var U=e[y];if(U>255){var R=U>>18&31;or(r,f,O[R+257]),f+=S[R+257],R>7&&(X(r,f,U>>23&31),f+=pr[R]);var j=U&31;or(r,f,$[j]),f+=q[j],j>3&&(or(r,f,U>>5&8191),f+=gr[j])}else or(r,f,O[U]),f+=S[U]}return or(r,f,O[256]),f+S[256]},Qr=new Ur([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),lr=new z(0),Xr=function(n,r,t,e,a,i){var s=i.z||n.length,h=new z(e+s+5*(1+Math.ceil(s/7e3))+a),v=h.subarray(e,h.length-a),u=i.l,f=(i.r||0)&7;if(r){f&&(v[0]=i.r>>3);for(var o=Qr[r-1],l=o>>13,p=o&8191,w=(1<<t)-1,g=i.p||new V(32768),x=i.h||new V(w+1),F=Math.ceil(t/3),D=2*F,A=function(yr){return(n[yr]^n[yr+1]<<F^n[yr+2]<<D)&w},T=new Ur(25e3),Z=new V(288),E=new V(32),C=0,y=0,c=i.i||0,G=0,B=i.w||0,L=0;c+2<s;++c){var k=A(c),H=c&32767,P=x[k];if(g[H]=P,x[k]=H,B<=c){var O=s-c;if((C>7e3||G>24576)&&(O>423||!u)){f=Br(n,v,0,T,Z,E,y,G,L,c-L,f),G=C=y=0,L=c;for(var S=0;S<286;++S)Z[S]=0;for(var S=0;S<30;++S)E[S]=0}var $=2,q=0,er=p,W=H-P&32767;if(O>2&&k==A(c-W))for(var K=Math.min(l,O)-1,N=Math.min(32767,c),R=Math.min(258,O);W<=N&&--er&&H!=P;){if(n[c+$]==n[c+$-W]){for(var U=0;U<R&&n[c+U]==n[c+U-W];++U);if(U>$){if($=U,q=W,U>K)break;for(var j=Math.min(W,U-2),b=0,S=0;S<j;++S){var _=c-W+S&32767,hr=g[_],ur=_-hr&32767;ur>b&&(b=ur,P=_)}}}H=P,P=g[H],W+=H-P&32767}if(q){T[G++]=268435456|Ar[$]<<18|Cr[q];var ir=Ar[$]&31,ar=Cr[q]&31;y+=pr[ir]+gr[ar],++Z[257+ir],++E[ar],B=c+$,++C}else T[G++]=n[c],++Z[n[c]]}}for(c=Math.max(c,B);c<s;++c)T[G++]=n[c],++Z[n[c]];f=Br(n,v,u,T,Z,E,y,G,L,c-L,f),u||(i.r=f&7|v[f/8|0]<<3,f-=7,i.h=x,i.p=g,i.i=c,i.w=B)}else{for(var c=i.w||0;c<s+u;c+=65535){var rr=c+65535;rr>=s&&(v[f/8|0]=u,rr=s),f=Dr(v,f+1,n.subarray(c,rr))}i.i=s}return nr(h,0,e+Fr(f)+a)},kr=(function(){for(var n=new Int32Array(256),r=0;r<256;++r){for(var t=r,e=9;--e;)t=(t&1&&-306674912)^t>>>1;n[r]=t}return n})(),Pr=function(){var n=-1;return{p:function(r){for(var t=n,e=0;e<r.length;++e)t=kr[t&255^r[e]]^t>>>8;n=t},d:function(){return~n}}};var $r=function(n,r,t,e,a){if(!a&&(a={l:1},r.dictionary)){var i=r.dictionary.subarray(-32768),s=new z(i.length+n.length);s.set(i),s.set(n,i.length),n=s,a.w=i.length}return Xr(n,r.level==null?6:r.level,r.mem==null?a.l?Math.ceil(Math.max(8,Math.min(13,Math.log(n.length)))*1.5):20:12+r.mem,t,e,a)},Tr=function(n,r){var t={};for(var e in n)t[e]=n[e];for(var e in r)t[e]=r[e];return t};var I=function(n,r,t){for(;t;++r)n[r]=t,t>>>=8};var dr=(function(){function n(r,t){if(typeof r=="function"&&(t=r,r={}),this.ondata=t,this.o=r||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new z(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(r,t){this.ondata($r(r,this.o,0,0,this.s),t)},n.prototype.push=function(r,t){this.ondata||M(5),this.s.l&&M(4);var e=r.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var a=new z(e&-32768);a.set(this.b.subarray(0,this.s.z)),this.b=a}var i=this.b.length-this.s.z;this.b.set(r.subarray(0,i),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(r.subarray(i),32768),this.s.z=r.length-i+32768,this.s.i=32766,this.s.w=32768}else this.b.set(r,this.s.z),this.s.z+=r.length;this.s.l=t&1,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2),t&&(this.s=this.o={},this.b=lr)},n.prototype.flush=function(r){if(this.ondata||M(5),this.s.l&&M(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2,r){var t=new z(6);t[0]=this.s.r>>3;var e=Dr(t,this.s.r,lr);this.s.r=0,this.ondata(t.subarray(0,e>>3),!1)}},n})();function br(n,r){return $r(n,r||{},0,0)}var tn=(function(){function n(r,t){typeof r=="function"&&(t=r,r={}),this.ondata=t;var e=r&&r.dictionary&&r.dictionary.subarray(-32768);this.s={i:0,b:e?e.length:0},this.o=new z(32768),this.p=new z(0),e&&this.o.set(e)}return n.prototype.e=function(r){if(this.ondata||M(5),this.d&&M(4),!this.p.length)this.p=r;else if(r.length){var t=new z(this.p.length+r.length);t.set(this.p),t.set(r,this.p.length),this.p=t}},n.prototype.c=function(r){this.s.i=+(this.d=r||!1);var t=this.s.b,e=Kr(this.p,this.s,this.o);this.ondata(nr(e,t,this.s.b),this.d),this.o=nr(e,this.s.b-32768),this.s.b=this.o.length,this.p=nr(this.p,this.s.p/8|0),this.s.p&=7},n.prototype.push=function(r,t){this.e(r),this.c(t)},n})();var Hr=function(n,r,t,e){for(var a in n){var i=n[a],s=r+a,h=e;Array.isArray(i)&&(h=Tr(e,i[1]),i=i[0]),ArrayBuffer.isView(i)?t[s]=[i,h]:(t[s+="/"]=[new z(0),h],Hr(i,s,t,e))}},Zr=typeof TextEncoder<"u"&&new TextEncoder,_r=typeof TextDecoder<"u"&&new TextDecoder,rn=0;try{_r.decode(lr,{stream:!0}),rn=1}catch{}function vr(n,r){if(r){for(var t=new z(n.length),e=0;e<n.length;++e)t[e]=n.charCodeAt(e);return t}if(Zr)return Zr.encode(n);for(var a=n.length,i=new z(n.length+(n.length>>1)),s=0,h=function(f){i[s++]=f},e=0;e<a;++e){if(s+5>i.length){var v=new z(s+8+(a-e<<1));v.set(i),i=v}var u=n.charCodeAt(e);u<128||r?h(u):u<2048?(h(192|u>>6),h(128|u&63)):u>55295&&u<57344?(u=65536+(u&1047552)|n.charCodeAt(++e)&1023,h(240|u>>18),h(128|u>>12&63),h(128|u>>6&63),h(128|u&63)):(h(224|u>>12),h(128|u>>6&63),h(128|u&63))}return nr(i,0,s)}var nn=function(n){return n==1?3:n<6?2:n==9?1:0};var tr=function(n){var r=0;if(n)for(var t in n){var e=n[t].length;e>65535&&M(9),r+=e+4}return r},cr=function(n,r,t,e,a,i,s,h){var v=e.length,u=t.extra,f=h&&h.length,o=tr(u);I(n,r,s!=null?33639248:67324752),r+=4,s!=null&&(n[r++]=20,n[r++]=t.os),n[r]=20,r+=2,n[r++]=t.flag<<1|(i<0&&8),n[r++]=a&&8,n[r++]=t.compression&255,n[r++]=t.compression>>8;var l=new Date(t.mtime==null?Date.now():t.mtime),p=l.getFullYear()-1980;if((p<0||p>119)&&M(10),I(n,r,p<<25|l.getMonth()+1<<21|l.getDate()<<16|l.getHours()<<11|l.getMinutes()<<5|l.getSeconds()>>1),r+=4,i!=-1&&(I(n,r,t.crc),I(n,r+4,i<0?-i-2:i),I(n,r+8,t.size)),I(n,r+12,v),I(n,r+14,o),r+=16,s!=null&&(I(n,r,f),I(n,r+6,t.attrs),I(n,r+10,s),r+=14),n.set(e,r),r+=v,o)for(var w in u){var g=u[w],x=g.length;I(n,r,+w),I(n,r+2,x),n.set(g,r+4),r+=4+x}return f&&(n.set(h,r),r+=f),r},Nr=function(n,r,t,e,a){I(n,r,101010256),I(n,r+8,t),I(n,r+10,t),I(n,r+12,e),I(n,r+16,a)},Er=(function(){function n(r){this.filename=r,this.c=Pr(),this.size=0,this.compression=0}return n.prototype.process=function(r,t){this.ondata(null,r,t)},n.prototype.push=function(r,t){this.ondata||M(5),this.c.p(r),this.size+=r.length,t&&(this.crc=this.c.d()),this.process(r,t||!1)},n})();var en=(function(){function n(r,t){var e=this;t||(t={}),Er.call(this,r),this.d=new dr(t,function(a,i){e.ondata(null,a,i)}),this.compression=8,this.flag=nn(t.level)}return n.prototype.process=function(r,t){try{this.d.push(r,t)}catch(e){this.ondata(e,null,t)}},n.prototype.push=function(r,t){Er.prototype.push.call(this,r,t)},n})();var an=(function(){function n(r){this.ondata=r,this.u=[],this.d=1}return n.prototype.add=function(r){var t=this;if(this.ondata||M(5),this.d&2)this.ondata(M(4+(this.d&1)*8,0,1),null,!1);else{var e=vr(r.filename),a=e.length,i=r.comment,s=i&&vr(i),h=a!=r.filename.length||s&&i.length!=s.length,v=a+tr(r.extra)+30;a>65535&&this.ondata(M(11,0,1),null,!1);var u=new z(v);cr(u,0,r,e,h,-1);var f=[u],o=function(){for(var x=0,F=f;x<F.length;x++){var D=F[x];t.ondata(null,D,!1)}f=[]},l=this.d;this.d=0;var p=this.u.length,w=Tr(r,{f:e,u:h,o:s,t:function(){r.terminate&&r.terminate()},r:function(){if(o(),l){var x=t.u[p+1];x?x.r():t.d=1}l=1}}),g=0;r.ondata=function(x,F,D){if(x)t.ondata(x,F,D),t.terminate();else if(g+=F.length,f.push(F),D){var A=new z(16);I(A,0,134695760),I(A,4,r.crc),I(A,8,g),I(A,12,r.size),f.push(A),w.c=g,w.b=v+g+16,w.crc=r.crc,w.size=r.size,l&&w.r(),l=1}else l&&o()},this.u.push(w)}},n.prototype.end=function(){var r=this;if(this.d&2){this.ondata(M(4+(this.d&1)*8,0,1),null,!0);return}this.d?this.e():this.u.push({r:function(){r.d&1&&(r.u.splice(-1,1),r.e())},t:function(){}}),this.d=3},n.prototype.e=function(){for(var r=0,t=0,e=0,a=0,i=this.u;a<i.length;a++){var s=i[a];e+=46+s.f.length+tr(s.extra)+(s.o?s.o.length:0)}for(var h=new z(e+22),v=0,u=this.u;v<u.length;v++){var s=u[v];cr(h,r,s,s.f,s.u,-s.c-2,t,s.o),r+=46+s.f.length+tr(s.extra)+(s.o?s.o.length:0),t+=s.b}Nr(h,r,this.u.length,e,t),this.ondata(null,h,!0),this.d=2},n.prototype.terminate=function(){for(var r=0,t=this.u;r<t.length;r++){var e=t[r];e.t()}this.d=2},n})();function on(n,r){r||(r={});var t={},e=[];Hr(n,"",t,r);var a=0,i=0;for(var s in t){var h=t[s],v=h[0],u=h[1],f=u.level==0?0:8,o=vr(s),l=o.length,p=u.comment,w=p&&vr(p),g=w&&w.length,x=tr(u.extra);l>65535&&M(11);var F=f?br(v,u):v,D=F.length,A=Pr();A.p(v),e.push(Tr(u,{size:v.length,crc:A.d(),c:F,f:o,m:w,u:l!=s.length||w&&p.length!=g,o:a,compression:f})),a+=30+l+x+D,i+=76+2*(l+x)+(g||0)+D}for(var T=new z(i+22),Z=a,E=i-a,C=0;C<e.length;++C){var o=e[C];cr(T,o.o,o,o.f,o.u,o.c.length);var y=30+o.f.length+tr(o.extra);T.set(o.c,o.o+y),cr(T,a,o,o.f,o.u,o.c.length,o.o,o.m),a+=16+y+(o.m?o.m.length:0)}return Nr(T,a,e.length,E,Z),T}export{tn as a,en as b,an as c,on as d};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import{a as y,b as M,c as F,d as v,e as $,f as k,g as E,h as S,i as I}from"./chunk-ZMK3UZZE.js";import{a as j}from"./chunk-JH3H3JWA.js";import{a as _}from"./chunk-JS56KC3I.js";import"./chunk-U33KANV7.js";function U(t,a){return`${String(t||"scene").split(/[\\/]/).pop().split(/[?#]/)[0].replace(/[<>:"|*\x00-\x1f\x7f]/g,"_").replace(/\.(?:stl|obj|3mf|step|stp|iges|igs|zip|vsb|vsj)$/i,"").replace(/[. ]+$/g,"").slice(0,160)||"scene"}.${a}`}function L(t={}){let a={stp:"step",igs:"iges"},l=String(t.format||"").toLowerCase(),f=a[l]||l;if(!["stl","obj","3mf","step","iges"].includes(f))throw new Error("Export format must be stl, obj, 3mf, step or iges");let n=t.units??"mm";if(!["mm","inch"].includes(n))throw new Error("Export units must be mm or inch");for(let m of["apply_transforms","colors"])if(t[m]!==void 0&&typeof t[m]!="boolean")throw new Error(`${m} must be a boolean`);if(t.on_progress!==void 0&&typeof t.on_progress!="function")throw new Error("on_progress must be a function");let e=t.colors!==!1&&["obj","3mf"].includes(f),p=f==="obj"&&e?"zip":f;return{format:f,units:n,colors:e,apply_transforms:t.apply_transforms!==!1,filename:U(t.filename,p)}}function A(t,a){let l=t.reduce((n,e)=>n+e.geometry.triangles,0);return 67108864+l*{stl:192,obj:2400,"3mf":3e3,step:12e3,iges:4e3}[a.format]+t.length*4096}function z(t,a,l){let f=t.reduce((o,i)=>o+i.positions.length/9,0);if(f>4294967295)throw new Error("STL triangle count limit exceeded");a.add(84+f*50);let n=new Uint8Array(84);n.set(new TextEncoder().encode("Binary STL by ViewSTL 2")),new DataView(n.buffer).setUint32(80,f,!0);let e=[n],p,m,c=0,d=0;for(let o of t)for(let i=0;i<o.positions.length;i+=9){(!p||c===p.length)&&(p=new Uint8Array(Math.min(f-d,16384)*50),m=new DataView(p.buffer),e.push(p),c=0);let{vertices:r,normal:g}=$(o,i),w=[...g,...r.flat()];for(let s=0;s<w.length;s++){if(!Number.isFinite(Math.fround(w[s])))throw new Error("STL coordinate exceeds float32 range");m.setFloat32(c+s*4,w[s],!0)}c+=50,d++,l()}return new Blob(e,{type:"model/stl"})}async function D(t,a,l,f,n){let e=new v(l),p=new v(l),m=new Map;e.write(`# ViewSTL mesh export; units: ${a.units}
|
|
2
|
+
`),a.colors&&e.write(`mtllib materials.mtl
|
|
3
|
+
`);let c=0,d=0,o;for(let r of t){let g=String(r.name).replace(/[^\p{L}\p{N}_.-]/gu,"_").slice(0,160)||"model";e.write(`o model_${r.id}_${g}
|
|
4
|
+
s off
|
|
5
|
+
`);for(let w=0;w<r.positions.length;w+=9){let{vertices:s,normal:h}=$(r,w);if(a.colors){let u=E(S(r,w),r.opacity),x=m.get(u);if(x===void 0){x=m.size,m.set(u,x);let b=[1,3,5].map(T=>parseInt(u.slice(T,T+2),16)/255);p.write(`newmtl material_${x}
|
|
6
|
+
Kd ${b.map(y).join(" ")}
|
|
7
|
+
d ${y(parseInt(u.slice(7,9),16)/255)}
|
|
8
|
+
illum 1
|
|
9
|
+
|
|
10
|
+
`)}x!==o&&(e.write(`usemtl material_${x}
|
|
11
|
+
`),o=x)}for(let u of s)e.write(`v ${u.map(y).join(" ")}
|
|
12
|
+
`);e.write(`vn ${h.map(y).join(" ")}
|
|
13
|
+
`),d++,e.write(`f ${[1,2,3].map(u=>`${c+u}//${d}`).join(" ")}
|
|
14
|
+
`),c+=3,n()}}let i=e.finish();return a.colors?(await import("./export-zip-EDCWH5PX.js")).zipExport([["model.obj",i],["materials.mtl",p.finish()]],f):new Blob(i,{type:"model/obj"})}function C(t){let a=[],l=new Map,f=new Uint32Array(t.positions.length/3),n=new Map,e=0,p=0,m;for(let c=0;c<t.positions.length;c+=9){let{vertices:d,degenerate:o}=$(t,c);if(o)throw new Error("3MF export requires non-degenerate triangles");m??=d[0];let[i,r,g]=d.map(s=>s.map((h,u)=>h-m[u]));p+=i[0]*(r[1]*g[2]-r[2]*g[1])+i[1]*(r[2]*g[0]-r[0]*g[2])+i[2]*(r[0]*g[1]-r[1]*g[0]);let w=d.map(s=>{let h=s.map(y).join(","),u=l.get(h);return u===void 0&&(u=a.length,l.set(h,u),a.push(s)),u});f.set(w,e),e+=3;for(let s=0;s<3;s++){let h=w[s],u=w[(s+1)%3],x=Math.min(h,u)+":"+Math.max(h,u),b=n.get(x)||{count:0,direction:0};b.count++,b.direction+=h<u?1:-1,n.set(x,b)}}for(let c of n.values())if(c.count!==2||c.direction!==0)throw new Error("3MF export requires closed meshes with consistent triangle winding; use STL or OBJ for open surfaces");if(!(p>0))throw new Error("3MF export requires positive mesh volume and outward triangle winding");return{points:a,indices:f}}async function B(t,a,l,f,n){let e=new v(l),p=new Map,m=(i,r)=>E(k(i,r),i.opacity);if(a.colors)for(let i of t)for(let r=0;r<i.positions.length;r+=3){let g=m(i,r);p.has(g)||p.set(g,p.size)}if(e.write(`<?xml version="1.0" encoding="UTF-8"?>
|
|
15
|
+
<model unit="${a.units==="inch"?"inch":"millimeter"}" xml:lang="en-US" xmlns="http://schemas.microsoft.com/3dmanufacturing/core/2015/02"${a.colors?' xmlns:m="http://schemas.microsoft.com/3dmanufacturing/material/2015/02" recommendedextensions="m"':""}>
|
|
16
|
+
<metadata name="Application">ViewSTL</metadata>
|
|
17
|
+
<resources>
|
|
18
|
+
`),a.colors){e.write(`<m:colorgroup id="1">
|
|
19
|
+
`);for(let i of p.keys())e.write(`<m:color color="${i}"/>
|
|
20
|
+
`);e.write(`</m:colorgroup>
|
|
21
|
+
`)}for(let i=0;i<t.length;i++){let r=t[i],{points:g,indices:w}=C(r);e.write(`<object id="${i+2}" type="model" name="${M(r.name)}"><mesh><vertices>
|
|
22
|
+
`);for(let s of g)e.write(`<vertex x="${y(s[0])}" y="${y(s[1])}" z="${y(s[2])}"/>
|
|
23
|
+
`);e.write(`</vertices><triangles>
|
|
24
|
+
`);for(let s=0;s<w.length;s+=3){let h="";a.colors&&(h=' pid="1"'+($(r,s*3).reflected?[0,2,1]:[0,1,2]).map((x,b)=>` p${b+1}="${p.get(m(r,s*3+x*3))}"`).join("")),e.write(`<triangle v1="${w[s]}" v2="${w[s+1]}" v3="${w[s+2]}"${h}/>
|
|
25
|
+
`),n()}e.write(`</triangles></mesh></object>
|
|
26
|
+
`)}e.write(`</resources><build>
|
|
27
|
+
`),t.forEach((i,r)=>e.write(`<item objectid="${r+2}"/>
|
|
28
|
+
`)),e.write(`</build></model>
|
|
29
|
+
`);let c=i=>{let r=new v(l);return r.write(i),r.finish()},d=[["3D/3dmodel.model",e.finish()],["[Content_Types].xml",c('<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="model" ContentType="application/vnd.ms-package.3dmanufacturing-3dmodel+xml"/></Types>')],["_rels/.rels",c('<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rel0" Type="http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel" Target="/3D/3dmodel.model"/></Relationships>')]],o=(await import("./export-zip-EDCWH5PX.js")).zipExport(d,f);return o.slice(0,o.size,"model/3mf")}async function K(t,a,l=j,f=()=>{}){let n=L(a);if(!Array.isArray(t)||!t.length)throw new Error("No models to export");let e=0;for(let o of t){if(!(o.positions instanceof Float32Array)||!o.positions.length||o.positions.length%9)throw new Error("Invalid export geometry");if(o.matrix?.length!==16||Array.from(o.matrix).some(i=>!Number.isFinite(i)))throw new Error("Invalid export transform");if(o.colors&&(!(o.colors instanceof Float32Array)||o.colors.length!==o.positions.length))throw new Error("Invalid export colors");if(n.colors){for(let i of[o.colors,o.color])if(i){for(let r of i)if(!Number.isFinite(r)||r<0||r>1)throw new Error("Invalid export colors")}if(!Number.isFinite(o.opacity)||o.opacity<0||o.opacity>1)throw new Error("Invalid export opacity")}e+=o.positions.length/9}if(e>l.max_triangles)throw new Error("Export triangle limit exceeded");_(l,A(t.map(o=>({geometry:{triangles:o.positions.length/9}})),n),"export");let p=n.format==="3mf"||n.format==="obj"&&n.colors,m=new F(p?l.max_uncompressed_bytes:l.max_file_bytes),c=I(e,f),d;if(n.format==="stl")d=z(t,m,c);else if(n.format==="obj")d=await D(t,n,m,l,c);else if(n.format==="3mf")d=await B(t,n,m,l,c);else{let o=await import("./export-cad-QPBT756V.js");d=n.format==="step"?o.writeSTEP(t,n,m,c):o.writeIGES(t,n,m,c)}return f({loaded:e,total:e,phase:"complete"}),{blob:d,filename:n.filename,format:n.format,units:n.units,model_ids:t.map(o=>o.id),triangles:e,representation:"mesh"}}export{K as exportGeometry};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{a as w,d as u,e as H}from"./chunk-ZMK3UZZE.js";import{c as G,e as x}from"./chunk-U33KANV7.js";var X=p=>{let N=w(p).toUpperCase(),[I,$]=N.split("E");return(I.includes(".")?I:I+".")+($===void 0?"":"E"+$)},v=p=>"'"+String(p).replace(/[\x00-\x1f\x7f]/g," ").replace(/['\\\u0080-\uffff]/g,N=>N==="'"?"''":N==="\\"?"\\\\":"\\X2\\"+N.charCodeAt(0).toString(16).padStart(4,"0").toUpperCase()+"\\X0\\")+"'";function ee(p,N,I,$){let E=new u(I);E.write(`ISO-10303-21;
|
|
2
|
+
HEADER;
|
|
3
|
+
FILE_DESCRIPTION(('ViewSTL mesh surfaces'),'2;1');
|
|
4
|
+
`),E.write(`FILE_NAME('scene.step','${new Date().toISOString().slice(0,19)}',(''),(''),'ViewSTL','ViewSTL','');
|
|
5
|
+
FILE_SCHEMA(('AUTOMOTIVE_DESIGN'));
|
|
6
|
+
ENDSEC;
|
|
7
|
+
DATA;
|
|
8
|
+
`);let C=0,e=o=>{let n=++C;return E.write(`#${n}=${o};
|
|
9
|
+
`),`#${n}`},D=o=>e(`CARTESIAN_POINT('',(${o.map(X).join(",")}))`),A=o=>e(`DIRECTION('',(${o.map(X).join(",")}))`),c=e("APPLICATION_CONTEXT('automotive design')");e(`APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,${c})`);let f=e(`PRODUCT_CONTEXT('',${c},'mechanical')`),R=e(`PRODUCT_DEFINITION_CONTEXT('part definition',${c},'design')`),L=e("(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.))"),d=L;if(N.units==="inch"){let o=e("DIMENSIONAL_EXPONENTS(1.,0.,0.,0.,0.,0.,0.)"),n=e(`LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(25.4),${L})`);d=e(`(CONVERSION_BASED_UNIT('INCH',${n})LENGTH_UNIT()NAMED_UNIT(${o}))`)}let h=e("(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.))"),a=e("(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT())"),U=e(`UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-7),${d},'distance_accuracy_value','')`),g=e(`(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((${U}))GLOBAL_UNIT_ASSIGNED_CONTEXT((${d},${h},${a}))REPRESENTATION_CONTEXT('',''))`);for(let o of p){let n=e(`PRODUCT(${v(o.id)},${v(o.name)},'',(${f}))`),s=e(`PRODUCT_DEFINITION_FORMATION('','',${n})`),t=e(`PRODUCT_DEFINITION('design','',${s},${R})`),r=e(`PRODUCT_DEFINITION_SHAPE('','',${t})`),S=[];for(let i=0;i<o.positions.length;i+=9){let{vertices:T,normal:m,degenerate:P}=H(o,i);if(P)throw new Error("STEP export requires non-degenerate triangles");let M=T.map(D),F=M.map(O=>e(`VERTEX_POINT('',${O})`)),V=[];for(let O=0;O<3;O++){let Y=A(x(G(T[(O+1)%3],T[O]))),z=e(`VECTOR('',${Y},1.)`),J=e(`LINE('',${M[O]},${z})`),K=e(`EDGE_CURVE('',${F[O]},${F[(O+1)%3]},${J},.T.)`);V.push(e(`ORIENTED_EDGE('',*,*,${K},.T.)`))}let j=e(`EDGE_LOOP('',(${V.join(",")}))`),B=e(`FACE_OUTER_BOUND('',${j},.T.)`),b=A(m),y=A(x(G(T[1],T[0]))),k=e(`AXIS2_PLACEMENT_3D('',${M[0]},${b},${y})`),q=e(`PLANE('',${k})`),W=e(`ADVANCED_FACE('',(${B}),${q},.T.)`);S.push(e(`OPEN_SHELL('',(${W}))`)),$()}let l=`#${++C}`;E.write(`${l}=SHELL_BASED_SURFACE_MODEL('',(`),S.forEach((i,T)=>E.write((T?",":"")+i)),E.write(`));
|
|
10
|
+
`);let _=e(`MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(${l}),${g})`);e(`SHAPE_DEFINITION_REPRESENTATION(${r},${_})`)}return E.write(`ENDSEC;
|
|
11
|
+
END-ISO-10303-21;
|
|
12
|
+
`),new Blob(E.finish(),{type:"model/step"})}function ne(p,N,I,$){let E=new u(I),C=new u(I),e=new u(I),D=0,A=0,c=(n,s=8)=>{let t=String(n);if(t.length>s)throw new Error("IGES record limit exceeded");return t.padStart(s," ")},f=(n,s,t)=>n.padEnd(72," ")+s+c(t,7)+`
|
|
13
|
+
`,R=(n,s)=>{let t=[],r="";return n.forEach((S,l)=>{let _=S+(l===n.length-1?";":",");if(_.length>s)throw new Error("IGES parameter exceeds record width");r.length+_.length>s&&(t.push(r),r=""),r+=_}),r&&t.push(r),t},L=(n,s,t,r=!1,S=0)=>{let l=D+1,_=A+1;for(let i of R([n,...t.split(",")],64))C.write(f(i.padEnd(64," ")+c(l),"P",++A));return E.write(f([n,_,0,0,S,0,0,0,r?"00010000":"00000000"].map(i=>c(i)).join(""),"D",++D)),E.write(f([n,0,0,A-_+1,s,0,0,"",0].map(i=>c(i)).join(""),"D",++D)),l},d=1;for(let n=0;n<p.length;n++){let s=p[n];for(let t=0;t<s.positions.length;t+=9){let{vertices:r,normal:S,degenerate:l}=H(s,t);if(l)throw new Error("IGES export requires non-degenerate triangles");for(let T of r)for(let m of T)d=Math.max(d,Math.abs(m));let _=L(106,12,"2,4,"+[...r,r[0]].flat().map(w).join(","),!0,n+1),i=S.reduce((T,m,P)=>T+m*r[0][P],0);L(108,1,[...S,i,_,0,0,0,0].map(w).join(","),!1,n+1),$()}}let h=new Date().toISOString().replace(/[-:]/g,"").replace("T",".").slice(0,15),a=n=>`${n.length}H${n}`,U=["1H,","1H;",a("ViewSTL"),a("scene.iges"),a("ViewSTL"),a("ViewSTL"),32,38,6,308,15,a("ViewSTL"),1,N.units==="inch"?1:2,a(N.units==="inch"?"IN":"MM"),1,.1,a(h),1e-7,w(d),"","",11,0,a(h)];e.write(f("ViewSTL mesh surfaces","S",1));let g=0;for(let n of R(U,72))e.write(f(n,"G",++g));let o=new u(I);return o.write(f("S"+c(1,7)+"G"+c(g,7)+"D"+c(D,7)+"P"+c(A,7),"T",1)),new Blob([...e.finish(),...E.finish(),...C.finish(),...o.finish()],{type:"model/iges"})}export{ne as writeIGES,ee as writeSTEP};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a}from"./chunk-ZMK3UZZE.js";import{b as c,c as f}from"./chunk-ZSV4PTIA.js";import"./chunk-U33KANV7.js";function w(r,o){if(r.length>o.max_archive_entries)throw new Error("Export archive entry limit exceeded");let p=[],s=new a(o.max_file_bytes),i=new f((e,t)=>{if(e)throw e;s.add(t.byteLength),p.push(t)});for(let[e,t]of r){let n=new c(e,{level:6});i.add(n);for(let u of t)n.push(u,!1);n.push(new Uint8Array,!0)}return i.end(),new Blob(p,{type:"application/zip"})}export{w as zipExport};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as re}from"./chunk-JS56KC3I.js";import{h as oe}from"./chunk-U33KANV7.js";function ae(e={}){let o=e.level??"basic";if(!["basic","detailed"].includes(o))throw new Error("Choose basic or detailed print checks");let l=(n,i,f=1e9)=>{if(!Number.isFinite(n)||n<=0||n>f)throw new Error(`Invalid ${i}`);return n},r=null;if(e.profile!=null){if(e.profile.technology!=="fdm")throw new Error("Only FDM profiles are supported");r={technology:"fdm"};for(let n of["min_wall_mm","line_width_mm"])e.profile[n]!=null&&(r[n]=l(e.profile[n],n));if(e.profile.overhang_degrees!=null&&(r.overhang_degrees=l(e.profile.overhang_degrees,"overhang angle",89.9)),e.profile.build_volume_mm!=null){if(!Array.isArray(e.profile.build_volume_mm)||e.profile.build_volume_mm.length!==3)throw new Error("Build volume requires X, Y and Z");r.build_volume_mm=e.profile.build_volume_mm.map(n=>l(n,"build volume"))}}let c=l(e.max_time_ms??3e4,"check time limit",12e4);return{level:o,profile:r,apply_transforms:e.apply_transforms!==!1,units_confirmed:e.units_confirmed===!0,max_time_ms:c}}var le=e=>64*1024**2+e*2400;var O=(e,o)=>e.map((l,r)=>l-o[r]),R=(e,o)=>e.reduce((l,r,c)=>l+r*o[c],0),C=(e,o)=>[e[1]*o[2]-e[2]*o[1],e[2]*o[0]-e[0]*o[2],e[0]*o[1]-e[1]*o[0]];function D(e,o){return[0,3,6].map(l=>Array.from(e.subarray(o*9+l,o*9+l+3)))}function fe(e,o){let l=e.length/9,r=new Float64Array(l*6);for(let i=0;i<l;i++){i%1024===0&&o();for(let f=0;f<3;f++)r[i*6+f]=Math.min(e[i*9+f],e[i*9+3+f],e[i*9+6+f]),r[i*6+f+3]=Math.max(e[i*9+f],e[i*9+3+f],e[i*9+6+f])}let c=Uint32Array.from({length:l},(i,f)=>f),n=(i,f)=>{o();let w=[1/0,1/0,1/0,-1/0,-1/0,-1/0];for(let u=i;u<f;u++)for(let m=0;m<3;m++)w[m]=Math.min(w[m],r[c[u]*6+m]),w[m+3]=Math.max(w[m+3],r[c[u]*6+m+3]);let _={b:w,start:i,end:f};if(f-i>16){let u=[0,1,2].map(z=>w[z+3]-w[z]),m=u.indexOf(Math.max(...u));c.subarray(i,f).sort((z,$)=>r[z*6+m]+r[z*6+m+3]-(r[$*6+m]+r[$*6+m+3]));let g=i+f>>>1;_.left=n(i,g),_.right=n(g,f)}return _};return{root:n(0,l),ids:c,boxes:r}}var ce=(e,o,l)=>[0,1,2].every(r=>e[r]<=o[r+3]+l&&e[r+3]+l>=o[r]);function ue(e,o,l,r){let c=(n,i,f)=>{if(r(),!!ce(n.b,i.b,o))if(!n.left&&!i.left)for(let w=n.start;w<n.end;w++)for(let _=i.start;_<i.end;_++){let u=e.ids[w],m=e.ids[_];f&&u>=m||ce(e.boxes.subarray(u*6,u*6+6),e.boxes.subarray(m*6,m*6+6),o)&&l(u,m)}else f?(c(n.left,n.left,!0),c(n.left,n.right,!1),c(n.right,n.right,!0)):n.left&&(!i.left||n.end-n.start>=i.end-i.start)?(c(n.left,i,!1),c(n.right,i,!1)):(c(n,i.left,!1),c(n,i.right,!1))};c(e.root,e.root,!0)}var G=(e,o,l)=>(o[0]-e[0])*(l[1]-e[1])-(o[1]-e[1])*(l[0]-e[0]);function me(e,o,l,r){let c=C(O(e[1],e[0]),O(e[2],e[0])),n=C(O(o[1],o[0]),O(o[2],o[0])),i=Math.hypot(...c),f=Math.hypot(...n);if(!i||!f)return 0;let w=o.map(d=>R(O(d,e[0]),c)/i),_=e.map(d=>R(O(d,o[0]),n)/f);if([w,_].some(d=>d.every(b=>b>r)||d.every(b=>b<-r)))return 0;let u=C(c.map(d=>d/i),n.map(d=>d/f));if(Math.hypot(...u)<1e-10){if(Math.max(...w.map(Math.abs))>r)return 0;let d=c.map(Math.abs).indexOf(Math.max(...c.map(Math.abs))),b=A=>A.filter((S,I)=>I!==d);if(l>=2){let A=(I,k)=>I.every((P,p)=>P===k[p]),S=e.filter(I=>o.some(k=>A(I,k)));if(S.length===3)return 1;if(S.length===2){let I=e.find(P=>!S.some(p=>A(P,p))),k=o.find(P=>!S.some(p=>A(P,p)));return G(b(S[0]),b(S[1]),b(I))*G(b(S[0]),b(S[1]),b(k))>0?1:0}}let E=e.map(b),q=o.map(b),B=Math.sign(G(...q));for(let A=0;A<3&&E.length;A++){let S=q[A],I=q[(A+1)%3],k=[];for(let P=0;P<E.length;P++){let p=E[P],j=E[(P+1)%E.length],x=B*G(S,I,p),Q=B*G(S,I,j);if(x>=0&&k.push(p),x>=0!=Q>=0){let K=x/(x-Q);k.push(p.map((Z,W)=>Z+(j[W]-Z)*K))}}E=k}return Math.abs(E.reduce((A,S,I)=>{let k=E[(I+1)%E.length],P=E[0];return A+(S[0]-P[0])*(k[1]-P[1])-(S[1]-P[1])*(k[0]-P[0])},0))/2>r*r*4?1:0}if(l>=2)return 0;let m=u.map(d=>d/Math.hypot(...u)),g=(d,b)=>{let E=[];for(let q=0;q<3;q++){Math.abs(b[q])<=r&&E.push(R(d[q],m));let B=(q+1)%3;if(b[q]*b[B]<0){let V=b[q]/(b[q]-b[B]);E.push(R(d[q].map((A,S)=>A+(d[B][S]-A)*V),m))}}return E.length?[Math.min(...E),Math.max(...E)]:null},z=g(e,_),$=g(o,w);if(!z||!$)return 0;let L=Math.min(z[1],$[1])-Math.max(z[0],$[0]);return L>r?1:l?0:L>=-r?2:0}function ye(e,o,l,r){let c=O(l[1],l[0]),n=O(l[2],l[0]),i=C(o,n),f=R(c,i);if(Math.abs(f)<=Math.hypot(...c)*Math.hypot(...n)*1e-12)return null;let w=O(e,l[0]),_=R(w,i)/f,u=C(w,c),m=R(o,u)/f,g=R(n,u)/f;return _<-1e-10||m<-1e-10||_+m>1+1e-10||g<=r?null:{t:g,edge:Math.min(_,m,1-_-m)<1e-8}}function ve(e,o,l,r){let c=0,n=1/0;for(let i=0;i<3;i++)if(Math.abs(o[i])<1e-15){if(e[i]<l[i]-r||e[i]>l[i+3]+r)return!1}else{let f=(l[i]-r-e[i])/o[i],w=(l[i+3]+r-e[i])/o[i];if(c=Math.max(c,Math.min(f,w)),n=Math.min(n,Math.max(f,w)),c>n)return!1}return!0}function ie(e,o,l,r,c,n,i){let f=[],w=_=>{if(i(),!!ve(l,r,_.b,c))if(_.left)w(_.left),w(_.right);else for(let u=_.start;u<_.end;u++){let m=e.ids[u];if(!n(m))continue;let g=ye(l,r,D(o,m),c);g&&f.push({...g,id:m})}};return w(e.root),f}var we=[["degenerate_faces","Degenerate triangles","error"],["near_degenerate_faces","Very small or thin triangles","warning"],["duplicate_faces","Duplicate triangles","error"],["boundary_edges","Open boundaries","error"],["nonmanifold_edges","Non-manifold edges","error"],["nonmanifold_vertices","Non-manifold vertices","error"],["winding","Triangle winding","error"],["components","Separate connected parts","info"],["intersections","Self-intersections","error"],["shell_orientation","Shell orientation and volume","error"],["units","Physical units","warning"],["build_volume","Build volume fit","warning"],["overhangs","Overhangs","warning"],["bed_contact","Bed contact","warning"],["thin_walls","Thin walls / small features","warning"]];function Se(e,o={},l={},r=()=>{}){let c=ae(o),n=e.positions.length/9;if(!(e.positions instanceof Float32Array)||!Number.isSafeInteger(n)||n<1||e.matrix?.length!==16||Array.from(e.matrix).some(p=>!Number.isFinite(p)))throw new Error("Invalid print-check geometry");if(n>(l.max_triangles??5e6))throw new Error("Print check triangle limit exceeded");re(l,le(n),"print check");let i=performance.now(),f=i+c.max_time_ms,w=0,_="Topology",u=()=>{if(++w%128===0){if(performance.now()>f)throw new Error("PRINT_TIME_LIMIT");r({phase:_,elapsed_ms:performance.now()-i})}},m=we.map(([p,j,x])=>({code:p,label:j,severity:x,status:"not_run",count:0,triangle_ids:[],edge_vertices:[],message:"Not run"})),g=p=>m.find(j=>j.code===p),z=(p,j,x)=>Object.assign(g(p),{status:j,message:x}),$=(p,j)=>{let x=g(p);x.count++,j!=null&&x.triangle_ids.length<128&&x.triangle_ids.push(j)},L=(p,j)=>{let x=g(p);x.status=x.count?"issue":"pass",x.message=j||`${x.count} found`},d=new Float64Array(e.positions.length),b=[1/0,1/0,1/0],E=[-1/0,-1/0,-1/0],q=!1,B,V=[],A=[],S,I=0,k={model_id:e.id,name:e.name,triangles:n,checks:m,settings:c,dimensions_mm:null,volume_mm3:null,volume_valid:!1,elapsed_ms:0,summary:"incomplete"};try{r({phase:_,elapsed_ms:0});for(let t=0;t<e.positions.length;t+=3){t%3072===0&&u();let s=oe(e.matrix,Array.from(e.positions.subarray(t,t+3)));if(s.some(a=>!Number.isFinite(a)))throw new Error("Invalid print-check coordinate");d.set(s,t);for(let a=0;a<3;a++)b[a]=Math.min(b[a],s[a]),E[a]=Math.max(E[a],s[a])}k.dimensions_mm=E.map((t,s)=>t-b[s]);let p=Math.max(...k.dimensions_mm),j=Math.max(...b.map(Math.abs),...E.map(Math.abs));I=Math.max(p*1e-10,j*Number.EPSILON*64,1e-12),k.tolerance_mm=I;for(let t=0;t<d.length;t++)d[t]-=b[t%3];let x=new Uint32Array(n*3),Q=[],K=new Map,Z=new Map,W=new Map,H=[],J=Int32Array.from({length:n},(t,s)=>s),te=t=>{for(;J[t]!==t;)J[t]=J[J[t]],t=J[t];return t},he=(t,s)=>{t=te(t),s=te(s),t!==s&&(J[s]=t)};for(let t=0;t<n;t++){u();for(let h=0;h<3;h++){let M=t*9+h*3,F=Array.from(e.positions.subarray(M,M+3)).join(","),T=K.get(F);T===void 0&&(T=Q.length,K.set(F,T),Q.push(M),H.push([])),x[t*3+h]=T,H[T].push(t)}let s=D(d,t),a=C(O(s[1],s[0]),O(s[2],s[0])),y=Math.hypot(...a);y?y<=I*Math.max(...s.map((h,M)=>Math.hypot(...O(h,s[(M+1)%3]))))&&$("near_degenerate_faces",t):$("degenerate_faces",t);let v=Array.from(x.subarray(t*3,t*3+3)).sort((h,M)=>h-M).join(":");W.has(v)?$("duplicate_faces",t):W.set(v,t);for(let h=0;h<3;h++){let M=x[t*3+h],F=x[t*3+(h+1)%3],T=Math.min(M,F)+":"+Math.max(M,F),N=Z.get(T);N||(N={a:M,b:F,faces:[],direction:0},Z.set(T,N)),N.faces.length&&he(t,N.faces[0]),N.faces.push(t),N.direction+=M<F?1:-1}}let ne=new Set;for(let t of Z.values()){u();let s;if(t.faces.length===1?s="boundary_edges":t.faces.length!==2?(s="nonmanifold_edges",ne.add(t.a),ne.add(t.b)):t.direction!==0&&(s="winding"),s){$(s,t.faces[0]);let a=g(s);a.edge_vertices.length<256*6&&a.edge_vertices.push(...e.positions.subarray(Q[t.a],Q[t.a]+3),...e.positions.subarray(Q[t.b],Q[t.b]+3))}}for(let t=0;t<H.length;t++){if(u(),ne.has(t)){$("nonmanifold_vertices",H[t][0]);continue}let s=new Set(H[t]),a=new Set,y=[H[t][0]];for(;y.length;){u();let v=y.pop();if(!a.has(v)){a.add(v);for(let h=0;h<3;h++){let M=x[v*3+h],F=x[v*3+(h+1)%3];if(M!==t&&F!==t)continue;let T=Z.get(Math.min(M,F)+":"+Math.max(M,F));for(let N of T.faces)a.has(N)||y.push(N)}}}a.size!==s.size&&$("nonmanifold_vertices",H[t][0])}let X=new Map;S=new Int32Array(n);for(let t=0;t<n;t++){u();let s=te(t);X.has(s)||(X.set(s,X.size),A.push([]),V.push(0));let a=X.get(s);S[t]=a,A[a].push(t);let y=D(d,t),v=D(d,A[a][0])[0];V[a]+=R(O(y[0],v),C(O(y[1],v),O(y[2],v)))/6}for(let t of["degenerate_faces","near_degenerate_faces","duplicate_faces","boundary_edges","nonmanifold_edges","nonmanifold_vertices","winding"])L(t);g("components").count=X.size,z("components",X.size>1?"issue":"pass",`${X.size} connected part${X.size===1?"":"s"}. Separate parts can be intentional.`),q=!0,z("units",e.source_units||c.units_confirmed?"pass":"inconclusive",e.source_units?`File units: ${e.source_units}; measurements in mm.`:c.units_confirmed?"Current scale confirmed as millimetres.":"File has no physical units. Confirm the current millimetre scale before using size estimates.");let Y=c.profile;Y?.build_volume_mm&&(g("build_volume").count=k.dimensions_mm.filter((t,s)=>t>Y.build_volume_mm[s]+I).length,L("build_volume",g("build_volume").count?"Exceeds the supplied build volume in the current orientation. Try another orientation or scale in your slicer.":"Fits by dimensions only in the current orientation; placement and printer exclusions are not checked."));let se=m.filter(t=>t.severity==="error"&&t.status!=="not_run").every(t=>t.status==="pass");if(c.level==="detailed"){_="Spatial index",B=fe(d,u),_="Self-intersections";let t=0;if(ue(B,I,(s,a)=>{u();let y=Array.from(x.subarray(s*3,s*3+3)).filter(h=>x.subarray(a*3,a*3+3).includes(h)).length,v=me(D(d,s),D(d,a),y,I);if(v===1){$("intersections",s);let h=g("intersections");h.triangle_ids.length<128&&h.triangle_ids.push(a)}else v===2&&t++},u),L("intersections"),t&&!g("intersections").count&&z("intersections","inconclusive",`${t} near-contact pairs require inspection at the reported numerical tolerance.`),se&&g("intersections").status==="pass"){_="Shell containment";let s=!1;for(let a=0;a<A.length;a++){u();let y=D(d,A[a][0]),v=[0,1,2].map(M=>(y[0][M]+y[1][M]+y[2][M])/3),h=null;for(let M of[[1,.371,.529],[.217,1,.413],[.317,.193,1]]){let F=ie(B,d,v,M,I,N=>S[N]!==a,u);if(F.some(N=>N.edge))continue;let T=new Map;for(let N of F)T.set(S[N.id],(T.get(S[N.id])||0)+1);h=[...T.values()].filter(N=>N%2===1).length;break}if(h===null){s=!0;continue}(Math.abs(V[a])<=I**3||Math.sign(V[a])!==(h%2?-1:1))&&$("shell_orientation",A[a][0])}L("shell_orientation","Outer shells must face outward; cavity shells face inward."),s&&!g("shell_orientation").count&&z("shell_orientation","inconclusive","Shell containment is numerically ambiguous."),g("shell_orientation").status==="pass"&&(k.volume_mm3=V.reduce((a,y)=>a+y,0),k.volume_valid=!0)}else z("shell_orientation","inconclusive","Requires a closed, consistently wound mesh without intersections.")}else z("shell_orientation","not_run","Run Detailed check for intersections, nested shells and validated volume.");if(Y){_="FDM estimates";let t=g("units").status==="pass";if(!t)for(let s of["build_volume","bed_contact","thin_walls"])z(s,"inconclusive","Confirm physical units first.");if(Y.overhang_degrees!=null)if(!se||(c.level==="detailed"?!k.volume_valid:A.length!==1||V[0]<=0))z("overhangs","inconclusive","Fix triangle winding and mesh defects before estimating overhangs.");else{let s=-Math.sin(Y.overhang_degrees*Math.PI/180),a=0;for(let y=0;y<n;y++){u();let v=D(d,y),h=C(O(v[1],v[0]),O(v[2],v[0])),M=Math.hypot(...h);v.every(F=>F[2]<=I*8)||h[2]/M<s&&($("overhangs",y),a+=M/2)}g("overhangs").estimated=!0,g("overhangs").area_mm2=a,L("overhangs",`Potential support regions above ${Y.overhang_degrees}\xB0 from vertical. +Z is up; bridges/supports are not simulated.`)}if(t){let s=0;for(let y=0;y<n;y++){u();let v=D(d,y);v.every(h=>h[2]<=I*8)&&(s+=Math.hypot(...C(O(v[1],v[0]),O(v[2],v[0])))/2)}g("bed_contact").area_mm2=s,g("bed_contact").estimated=!0,g("bed_contact").count=s<=I**2?1:0,L("bed_contact","Contact area after virtually lowering this model onto an XY bed. Adhesion/stability are not predicted; scene placement is unchanged.");let a=Y.min_wall_mm??Y.line_width_mm;if(a!=null&&c.level==="detailed"&&k.volume_valid){_="Sampled wall thickness";let y=0,v=0,h=1/0,M=Math.max(1,Math.ceil(n/2048));for(let F=0;F<n;F+=M){u();let T=D(d,F),N=C(O(T[1],T[0]),O(T[2],T[0])),de=Math.hypot(...N),pe=N.map(U=>-U/de),ge=[0,1,2].map(U=>(T[0][U]+T[1][U]+T[2][U])/3),ee=ie(B,d,ge,pe,I*8,U=>U!==F,u).sort((U,_e)=>U.t-_e.t);if(!ee.length||ee[0].edge){v++;continue}y++,h=Math.min(h,ee[0].t),ee[0].t<a&&$("thin_walls",F)}Object.assign(g("thin_walls"),{estimated:!0,samples:y,unresolved_samples:v,minimum_sampled_mm:Number.isFinite(h)?h:null}),z("thin_walls",g("thin_walls").count?"issue":"inconclusive",`${y} face-centre samples; threshold ${a} mm. Sampling can miss thin features and does not prove a minimum wall thickness.`)}else a!=null&&z("thin_walls","inconclusive","Requires Detailed check with valid closed volume and confirmed units.")}}}catch(p){if(p.message!=="PRINT_TIME_LIMIT")throw p;for(let j of m)j.status==="not_run"&&(j.message=`Time limit reached during ${_}; this check was not completed.`);if(!q)for(let j of m.slice(0,8))j.status="inconclusive",j.message="Topology check exceeded the time limit; counts are partial.";k.limit_reason="time"}let P=m.slice(0,11);return k.summary=m.some(p=>p.status==="issue"&&p.severity!=="info")?"issues_found":P.some(p=>["not_run","inconclusive"].includes(p.status))||m.some(p=>p.status==="inconclusive")?"incomplete":"no_issues_found",k.elapsed_ms=performance.now()-i,k}export{Se as checkMesh};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a}from"./chunk-R3HNTB5A.js";import"./chunk-ZSV4PTIA.js";import{e as p}from"./chunk-JH3H3JWA.js";import"./chunk-JS56KC3I.js";import"./chunk-U33KANV7.js";function g(i,t,l,n){let o=[];for(let e of t)o.push({id:e.id,bin:p(e,e.scale,e.center)}),n({loaded:o.length,total:t.length,phase:"exporting"});n({loaded:t.length,total:t.length,phase:"packaging"});let c=a({vsj:i,files:o},l);return n({loaded:t.length,total:t.length,phase:"complete"}),new Blob([c],{type:"application/zip"})}export{g as exportSceneArchive};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as p}from"./chunk-R3HNTB5A.js";import"./chunk-ZSV4PTIA.js";import{b as d}from"./chunk-JH3H3JWA.js";import"./chunk-JS56KC3I.js";import"./chunk-U33KANV7.js";var w=["flat","smooth","wireframe","edges","mesh","xray","studio","orientation"];function h(e,a){if(!w.includes(e))throw new Error("Invalid display mode");if(typeof a!="boolean")throw new Error("smooth_shading must be a boolean");return{display:e,smooth_shading:e==="smooth"||a}}function g(e){if(e==null)return null;if(!["x","y","z"].includes(e.axis))throw new Error("Section axis must be x, y or z");if(!Number.isFinite(e.position)||e.position<0||e.position>1)throw new Error("Section position must be between 0 and 1");if(e.flip!==void 0&&typeof e.flip!="boolean")throw new Error("Section flip must be a boolean");return{axis:e.axis,position:e.position,flip:e.flip??!1}}var c=["x","y","z"],l=(e,a,n=!1)=>{if(typeof e!="number"||!Number.isFinite(e)||n&&e<=0)throw new Error(`Invalid scene ${a}`);return e},u=e=>String(e||"").match(/\.(vsb|vsj)(?:[?#]|$)/i)?.[1].toLowerCase()||"";function m(e,a){if(!e||!Array.isArray(e.models)||!e.models.length||e.models.length>a.max_archive_entries)throw new Error("Invalid, empty or oversized scene manifest");let n={models:[]};for(let o of["center_models","auto_rotate","grid"])if(e[o]!==void 0){if(typeof e[o]!="boolean")throw new Error(`Invalid scene ${o}`);n[o]=e[o]}if(e.bg_color!==void 0&&(e.bg_color!=="transparent"&&d(e.bg_color),n.bg_color=e.bg_color),e.infinite_grid&&(n.infinite_grid={spacing:l(e.infinite_grid.spacing,"grid spacing",!0),height:l(e.infinite_grid.height,"grid height")}),e.camera_state){let o={};for(let r of["position","target","up"])o[r]=Object.fromEntries(c.map(s=>[s,l(e.camera_state[r]?.[s],"camera")]));let t=c.map(r=>o.position[r]-o.target[r]),i=c.map(r=>o.up[r]);if(!Math.hypot(...t)||!Math.hypot(...i)||!Math.hypot(t[1]*i[2]-t[2]*i[1],t[2]*i[0]-t[0]*i[2],t[0]*i[1]-t[1]*i[0]))throw new Error("Invalid scene camera");n.camera_state=o}for(let o of e.models){if(!o||typeof o.filename!="string"||!o.filename||o.filename.length>8192||/[\x00-\x1f\x7f]/.test(o.filename))throw new Error("Scene model filename is missing or invalid");if(u(o.filename))throw new Error("Nested scene references are not supported");let t={filename:o.filename};typeof o.orig_filename=="string"&&(t.orig_filename=o.orig_filename.slice(0,200));for(let i of c)for(let r of["","rotation","scale"]){let s=r+i;o[s]!==void 0&&(t[s]=l(o[s],s,r==="scale"))}if(o.scale!==void 0&&(t.scale=l(o.scale,"scale",!0)),o.opacity!==void 0&&(t.opacity=l(o.opacity,"opacity"),t.opacity<0||t.opacity>1))throw new Error("Invalid scene opacity");if(o.color!=null&&(o.color!=="transparent"&&d(o.color),t.color=o.color),t.units=o.units??"mm",!["mm","inch"].includes(t.units))throw new Error("Invalid scene units");if(Object.assign(t,h(o.display??"flat",o.smooth_shading??o.display==="smooth")),t.section=g(o.section),o.view_edges!==void 0&&typeof o.view_edges!="boolean")throw new Error("Invalid scene edges");t.view_edges=!!o.view_edges,n.models.push(t)}return n}function S(e,a,n){let o=Object.create(null),t=e;if(a==="vsb"){let i=p(e,n);if(t=i.get("json_data.vsj"),!t)throw new Error("VSB manifest json_data.vsj is missing");let r=m(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(t)),n);for(let s of r.models){let f=i.get(s.filename);if(!f)throw new Error("VSB model file is missing: "+s.filename);o[s.filename]=f.buffer.slice(f.byteOffset,f.byteOffset+f.byteLength)}return{scene:r,files:o}}return{scene:m(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(t)),n),files:null}}export{S as readSceneDocument};
|