@loaders.gl/textures 4.2.0-alpha.5 → 4.2.0-beta.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.
Files changed (49) hide show
  1. package/dist/basis-loader.d.ts +61 -3
  2. package/dist/basis-loader.d.ts.map +1 -1
  3. package/dist/basis-loader.js +5 -3
  4. package/dist/basis-worker-node.js +348 -335
  5. package/dist/basis-worker.js +32 -49
  6. package/dist/compressed-texture-loader.d.ts +43 -4
  7. package/dist/compressed-texture-loader.d.ts.map +1 -1
  8. package/dist/compressed-texture-loader.js +2 -0
  9. package/dist/compressed-texture-worker.js +33 -47
  10. package/dist/compressed-texture-writer.d.ts +24 -2
  11. package/dist/compressed-texture-writer.d.ts.map +1 -1
  12. package/dist/compressed-texture-writer.js +0 -8
  13. package/dist/crunch-loader.d.ts +23 -2
  14. package/dist/crunch-loader.d.ts.map +1 -1
  15. package/dist/crunch-loader.js +2 -0
  16. package/dist/crunch-worker.js +33 -47
  17. package/dist/dist.dev.js +96 -81
  18. package/dist/dist.min.js +2 -2
  19. package/dist/index.cjs +23 -15
  20. package/dist/index.cjs.map +3 -3
  21. package/dist/index.d.ts +5 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/ktx2-basis-writer-worker-node.js +329 -328
  25. package/dist/ktx2-basis-writer-worker.js +15 -43
  26. package/dist/ktx2-basis-writer.d.ts +18 -3
  27. package/dist/ktx2-basis-writer.d.ts.map +1 -1
  28. package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -1
  29. package/dist/lib/parsers/basis-module-loader.js +6 -4
  30. package/dist/lib/parsers/crunch-module-loader.d.ts +2 -1
  31. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -1
  32. package/dist/lib/parsers/crunch-module-loader.js +6 -4
  33. package/dist/lib/utils/version.js +1 -1
  34. package/dist/npy-loader.d.ts +40 -5
  35. package/dist/npy-loader.d.ts.map +1 -1
  36. package/dist/npy-loader.js +2 -0
  37. package/dist/npy-worker.js +6 -2
  38. package/dist/workers/crunch-worker.d.ts +15 -17
  39. package/dist/workers/crunch-worker.d.ts.map +1 -1
  40. package/package.json +7 -9
  41. package/src/basis-loader.ts +27 -7
  42. package/src/compressed-texture-loader.ts +14 -6
  43. package/src/compressed-texture-writer.ts +5 -15
  44. package/src/crunch-loader.ts +10 -2
  45. package/src/index.ts +10 -1
  46. package/src/ktx2-basis-writer.ts +2 -2
  47. package/src/lib/parsers/basis-module-loader.ts +6 -4
  48. package/src/lib/parsers/crunch-module-loader.ts +8 -6
  49. package/src/npy-loader.ts +13 -5
package/dist/dist.min.js CHANGED
@@ -4,7 +4,7 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['loaders'] = factory();
6
6
  else root['loaders'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var Qt=Object.create;var k=Object.defineProperty;var er=Object.getOwnPropertyDescriptor;var tr=Object.getOwnPropertyNames;var rr=Object.getPrototypeOf,or=Object.prototype.hasOwnProperty;var Ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),nr=(e,t)=>{for(var r in t)k(e,r,{get:t[r],enumerable:!0})},V=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of tr(t))!or.call(e,s)&&s!==r&&k(e,s,{get:()=>t[s],enumerable:!(o=er(t,s))||o.enumerable});return e},W=(e,t,r)=>(V(e,t,"default"),r&&V(r,t,"default")),se=(e,t,r)=>(r=e!=null?Qt(rr(e)):{},V(t||!e||!e.__esModule?k(r,"default",{value:e,enumerable:!0}):r,e)),sr=e=>V(k({},"__esModule",{value:!0}),e);var We=Ve((Fo,ke)=>{ke.exports=globalThis.loaders});var ie=Ve(()=>{});var v={};nr(v,{BASIS_EXTERNAL_LIBRARIES:()=>G,BasisLoader:()=>ft,BasisWorkerLoader:()=>Re,CRUNCH_EXTERNAL_LIBRARIES:()=>Dt,CompressedTextureLoader:()=>Tt,CompressedTextureWorkerLoader:()=>Te,CompressedTextureWriter:()=>Pt,CrunchLoader:()=>Ce,CrunchWorkerLoader:()=>Ce,GL_EXTENSIONS_CONSTANTS:()=>n,KTX2BasisWriter:()=>Mt,KTX2BasisWriterWorker:()=>Xo,NPYLoader:()=>gt,NPYWorkerLoader:()=>he,getSupportedGPUTextureFormats:()=>j,loadImageTexture:()=>Ft,loadImageTextureArray:()=>Kt,loadImageTextureCube:()=>Vt,selectSupportedBasisFormat:()=>de});W(v,se(We(),1));var m="4.2.0-alpha.4";function ar(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.2.0-alpha.4"),globalThis._loadersgl_.version}var ze=ar();function $e(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}var T={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},ko=T.self||T.window||T.global||{},Wo=T.window||T.self||T.global||{},zo=T.global||T.self||T.window||{},$o=T.document||{};var M=typeof process!="object"||String(process)!=="[object process]"||process.browser,z=typeof importScripts=="function",jo=typeof window<"u"&&typeof window.orientation<"u",je=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Zo=je&&parseFloat(je[1])||0;var p={};var ae={};async function w(e,t=null,r={},o=null){return t&&(e=Ze(e,t,r,o)),ae[e]=ae[e]||ir(e),await ae[e]}function Ze(e,t,r={},o=null){if(!r.useLocalLibraries&&e.startsWith("http"))return e;o=o||e;let s=r.modules||{};return s[o]?s[o]:M?r.CDN?($e(r.CDN.startsWith("http")),`${r.CDN}/${t}@${ze}/dist/libs/${o}`):z?`../src/libs/${o}`:`modules/${t}/src/libs/${o}`:`modules/${t}/dist/libs/${o}`}async function ir(e){if(e.endsWith("wasm"))return await cr(e);if(!M)try{return p&&void 0&&await(void 0)(e)}catch(r){return console.error(r),null}if(z)return importScripts(e);let t=await fr(e);return _r(t,e)}function _r(e,t){if(!M)return void 0&&(void 0)(e,t);if(z)return eval.call(globalThis,e),null;let r=document.createElement("script");r.id=t;try{r.appendChild(document.createTextNode(e))}catch{r.text=e}return document.body.appendChild(r),null}async function cr(e){return M||!void 0||e.startsWith("http")?await(await fetch(e)).arrayBuffer():await(void 0)(e)}async function fr(e){return M||!void 0||e.startsWith("http")?await(await fetch(e)).text():await(void 0)(e)}var Qe=se(ie(),1);var Ye=se(ie(),1);function qe(e=3e3){return new Promise(t=>{Ye.default.exec("lsof -i -P -n | grep LISTEN",(r,o)=>{if(r){t(e);return}let s=[],a=/:(\d+) \(LISTEN\)/;o.split(`
8
- `).forEach(_=>{let c=a.exec(_);c&&s.push(Number(c[1]))});let i=e;for(;s.includes(i);)i++;t(i)})})}var Je={command:"",arguments:[],port:5e3,autoPort:!0,wait:2e3,onSuccess:e=>{console.log(`Started ${e.props.command}`)}},O=class{constructor({id:t="browser-driver"}={}){this.props={...Je},this.childProcess=null,this.port=0,this.id=t}async start(t){t={...Je,...t},this.props=t;let r=[...t.arguments];return this.port=Number(t.port),t.portArg&&(t.autoPort&&(this.port=await qe(t.port)),r.push(t.portArg,String(this.port))),await new Promise((o,s)=>{try{this._setTimeout(()=>{t.onSuccess&&t.onSuccess(this),o({})}),console.log(`Spawning ${t.command} ${t.arguments.join(" ")}`);let a=(void 0)(t.command,r,t.spawn);this.childProcess=a,a.stdout.on("data",i=>{console.log(i.toString())}),a.stderr.on("data",i=>{console.log(`Child process wrote to stderr: "${i}".`),t.ignoreStderr||(this._clearTimeout(),s(new Error(i)))}),a.on("error",i=>{console.log(`Child process errored with ${i}`),this._clearTimeout(),s(i)}),a.on("close",i=>{console.log(`Child process exited with ${i}`),this.childProcess=null,this._clearTimeout(),o({})})}catch(a){s(a)}})}async stop(){this.childProcess&&(this.childProcess.kill(),this.childProcess=null)}async exit(t=0){try{await this.stop(),process.exit(t)}catch(r){console.error(r.message||r),process.exit(1)}}_setTimeout(t){Number(this.props.wait)>0&&(this.successTimer=setTimeout(t,this.props.wait))}_clearTimeout(){this.successTimer&&clearTimeout(this.successTimer)}};var G={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},_e;async function fe(e){let t=e.modules||{};return t.basis?t.basis:(_e=_e||lr(e),await _e)}async function lr(e){let t=null,r=null;return[t,r]=await Promise.all([await w(G.TRANSCODER,"textures",e),await w(G.TRANSCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await Sr(t,r)}function Sr(e,t){let r={};return t&&(r.wasmBinary=t),new Promise(o=>{e(r).then(s=>{let{BasisFile:a,initializeBasis:i}=s;i(),o({BasisFile:a})})})}var ce;async function U(e){let t=e.modules||{};return t.basisEncoder?t.basisEncoder:(ce=ce||Er(e),await ce)}async function Er(e){let t=null,r=null;return[t,r]=await Promise.all([await w(G.ENCODER,"textures",e),await w(G.ENCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await ur(t,r)}function ur(e,t){let r={};return t&&(r.wasmBinary=t),new Promise(o=>{e(r).then(s=>{let{BasisFile:a,KTX2File:i,initializeBasis:_,BasisEncoder:c}=s;_(),o({BasisFile:a,KTX2File:i,BasisEncoder:c})})})}var n={COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_RGBA8_ETC2_EAC:37493,COMPRESSED_SRGB8_ETC2:37494,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37495,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37496,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGB_ATC_WEBGL:35986,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:35987,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:34798,COMPRESSED_RGBA_ASTC_4X4_KHR:37808,COMPRESSED_RGBA_ASTC_5X4_KHR:37809,COMPRESSED_RGBA_ASTC_5X5_KHR:37810,COMPRESSED_RGBA_ASTC_6X5_KHR:37811,COMPRESSED_RGBA_ASTC_6X6_KHR:37812,COMPRESSED_RGBA_ASTC_8X5_KHR:37813,COMPRESSED_RGBA_ASTC_8X6_KHR:37814,COMPRESSED_RGBA_ASTC_8X8_KHR:37815,COMPRESSED_RGBA_ASTC_10X5_KHR:37816,COMPRESSED_RGBA_ASTC_10X6_KHR:37817,COMPRESSED_RGBA_ASTC_10X8_KHR:37818,COMPRESSED_RGBA_ASTC_10X10_KHR:37819,COMPRESSED_RGBA_ASTC_12X10_KHR:37820,COMPRESSED_RGBA_ASTC_12X12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:37853,COMPRESSED_RED_RGTC1_EXT:36283,COMPRESSED_SIGNED_RED_RGTC1_EXT:36284,COMPRESSED_RED_GREEN_RGTC2_EXT:36285,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:36286,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919};var mr=["","WEBKIT_","MOZ_"],et={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},$=null;function j(e){if(!$){e=e||pr()||void 0,$=new Set;for(let t of mr)for(let r in et)if(e&&e.getExtension(`${t}${r}`)){let o=et[r];$.add(o)}}return $}function pr(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var un=new Uint8Array([0]),S=[171,75,84,88,32,50,48,187,13,10,26,10],le,Se,Ee,Z,tt,ue,rt,ot;(function(e){e[e.NONE=0]="NONE",e[e.BASISLZ=1]="BASISLZ",e[e.ZSTD=2]="ZSTD",e[e.ZLIB=3]="ZLIB"})(le||(le={})),function(e){e[e.BASICFORMAT=0]="BASICFORMAT"}(Se||(Se={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ETC1S=163]="ETC1S",e[e.UASTC=166]="UASTC"}(Ee||(Ee={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SRGB=1]="SRGB"}(Z||(Z={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.LINEAR=1]="LINEAR",e[e.SRGB=2]="SRGB",e[e.ITU=3]="ITU",e[e.NTSC=4]="NTSC",e[e.SLOG=5]="SLOG",e[e.SLOG2=6]="SLOG2"}(tt||(tt={})),function(e){e[e.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",e[e.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(ue||(ue={})),function(e){e[e.RGB=0]="RGB",e[e.RRR=3]="RRR",e[e.GGG=4]="GGG",e[e.AAA=15]="AAA"}(rt||(rt={})),function(e){e[e.RGB=0]="RGB",e[e.RGBA=3]="RGBA",e[e.RRR=4]="RRR",e[e.RRRG=5]="RRRG"}(ot||(ot={}));var me=class{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=le.NONE,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:Se.BASICFORMAT,versionNumber:2,descriptorBlockSize:40,colorModel:Ee.UNSPECIFIED,colorPrimaries:Z.SRGB,transferFunction:Z.SRGB,flags:ue.ALPHA_STRAIGHT,texelBlockDimension:{x:4,y:4,z:1,w:1},bytesPlane:[],samples:[]}],this.keyValue={},this.globalData=null}},B=class{constructor(t,r,o,s){this._dataView=new DataView(t.buffer,t.byteOffset+r,o),this._littleEndian=s,this._offset=0}_nextUint8(){let t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){let t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){let t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){let t=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_skip(t){return this._offset+=t,this}_scan(t,r=0){let o=this._offset,s=0;for(;this._dataView.getUint8(this._offset)!==r&&s<t;)s++,this._offset++;return s<t&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+o,s)}};function nt(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):Buffer.from(e).toString("utf8")}function st(e){let t=new Uint8Array(e.buffer,e.byteOffset,S.length);if(t[0]!==S[0]||t[1]!==S[1]||t[2]!==S[2]||t[3]!==S[3]||t[4]!==S[4]||t[5]!==S[5]||t[6]!==S[6]||t[7]!==S[7]||t[8]!==S[8]||t[9]!==S[9]||t[10]!==S[10]||t[11]!==S[11])throw new Error("Missing KTX 2.0 identifier.");let r=new me,o=17*Uint32Array.BYTES_PER_ELEMENT,s=new B(e,S.length,o,!0);r.vkFormat=s._nextUint32(),r.typeSize=s._nextUint32(),r.pixelWidth=s._nextUint32(),r.pixelHeight=s._nextUint32(),r.pixelDepth=s._nextUint32(),r.layerCount=s._nextUint32(),r.faceCount=s._nextUint32();let a=s._nextUint32();r.supercompressionScheme=s._nextUint32();let i=s._nextUint32(),_=s._nextUint32(),c=s._nextUint32(),l=s._nextUint32(),E=s._nextUint64(),h=s._nextUint64(),oe=new B(e,S.length+o,3*a*8,!0);for(let u=0;u<a;u++)r.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+oe._nextUint64(),oe._nextUint64()),uncompressedByteLength:oe._nextUint64()});let f=new B(e,i,_,!0),ne={vendorId:f._skip(4)._nextUint16(),descriptorType:f._nextUint16(),versionNumber:f._nextUint16(),descriptorBlockSize:f._nextUint16(),colorModel:f._nextUint8(),colorPrimaries:f._nextUint8(),transferFunction:f._nextUint8(),flags:f._nextUint8(),texelBlockDimension:{x:f._nextUint8()+1,y:f._nextUint8()+1,z:f._nextUint8()+1,w:f._nextUint8()+1},bytesPlane:[f._nextUint8(),f._nextUint8(),f._nextUint8(),f._nextUint8(),f._nextUint8(),f._nextUint8(),f._nextUint8(),f._nextUint8()],samples:[]},kt=(ne.descriptorBlockSize/4-6)/4;for(let u=0;u<kt;u++)ne.samples[u]={bitOffset:f._nextUint16(),bitLength:f._nextUint8(),channelID:f._nextUint8(),samplePosition:[f._nextUint8(),f._nextUint8(),f._nextUint8(),f._nextUint8()],sampleLower:f._nextUint32(),sampleUpper:f._nextUint32()};r.dataFormatDescriptor.length=0,r.dataFormatDescriptor.push(ne);let b=new B(e,c,l,!0);for(;b._offset<l;){let u=b._nextUint32(),Fe=b._scan(u),Ke=nt(Fe),ve=b._scan(u-Fe.byteLength);r.keyValue[Ke]=Ke.match(/^ktx/i)?nt(ve):ve,u%4&&b._skip(4-u%4)}if(h<=0)return r;let A=new B(e,E,h,!0),Wt=A._nextUint16(),zt=A._nextUint16(),Ie=A._nextUint32(),be=A._nextUint32(),Ue=A._nextUint32(),$t=A._nextUint32(),Le=[];for(let u=0;u<a;u++)Le.push({imageFlags:A._nextUint32(),rgbSliceByteOffset:A._nextUint32(),rgbSliceByteLength:A._nextUint32(),alphaSliceByteOffset:A._nextUint32(),alphaSliceByteLength:A._nextUint32()});let He=E+A._offset,Xe=He+Ie,Ne=Xe+be,jt=Ne+Ue,Zt=new Uint8Array(e.buffer,e.byteOffset+He,Ie),Yt=new Uint8Array(e.buffer,e.byteOffset+Xe,be),qt=new Uint8Array(e.buffer,e.byteOffset+Ne,Ue),Jt=new Uint8Array(e.buffer,e.byteOffset+jt,$t);return r.globalData={endpointCount:Wt,selectorCount:zt,imageDescs:Le,endpointsData:Zt,selectorsData:Yt,tablesData:qt,extendedData:Jt},r}function y(e,t){let r=new Array(t.mipMapLevels),o=t.width,s=t.height,a=0;for(let i=0;i<t.mipMapLevels;++i){let _=Rr(t,o,s,e,i),c=dr(e,i,a,_);r[i]={compressed:!0,format:t.internalFormat,data:c,width:o,height:s,levelSize:_},o=Math.max(1,o>>1),s=Math.max(1,s>>1),a+=_}return r}function dr(e,t,r,o){return Array.isArray(e)?e[t].levelData:new Uint8Array(e.buffer,e.byteOffset+r,o)}function Rr(e,t,r,o,s){return Array.isArray(o)?e.sizeFunction(o[s]):e.sizeFunction(t,r)}var Ar={131:n.COMPRESSED_RGB_S3TC_DXT1_EXT,132:n.COMPRESSED_SRGB_S3TC_DXT1_EXT,133:n.COMPRESSED_RGBA_S3TC_DXT1_EXT,134:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,135:n.COMPRESSED_RGBA_S3TC_DXT3_EXT,136:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,137:n.COMPRESSED_RGBA_S3TC_DXT5_EXT,138:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,139:n.COMPRESSED_RED_RGTC1_EXT,140:n.COMPRESSED_SIGNED_RED_RGTC1_EXT,141:n.COMPRESSED_RED_GREEN_RGTC2_EXT,142:n.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,147:n.COMPRESSED_RGB8_ETC2,148:n.COMPRESSED_SRGB8_ETC2,149:n.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,150:n.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,151:n.COMPRESSED_RGBA8_ETC2_EAC,152:n.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,153:n.COMPRESSED_R11_EAC,154:n.COMPRESSED_SIGNED_R11_EAC,155:n.COMPRESSED_RG11_EAC,156:n.COMPRESSED_SIGNED_RG11_EAC,157:n.COMPRESSED_RGBA_ASTC_4x4_KHR,158:n.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,159:n.COMPRESSED_RGBA_ASTC_5x4_KHR,160:n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,161:n.COMPRESSED_RGBA_ASTC_5x5_KHR,162:n.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,163:n.COMPRESSED_RGBA_ASTC_6x5_KHR,164:n.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,165:n.COMPRESSED_RGBA_ASTC_6x6_KHR,166:n.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,167:n.COMPRESSED_RGBA_ASTC_8x5_KHR,168:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,169:n.COMPRESSED_RGBA_ASTC_8x6_KHR,170:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,171:n.COMPRESSED_RGBA_ASTC_8x8_KHR,172:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,173:n.COMPRESSED_RGBA_ASTC_10x5_KHR,174:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,175:n.COMPRESSED_RGBA_ASTC_10x6_KHR,176:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,177:n.COMPRESSED_RGBA_ASTC_10x8_KHR,178:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,179:n.COMPRESSED_RGBA_ASTC_10x10_KHR,180:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,181:n.COMPRESSED_RGBA_ASTC_12x10_KHR,182:n.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,183:n.COMPRESSED_RGBA_ASTC_12x12_KHR,184:n.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,1000054e3:n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,1000054001:n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,1000066e3:n.COMPRESSED_RGBA_ASTC_4x4_KHR,1000066001:n.COMPRESSED_RGBA_ASTC_5x4_KHR,1000066002:n.COMPRESSED_RGBA_ASTC_5x5_KHR,1000066003:n.COMPRESSED_RGBA_ASTC_6x5_KHR,1000066004:n.COMPRESSED_RGBA_ASTC_6x6_KHR,1000066005:n.COMPRESSED_RGBA_ASTC_8x5_KHR,1000066006:n.COMPRESSED_RGBA_ASTC_8x6_KHR,1000066007:n.COMPRESSED_RGBA_ASTC_8x8_KHR,1000066008:n.COMPRESSED_RGBA_ASTC_10x5_KHR,1000066009:n.COMPRESSED_RGBA_ASTC_10x6_KHR,1000066010:n.COMPRESSED_RGBA_ASTC_10x8_KHR,1000066011:n.COMPRESSED_RGBA_ASTC_10x10_KHR,1000066012:n.COMPRESSED_RGBA_ASTC_12x10_KHR,1000066013:n.COMPRESSED_RGBA_ASTC_12x12_KHR};function at(e){return Ar[e]}var d=[171,75,84,88,32,50,48,187,13,10,26,10];function Y(e){let t=new Uint8Array(e);return!(t.byteLength<d.length||t[0]!==d[0]||t[1]!==d[1]||t[2]!==d[2]||t[3]!==d[3]||t[4]!==d[4]||t[5]!==d[5]||t[6]!==d[6]||t[7]!==d[7]||t[8]!==d[8]||t[9]!==d[9]||t[10]!==d[10]||t[11]!==d[11])}function it(e){let t=new Uint8Array(e),r=st(t),o=Math.max(1,r.levels.length),s=r.pixelWidth,a=r.pixelHeight,i=at(r.vkFormat);return y(r.levels,{mipMapLevels:o,width:s,height:a,sizeFunction:_=>_.uncompressedByteLength,internalFormat:i})}var xr={etc1:{basisFormat:0,compressed:!0,format:n.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:n.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:n.COMPRESSED_RGBA_S3TC_DXT5_EXT},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:n.COMPRESSED_RGBA_ASTC_4X4_KHR},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};async function L(e,t){if(t.basis.containerFormat==="auto"){if(Y(e)){let o=await U(t);return _t(o.KTX2File,e,t)}let{BasisFile:r}=await fe(t);return pe(r,e,t)}switch(t.basis.module){case"encoder":let r=await U(t);switch(t.basis.containerFormat){case"ktx2":return _t(r.KTX2File,e,t);case"basis":default:return pe(r.BasisFile,e,t)}case"transcoder":default:let{BasisFile:o}=await fe(t);return pe(o,e,t)}}function pe(e,t,r){let o=new e(new Uint8Array(t));try{if(!o.startTranscoding())throw new Error("Failed to start basis transcoding");let s=o.getNumImages(),a=[];for(let i=0;i<s;i++){let _=o.getNumLevels(i),c=[];for(let l=0;l<_;l++)c.push(Tr(o,i,l,r));a.push(c)}return a}finally{o.close(),o.delete()}}function Tr(e,t,r,o){let s=e.getImageWidth(t,r),a=e.getImageHeight(t,r),i=e.getHasAlpha(),{compressed:_,format:c,basisFormat:l}=ct(o,i),E=e.getImageTranscodedSizeInBytes(t,r,l),h=new Uint8Array(E);if(!e.transcodeImage(h,t,r,l,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:a,data:h,compressed:_,format:c,hasAlpha:i}}function _t(e,t,r){let o=new e(new Uint8Array(t));try{if(!o.startTranscoding())throw new Error("failed to start KTX2 transcoding");let s=o.getLevels(),a=[];for(let i=0;i<s;i++){a.push(Cr(o,i,r));break}return[a]}finally{o.close(),o.delete()}}function Cr(e,t,r){let{alphaFlag:o,height:s,width:a}=e.getImageLevelInfo(t,0,0),{compressed:i,format:_,basisFormat:c}=ct(r,o),l=e.getImageTranscodedSizeInBytes(t,0,0,c),E=new Uint8Array(l);if(!e.transcodeImage(E,t,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:a,height:s,data:E,compressed:i,levelSize:l,hasAlpha:o,format:_}}function ct(e,t){let r=e&&e.basis&&e.basis.format;return r==="auto"&&(r=de()),typeof r=="object"&&(r=t?r.alpha:r.noAlpha),r=r.toLowerCase(),xr[r]}function de(){let e=j();return e.has("astc")?"astc-4x4":e.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:e.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:e.has("etc1")?"etc1":e.has("etc2")?"etc2":"rgb565"}var Re={name:"Basis",id:"basis",module:"textures",version:m,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},ft={...Re,parse:L};function C(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var g={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},gr=g.self||g.window||g.global||{},Dr=g.window||g.self||g.global||{},hr=g.global||g.self||g.window||{},Pr=g.document||{};var Ae=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var lt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Br=lt&&parseFloat(lt[1])||0;var Mr="",St={};function xe(e){for(let t in St)if(e.startsWith(t)){let r=St[t];e=e.replace(t,r)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${Mr}${e}`),e}var R={MAGIC_NUMBER:542327876,HEADER_LENGTH:31,MAGIC_NUMBER_INDEX:0,HEADER_SIZE_INDEX:1,HEADER_FLAGS_INDEX:2,HEADER_HEIGHT_INDEX:3,HEADER_WIDTH_INDEX:4,MIPMAPCOUNT_INDEX:7,HEADER_PF_FLAGS_INDEX:20,HEADER_PF_FOURCC_INDEX:21,DDSD_MIPMAPCOUNT:131072,DDPF_FOURCC:4},wr={DXT1:n.COMPRESSED_RGB_S3TC_DXT1_EXT,DXT3:n.COMPRESSED_RGBA_S3TC_DXT3_EXT,DXT5:n.COMPRESSED_RGBA_S3TC_DXT5_EXT,"ATC ":n.COMPRESSED_RGB_ATC_WEBGL,ATCA:n.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,ATCI:n.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL},Or=mt,Gr=q,yr=q,Ir={DXT1:mt,DXT3:q,DXT5:q,"ATC ":Or,ATCA:Gr,ATCI:yr};function Et(e){return new Uint32Array(e,0,R.HEADER_LENGTH)[R.MAGIC_NUMBER_INDEX]===R.MAGIC_NUMBER}function ut(e){let t=new Int32Array(e,0,R.HEADER_LENGTH),r=t[R.HEADER_PF_FOURCC_INDEX];C(Boolean(t[R.HEADER_PF_FLAGS_INDEX]&R.DDPF_FOURCC),"DDS: Unsupported format, must contain a FourCC code");let o=br(r),s=wr[o],a=Ir[o];C(s&&a,`DDS: Unknown pixel format ${r}`);let i=1;t[R.HEADER_FLAGS_INDEX]&R.DDSD_MIPMAPCOUNT&&(i=Math.max(1,t[R.MIPMAPCOUNT_INDEX]));let _=t[R.HEADER_WIDTH_INDEX],c=t[R.HEADER_HEIGHT_INDEX],l=t[R.HEADER_SIZE_INDEX]+4,E=new Uint8Array(e,l);return y(E,{mipMapLevels:i,width:_,height:c,sizeFunction:a,internalFormat:s})}function mt(e,t){return(e+3>>2)*(t+3>>2)*8}function q(e,t){return(e+3>>2)*(t+3>>2)*16}function br(e){return String.fromCharCode(e&255,e>>8&255,e>>16&255,e>>24&255)}var x={MAGIC_NUMBER:55727696,MAGIC_NUMBER_EXTRA:1347834371,HEADER_LENGTH:13,HEADER_SIZE:52,MAGIC_NUMBER_INDEX:0,PIXEL_FORMAT_INDEX:2,COLOUR_SPACE_INDEX:4,HEIGHT_INDEX:6,WIDTH_INDEX:7,MIPMAPCOUNT_INDEX:11,METADATA_SIZE_INDEX:12},Ur={0:[n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],1:[n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],2:[n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],3:[n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],6:[n.COMPRESSED_RGB_ETC1_WEBGL],7:[n.COMPRESSED_RGB_S3TC_DXT1_EXT],9:[n.COMPRESSED_RGBA_S3TC_DXT3_EXT],11:[n.COMPRESSED_RGBA_S3TC_DXT5_EXT],22:[n.COMPRESSED_RGB8_ETC2],23:[n.COMPRESSED_RGBA8_ETC2_EAC],24:[n.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],25:[n.COMPRESSED_R11_EAC],26:[n.COMPRESSED_RG11_EAC],27:[n.COMPRESSED_RGBA_ASTC_4X4_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],28:[n.COMPRESSED_RGBA_ASTC_5X4_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],29:[n.COMPRESSED_RGBA_ASTC_5X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],30:[n.COMPRESSED_RGBA_ASTC_6X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],31:[n.COMPRESSED_RGBA_ASTC_6X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],32:[n.COMPRESSED_RGBA_ASTC_8X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],33:[n.COMPRESSED_RGBA_ASTC_8X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],34:[n.COMPRESSED_RGBA_ASTC_8X8_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],35:[n.COMPRESSED_RGBA_ASTC_10X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],36:[n.COMPRESSED_RGBA_ASTC_10X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],37:[n.COMPRESSED_RGBA_ASTC_10X8_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],38:[n.COMPRESSED_RGBA_ASTC_10X10_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],39:[n.COMPRESSED_RGBA_ASTC_12X10_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],40:[n.COMPRESSED_RGBA_ASTC_12X12_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]},Lr={0:pt,1:pt,2:dt,3:dt,6:H,7:H,9:X,11:X,22:H,23:X,24:H,25:H,26:X,27:X,28:Hr,29:Xr,30:Nr,31:Fr,32:Kr,33:vr,34:Vr,35:kr,36:Wr,37:zr,38:$r,39:jr,40:Zr};function Rt(e){let r=new Uint32Array(e,0,x.HEADER_LENGTH)[x.MAGIC_NUMBER_INDEX];return r===x.MAGIC_NUMBER||r===x.MAGIC_NUMBER_EXTRA}function At(e){let t=new Uint32Array(e,0,x.HEADER_LENGTH),r=t[x.PIXEL_FORMAT_INDEX],o=t[x.COLOUR_SPACE_INDEX],s=Ur[r]||[],a=s.length>1&&o?s[1]:s[0],i=Lr[r],_=t[x.MIPMAPCOUNT_INDEX],c=t[x.WIDTH_INDEX],l=t[x.HEIGHT_INDEX],E=x.HEADER_SIZE+t[x.METADATA_SIZE_INDEX],h=new Uint8Array(e,E);return y(h,{mipMapLevels:_,width:c,height:l,sizeFunction:i,internalFormat:a})}function pt(e,t){return e=Math.max(e,16),t=Math.max(t,8),e*t/4}function dt(e,t){return e=Math.max(e,8),t=Math.max(t,8),e*t/2}function H(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8}function X(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16}function Hr(e,t){return Math.floor((e+4)/5)*Math.floor((t+3)/4)*16}function Xr(e,t){return Math.floor((e+4)/5)*Math.floor((t+4)/5)*16}function Nr(e,t){return Math.floor((e+5)/6)*Math.floor((t+4)/5)*16}function Fr(e,t){return Math.floor((e+5)/6)*Math.floor((t+5)/6)*16}function Kr(e,t){return Math.floor((e+7)/8)*Math.floor((t+4)/5)*16}function vr(e,t){return Math.floor((e+7)/8)*Math.floor((t+5)/6)*16}function Vr(e,t){return Math.floor((e+7)/8)*Math.floor((t+7)/8)*16}function kr(e,t){return Math.floor((e+9)/10)*Math.floor((t+4)/5)*16}function Wr(e,t){return Math.floor((e+9)/10)*Math.floor((t+5)/6)*16}function zr(e,t){return Math.floor((e+9)/10)*Math.floor((t+7)/8)*16}function $r(e,t){return Math.floor((e+9)/10)*Math.floor((t+9)/10)*16}function jr(e,t){return Math.floor((e+11)/12)*Math.floor((t+9)/10)*16}function Zr(e,t){return Math.floor((e+11)/12)*Math.floor((t+11)/12)*16}function xt(e){if(Y(e))return it(e);if(Et(e))return ut(e);if(Rt(e))return At(e);throw new Error("Texture container format not recognized")}var Te={name:"Texture Containers",id:"compressed-texture",module:"textures",version:m,worker:!0,extensions:["ktx","ktx2","dds","pvr"],mimeTypes:["image/ktx2","image/ktx","image/vnd-ms.dds","image/x-dds","application/octet-stream"],binary:!0,options:{"compressed-texture":{libraryPath:"libs/",useBasis:!1}}},Tt={...Te,parse:async(e,t)=>t?.["compressed-texture"]?.useBasis?(t.basis={format:{alpha:"BC3",noAlpha:"BC1"},...t.basis,containerFormat:"ktx2",module:"encoder"},(await L(e,t))[0]):xt(e)};var Ce={id:"crunch",name:"Crunch",module:"textures",version:m,worker:!0,extensions:["crn"],mimeTypes:["image/crn","image/x-crn","application/octet-stream"],binary:!0,options:{crunch:{libraryPath:"libs/"}}};var ge=new Uint32Array([305419896]),Yr=new Uint8Array(ge.buffer,ge.byteOffset,ge.byteLength),qr=Yr[0]!==18,Ct=qr,Jr={u1:Uint8Array,i1:Int8Array,u2:Uint16Array,i2:Int16Array,u4:Uint32Array,i4:Int32Array,f4:Float32Array,f8:Float64Array};function De(e,t){let r=new DataView(e),{header:o,headerEndOffset:s}=Qr(r),a=o.descr,i=Jr[a.slice(1,3)];if(!i)throw new Error(`Unimplemented type ${a}`);let c=o.shape?.reduce((E,h)=>E*h)*i.BYTES_PER_ELEMENT;if(e.byteLength<s+c)throw new Error("Buffer overflow");let l=new i(e.slice(s,s+c));if(a[0]===">"&&Ct||a[0]==="<"&&!Ct)throw new Error("Incorrect endianness");return{data:l,header:o}}function Qr(e){let t=e.getUint8(6),r=8,o;t>=2?(o=e.getUint32(r,!0),r+=4):(o=e.getUint16(r,!0),r+=2);let s=t<=2?"latin1":"utf-8",a=new TextDecoder(s),i=new Uint8Array(e.buffer,r,o),_=a.decode(i);return r+=o,{header:JSON.parse(_.replace(/'/g,'"').replace("False","false").replace("(","[").replace(/,*\),*/g,"]")),headerEndOffset:r}}var eo=new Uint8Array([147,78,85,77,80,89]),he={name:"NPY",id:"npy",module:"textures",version:m,worker:!0,extensions:["npy"],mimeTypes:[],tests:[eo.buffer],options:{npy:{}}},gt={...he,parseSync:De,parse:async(e,t)=>De(e,t)};var Dt={DECODER:"crunch.js"};async function ht(e,t,r){let o=["texture-compressor","--type","s3tc","--compression","DXT1","--quality","normal","--input",e,"--output",t];return await new O().start({command:"npx",arguments:o,spawn:r}),t}var Pt={name:"DDS Texture Container",id:"dds",module:"textures",version:m,extensions:["dds"],options:{texture:{format:"auto",compression:"auto",quality:"auto",mipmap:!1,flipY:!1,toolFlags:""}},encodeURLtoURL:ht,encode(){throw new Error("Not implemented")}};async function Bt(e,t={}){let{useSRGB:r=!1,qualityLevel:o=10,encodeUASTC:s=!1,mipmaps:a=!1}=t?.["ktx2-basis-writer"]||{},{BasisEncoder:i}=await U(t),_=new i;try{let c=new Uint8Array(e.width*e.height*4);_.setCreateKTX2File(!0),_.setKTX2UASTCSupercompression(!0),_.setKTX2SRGBTransferFunc(!0),_.setSliceSourceImage(0,e.data,e.width,e.height,!1),_.setPerceptual(r),_.setMipSRGB(r),_.setQualityLevel(o),_.setUASTC(s),_.setMipGen(a);let l=_.encode(c);return c.subarray(0,l).buffer}catch(c){throw console.error("Basis Universal Supercompressed GPU Texture encoder Error: ",c),c}finally{_.delete()}}var Mt={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:m,extensions:["ktx2"],options:{["ktx2-basis-writer"]:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}},encode:Bt};var wt="4.2.0-alpha.4";var to=globalThis.loaders?.parseImageNode,Pe=typeof Image<"u",Be=typeof ImageBitmap<"u",ro=Boolean(to),Me=Ae?!0:ro;function Ot(e){switch(e){case"auto":return Be||Pe||Me;case"imagebitmap":return Be;case"image":return Pe;case"data":return Me;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function Gt(){if(Be)return"imagebitmap";if(Pe)return"image";if(Me)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function yt(e){let t=oo(e);if(!t)throw new Error("Not an image");return t}function we(e){return J(e)}function J(e){switch(yt(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),r=t.getContext("2d");if(!r)throw new Error("getImageData");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function oo(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&e instanceof Image?"image":e&&typeof e=="object"&&e.data&&e.width&&e.height?"data":null}var no=/^data:image\/svg\+xml/,so=/\.svg((\?|#).*)?$/;function Q(e){return e&&(no.test(e)||so.test(e))}function It(e,t){if(Q(t)){let o=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(o=unescape(encodeURIComponent(o)))}catch(a){throw new Error(a.message)}return`data:image/svg+xml;base64,${btoa(o)}`}return Oe(e,t)}function Oe(e,t){if(Q(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function ee(e,t,r){let o=It(e,r),s=self.URL||self.webkitURL,a=typeof o!="string"&&s.createObjectURL(o);try{return await ao(a||o,t)}finally{a&&s.revokeObjectURL(a)}}async function ao(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((o,s)=>{try{r.onload=()=>o(r),r.onerror=a=>{let i=a instanceof Error?a.message:"error";s(new Error(i))}}catch(a){s(a)}})}var io={},bt=!0;async function Ut(e,t,r){let o;Q(r)?o=await ee(e,t,r):o=Oe(e,r);let s=t&&t.imagebitmap;return await _o(o,s)}async function _o(e,t=null){if((co(t)||!bt)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),bt=!1}return await createImageBitmap(e)}function co(e){for(let t in e||io)return!1;return!0}function Lt(e){return!Eo(e,"ftyp",4)||!(e[8]&96)?null:fo(e)}function fo(e){switch(lo(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function lo(e,t,r){return String.fromCharCode(...e.slice(t,r))}function So(e){return[...e].map(t=>t.charCodeAt(0))}function Eo(e,t,r=0){let o=So(t);for(let s=0;s<o.length;++s)if(o[s]!==e[s+r])return!1;return!0}var D=!1,N=!0;function te(e){let t=F(e);return mo(t)||Ao(t)||po(t)||Ro(t)||uo(t)}function uo(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=Lt(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function mo(e){let t=F(e);return t.byteLength>=24&&t.getUint32(0,D)===2303741511?{mimeType:"image/png",width:t.getUint32(16,D),height:t.getUint32(20,D)}:null}function po(e){let t=F(e);return t.byteLength>=10&&t.getUint32(0,D)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,N),height:t.getUint16(8,N)}:null}function Ro(e){let t=F(e);return t.byteLength>=14&&t.getUint16(0,D)===16973&&t.getUint32(2,N)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,N),height:t.getUint32(22,N)}:null}function Ao(e){let t=F(e);if(!(t.byteLength>=3&&t.getUint16(0,D)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:o,sofMarkers:s}=xo(),a=2;for(;a+9<t.byteLength;){let i=t.getUint16(a,D);if(s.has(i))return{mimeType:"image/jpeg",height:t.getUint16(a+5,D),width:t.getUint16(a+7,D)};if(!o.has(i))return null;a+=2,a+=t.getUint16(a,D)}return null}function xo(){let e=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)e.add(r);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function F(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}async function Ht(e,t){let{mimeType:r}=te(e)||{},o=globalThis.loaders?.parseImageNode;return C(o),await o(e,r)}async function Xt(e,t,r){t=t||{};let s=(t.image||{}).type||"auto",{url:a}=r||{},i=To(s),_;switch(i){case"imagebitmap":_=await Ut(e,t,a);break;case"image":_=await ee(e,t,a);break;case"data":_=await Ht(e,t);break;default:C(!1)}return s==="data"&&(_=J(_)),_}function To(e){switch(e){case"auto":case"data":return Gt();default:return Ot(e),e}}var Co=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],go=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],Do={image:{type:"auto",decode:!0}},P={id:"image",module:"images",name:"Images",version:wt,mimeTypes:go,extensions:Co,parse:Xt,tests:[e=>Boolean(te(new DataView(e)))],options:Do};function re(e,t,r){let o=typeof e=="function"?e({...t,...r}):e,s=t.baseUrl;return s&&(o=s[s.length-1]==="/"?`${s}${o}`:`${s}/${o}`),xe(o)}var ho=e=>e&&typeof e=="object";async function Nt(e,t,r={}){return await Ge(e,t,r)}async function Ge(e,t,r){return Array.isArray(e)?await Bo(e,t,r):ho(e)?await Po(e,t,r):await t(e,r)}async function Po(e,t,r){let o=[],s={};for(let a in e){let i=e[a],_=Ge(i,t,r).then(c=>{s[a]=c});o.push(_)}return await Promise.all(o),s}async function Bo(e,t,r={}){let o=e.map(s=>Ge(s,t,r));return await Promise.all(o)}async function I(e,t,r){return await Nt(e,o=>ye(o,t,r))}async function ye(e,t,r){let s=await(await fetch(e,r.fetch)).arrayBuffer();return await t(s,r)}async function Ft(e,t={}){let r=await K(e,t);return await I(r,P.parse,t)}async function K(e,t,r={}){let o=t&&t.image&&t.image.mipLevels||0;return o!==0?await Mo(e,o,t,r):re(e,t,r)}async function Mo(e,t,r,o){let s=[];if(t==="auto"){let a=re(e,r,{...o,lod:0}),i=await ye(a,P.parse,r),{width:_,height:c}=we(i);t=wo({width:_,height:c}),s.push(a)}C(t>0);for(let a=s.length;a<t;++a){let i=re(e,r,{...o,lod:a});s.push(i)}return s}function wo(e){return 1+Math.floor(Math.log2(Math.max(e.width,e.height)))}async function Kt(e,t,r={}){let o=await Oo(e,t,r);return await I(o,P.parse,r)}async function Oo(e,t,r={}){let o=[];for(let s=0;s<e;s++){let a=K(t,r,{index:s});o.push(a)}return await Promise.all(o)}var Go=34069,yo=34070,Io=34071,bo=34072,Uo=34073,Lo=34074,vt=[{face:Go,direction:"right",axis:"x",sign:"positive"},{face:yo,direction:"left",axis:"x",sign:"negative"},{face:Io,direction:"top",axis:"y",sign:"positive"},{face:bo,direction:"bottom",axis:"y",sign:"negative"},{face:Uo,direction:"front",axis:"z",sign:"positive"},{face:Lo,direction:"back",axis:"z",sign:"negative"}];async function Ho(e,t){let r={},o=[],s=0;for(let a=0;a<vt.length;++a){let i=vt[s],_=K(e,t,{...i,index:s++}).then(c=>{r[i.face]=c});o.push(_)}return await Promise.all(o),r}async function Vt(e,t={}){let r=await Ho(e,t);return await I(r,P.parse,t)}var Xo={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:m,extensions:["ktx2"],worker:!0,options:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}};return sr(v);})();
7
+ "use strict";var __exports__=(()=>{var er=Object.create;var V=Object.defineProperty;var tr=Object.getOwnPropertyDescriptor;var rr=Object.getOwnPropertyNames;var or=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var Ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),sr=(e,t)=>{for(var r in t)V(e,r,{get:t[r],enumerable:!0})},v=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of rr(t))!nr.call(e,s)&&s!==r&&V(e,s,{get:()=>t[s],enumerable:!(o=tr(t,s))||o.enumerable});return e},k=(e,t,r)=>(v(e,t,"default"),r&&v(r,t,"default")),ne=(e,t,r)=>(r=e!=null?er(or(e)):{},v(t||!e||!e.__esModule?V(r,"default",{value:e,enumerable:!0}):r,e)),ar=e=>v(V({},"__esModule",{value:!0}),e);var We=Ve((Ko,ke)=>{ke.exports=globalThis.loaders});var _e=Ve(()=>{});var K={};sr(K,{BASIS_EXTERNAL_LIBRARIES:()=>y,BasisLoader:()=>ut,BasisWorkerLoader:()=>xe,CRUNCH_EXTERNAL_LIBRARIES:()=>Dt,CompressedTextureLoader:()=>Ct,CompressedTextureWorkerLoader:()=>Te,CompressedTextureWriter:()=>Bt,CrunchLoader:()=>Ce,CrunchWorkerLoader:()=>Ce,GL_EXTENSIONS_CONSTANTS:()=>n,KTX2BasisWriter:()=>wt,KTX2BasisWriterWorker:()=>No,NPYLoader:()=>ht,NPYWorkerLoader:()=>De,getSupportedGPUTextureFormats:()=>$,loadImageTexture:()=>Kt,loadImageTextureArray:()=>vt,loadImageTextureCube:()=>kt,selectSupportedBasisFormat:()=>Ae});k(K,ne(We(),1));var m="4.2.0-alpha.6";function x(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var T={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},ir=T.self||T.window||T.global||{},cr=T.window||T.self||T.global||{},_r=T.global||T.self||T.window||{},lr=T.document||{};var se=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var ze=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),fr=ze&&parseFloat(ze[1])||0;function ae(e){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,e)}function ie(e){return globalThis.loaders?.modules?.[e]||null}function Sr(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.2.0-alpha.6"),globalThis._loadersgl_.version}var $e=Sr();function je(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}var C={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},jo=C.self||C.window||C.global||{},Jo=C.window||C.self||C.global||{},Zo=C.global||C.self||C.window||{},Yo=C.document||{};var B=typeof process!="object"||String(process)!=="[object process]"||process.browser,W=typeof importScripts=="function",qo=typeof window<"u"&&typeof window.orientation<"u",Je=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Qo=Je&&parseFloat(Je[1])||0;var ce={};async function M(e,t=null,r={},o=null){return t&&(e=Ze(e,t,r,o)),ce[e]=ce[e]||ur(e),await ce[e]}function Ze(e,t,r={},o=null){if(!r.useLocalLibraries&&e.startsWith("http"))return e;o=o||e;let s=r.modules||{};return s[o]?s[o]:B?r.CDN?(je(r.CDN.startsWith("http")),`${r.CDN}/${t}@${$e}/dist/libs/${o}`):W?`../src/libs/${o}`:`modules/${t}/src/libs/${o}`:`modules/${t}/dist/libs/${o}`}async function ur(e){if(e.endsWith("wasm"))return await mr(e);if(!B)try{let{requireFromFile:r}=globalThis.loaders||{};return await r?.(e)}catch(r){return console.error(r),null}if(W)return importScripts(e);let t=await pr(e);return Er(t,e)}function Er(e,t){if(!B){let{requireFromString:o}=globalThis.loaders||{};return o?.(e,t)}if(W)return eval.call(globalThis,e),null;let r=document.createElement("script");r.id=t;try{r.appendChild(document.createTextNode(e))}catch{r.text=e}return document.body.appendChild(r),null}async function mr(e){let{readFileAsArrayBuffer:t}=globalThis.loaders||{};return B||!t||e.startsWith("http")?await(await fetch(e)).arrayBuffer():await t(e)}async function pr(e){let{readFileAsText:t}=globalThis.loaders||{};return B||!t||e.startsWith("http")?await(await fetch(e)).text():await t(e)}var et=ne(_e(),1);var Ye=ne(_e(),1);function qe(e=3e3){return new Promise(t=>{Ye.default.exec("lsof -i -P -n | grep LISTEN",(r,o)=>{if(r){t(e);return}let s=[],a=/:(\d+) \(LISTEN\)/;o.split(`
8
+ `).forEach(c=>{let _=a.exec(c);_&&s.push(Number(_[1]))});let i=e;for(;s.includes(i);)i++;t(i)})})}var Qe={command:"",arguments:[],port:5e3,autoPort:!0,wait:2e3,onSuccess:e=>{console.log(`Started ${e.props.command}`)}},w=class{id;props={...Qe};childProcess=null;port=0;successTimer;constructor({id:t="browser-driver"}={}){this.id=t}async start(t){t={...Qe,...t},this.props=t;let r=[...t.arguments];return this.port=Number(t.port),t.portArg&&(t.autoPort&&(this.port=await qe(t.port)),r.push(t.portArg,String(this.port))),await new Promise((o,s)=>{try{this._setTimeout(()=>{t.onSuccess&&t.onSuccess(this),o({})}),console.log(`Spawning ${t.command} ${t.arguments.join(" ")}`);let a=(void 0)(t.command,r,t.spawn);this.childProcess=a,a.stdout.on("data",i=>{console.log(i.toString())}),a.stderr.on("data",i=>{console.log(`Child process wrote to stderr: "${i}".`),t.ignoreStderr||(this._clearTimeout(),s(new Error(i)))}),a.on("error",i=>{console.log(`Child process errored with ${i}`),this._clearTimeout(),s(i)}),a.on("close",i=>{console.log(`Child process exited with ${i}`),this.childProcess=null,this._clearTimeout(),o({})})}catch(a){s(a)}})}async stop(){this.childProcess&&(this.childProcess.kill(),this.childProcess=null)}async exit(t=0){try{await this.stop(),process.exit(t)}catch(r){console.error(r.message||r),process.exit(1)}}_setTimeout(t){Number(this.props.wait)>0&&(this.successTimer=setTimeout(t,this.props.wait))}_clearTimeout(){this.successTimer&&clearTimeout(this.successTimer)}};var dr="",tt={};function le(e){for(let t in tt)if(e.startsWith(t)){let r=tt[t];e=e.replace(t,r)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${dr}${e}`),e}var y={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},rt;async function Se(e){ae(e.modules);let t=ie("basis");return t||(rt||=Rr(e),await rt)}async function Rr(e){let t=null,r=null;return[t,r]=await Promise.all([await M(y.TRANSCODER,"textures",e),await M(y.TRANSCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await Ar(t,r)}function Ar(e,t){let r={};return t&&(r.wasmBinary=t),new Promise(o=>{e(r).then(s=>{let{BasisFile:a,initializeBasis:i}=s;i(),o({BasisFile:a})})})}var fe;async function b(e){let t=e.modules||{};return t.basisEncoder?t.basisEncoder:(fe=fe||xr(e),await fe)}async function xr(e){let t=null,r=null;return[t,r]=await Promise.all([await M(y.ENCODER,"textures",e),await M(y.ENCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await Tr(t,r)}function Tr(e,t){let r={};return t&&(r.wasmBinary=t),new Promise(o=>{e(r).then(s=>{let{BasisFile:a,KTX2File:i,initializeBasis:c,BasisEncoder:_}=s;c(),o({BasisFile:a,KTX2File:i,BasisEncoder:_})})})}var n={COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_RGBA8_ETC2_EAC:37493,COMPRESSED_SRGB8_ETC2:37494,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37495,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37496,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGB_ATC_WEBGL:35986,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:35987,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:34798,COMPRESSED_RGBA_ASTC_4X4_KHR:37808,COMPRESSED_RGBA_ASTC_5X4_KHR:37809,COMPRESSED_RGBA_ASTC_5X5_KHR:37810,COMPRESSED_RGBA_ASTC_6X5_KHR:37811,COMPRESSED_RGBA_ASTC_6X6_KHR:37812,COMPRESSED_RGBA_ASTC_8X5_KHR:37813,COMPRESSED_RGBA_ASTC_8X6_KHR:37814,COMPRESSED_RGBA_ASTC_8X8_KHR:37815,COMPRESSED_RGBA_ASTC_10X5_KHR:37816,COMPRESSED_RGBA_ASTC_10X6_KHR:37817,COMPRESSED_RGBA_ASTC_10X8_KHR:37818,COMPRESSED_RGBA_ASTC_10X10_KHR:37819,COMPRESSED_RGBA_ASTC_12X10_KHR:37820,COMPRESSED_RGBA_ASTC_12X12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:37853,COMPRESSED_RED_RGTC1_EXT:36283,COMPRESSED_SIGNED_RED_RGTC1_EXT:36284,COMPRESSED_RED_GREEN_RGTC2_EXT:36285,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:36286,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919};var Cr=["","WEBKIT_","MOZ_"],ot={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},z=null;function $(e){if(!z){e=e||gr()||void 0,z=new Set;for(let t of Cr)for(let r in ot)if(e&&e.getExtension(`${t}${r}`)){let o=ot[r];z.add(o)}}return z}function gr(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var On=new Uint8Array([0]),S=[171,75,84,88,32,50,48,187,13,10,26,10],ue,Ee,me,j,nt,pe,st,at;(function(e){e[e.NONE=0]="NONE",e[e.BASISLZ=1]="BASISLZ",e[e.ZSTD=2]="ZSTD",e[e.ZLIB=3]="ZLIB"})(ue||(ue={})),function(e){e[e.BASICFORMAT=0]="BASICFORMAT"}(Ee||(Ee={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ETC1S=163]="ETC1S",e[e.UASTC=166]="UASTC"}(me||(me={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SRGB=1]="SRGB"}(j||(j={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.LINEAR=1]="LINEAR",e[e.SRGB=2]="SRGB",e[e.ITU=3]="ITU",e[e.NTSC=4]="NTSC",e[e.SLOG=5]="SLOG",e[e.SLOG2=6]="SLOG2"}(nt||(nt={})),function(e){e[e.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",e[e.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(pe||(pe={})),function(e){e[e.RGB=0]="RGB",e[e.RRR=3]="RRR",e[e.GGG=4]="GGG",e[e.AAA=15]="AAA"}(st||(st={})),function(e){e[e.RGB=0]="RGB",e[e.RGBA=3]="RGBA",e[e.RRR=4]="RRR",e[e.RRRG=5]="RRRG"}(at||(at={}));var de=class{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=ue.NONE,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:Ee.BASICFORMAT,versionNumber:2,descriptorBlockSize:40,colorModel:me.UNSPECIFIED,colorPrimaries:j.SRGB,transferFunction:j.SRGB,flags:pe.ALPHA_STRAIGHT,texelBlockDimension:{x:4,y:4,z:1,w:1},bytesPlane:[],samples:[]}],this.keyValue={},this.globalData=null}},P=class{constructor(t,r,o,s){this._dataView=new DataView(t.buffer,t.byteOffset+r,o),this._littleEndian=s,this._offset=0}_nextUint8(){let t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){let t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){let t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){let t=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_skip(t){return this._offset+=t,this}_scan(t,r=0){let o=this._offset,s=0;for(;this._dataView.getUint8(this._offset)!==r&&s<t;)s++,this._offset++;return s<t&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+o,s)}};function it(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):Buffer.from(e).toString("utf8")}function ct(e){let t=new Uint8Array(e.buffer,e.byteOffset,S.length);if(t[0]!==S[0]||t[1]!==S[1]||t[2]!==S[2]||t[3]!==S[3]||t[4]!==S[4]||t[5]!==S[5]||t[6]!==S[6]||t[7]!==S[7]||t[8]!==S[8]||t[9]!==S[9]||t[10]!==S[10]||t[11]!==S[11])throw new Error("Missing KTX 2.0 identifier.");let r=new de,o=17*Uint32Array.BYTES_PER_ELEMENT,s=new P(e,S.length,o,!0);r.vkFormat=s._nextUint32(),r.typeSize=s._nextUint32(),r.pixelWidth=s._nextUint32(),r.pixelHeight=s._nextUint32(),r.pixelDepth=s._nextUint32(),r.layerCount=s._nextUint32(),r.faceCount=s._nextUint32();let a=s._nextUint32();r.supercompressionScheme=s._nextUint32();let i=s._nextUint32(),c=s._nextUint32(),_=s._nextUint32(),f=s._nextUint32(),u=s._nextUint64(),h=s._nextUint64(),re=new P(e,S.length+o,3*a*8,!0);for(let E=0;E<a;E++)r.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+re._nextUint64(),re._nextUint64()),uncompressedByteLength:re._nextUint64()});let l=new P(e,i,c,!0),oe={vendorId:l._skip(4)._nextUint16(),descriptorType:l._nextUint16(),versionNumber:l._nextUint16(),descriptorBlockSize:l._nextUint16(),colorModel:l._nextUint8(),colorPrimaries:l._nextUint8(),transferFunction:l._nextUint8(),flags:l._nextUint8(),texelBlockDimension:{x:l._nextUint8()+1,y:l._nextUint8()+1,z:l._nextUint8()+1,w:l._nextUint8()+1},bytesPlane:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],samples:[]},Wt=(oe.descriptorBlockSize/4-6)/4;for(let E=0;E<Wt;E++)oe.samples[E]={bitOffset:l._nextUint16(),bitLength:l._nextUint8(),channelID:l._nextUint8(),samplePosition:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],sampleLower:l._nextUint32(),sampleUpper:l._nextUint32()};r.dataFormatDescriptor.length=0,r.dataFormatDescriptor.push(oe);let I=new P(e,_,f,!0);for(;I._offset<f;){let E=I._nextUint32(),Fe=I._scan(E),Ke=it(Fe),ve=I._scan(E-Fe.byteLength);r.keyValue[Ke]=Ke.match(/^ktx/i)?it(ve):ve,E%4&&I._skip(4-E%4)}if(h<=0)return r;let R=new P(e,u,h,!0),zt=R._nextUint16(),$t=R._nextUint16(),Ie=R._nextUint32(),be=R._nextUint32(),Ue=R._nextUint32(),jt=R._nextUint32(),Le=[];for(let E=0;E<a;E++)Le.push({imageFlags:R._nextUint32(),rgbSliceByteOffset:R._nextUint32(),rgbSliceByteLength:R._nextUint32(),alphaSliceByteOffset:R._nextUint32(),alphaSliceByteLength:R._nextUint32()});let He=u+R._offset,Xe=He+Ie,Ne=Xe+be,Jt=Ne+Ue,Zt=new Uint8Array(e.buffer,e.byteOffset+He,Ie),Yt=new Uint8Array(e.buffer,e.byteOffset+Xe,be),qt=new Uint8Array(e.buffer,e.byteOffset+Ne,Ue),Qt=new Uint8Array(e.buffer,e.byteOffset+Jt,jt);return r.globalData={endpointCount:zt,selectorCount:$t,imageDescs:Le,endpointsData:Zt,selectorsData:Yt,tablesData:qt,extendedData:Qt},r}function O(e,t){let r=new Array(t.mipMapLevels),o=t.width,s=t.height,a=0;for(let i=0;i<t.mipMapLevels;++i){let c=Dr(t,o,s,e,i),_=hr(e,i,a,c);r[i]={compressed:!0,format:t.internalFormat,data:_,width:o,height:s,levelSize:c},o=Math.max(1,o>>1),s=Math.max(1,s>>1),a+=c}return r}function hr(e,t,r,o){return Array.isArray(e)?e[t].levelData:new Uint8Array(e.buffer,e.byteOffset+r,o)}function Dr(e,t,r,o,s){return Array.isArray(o)?e.sizeFunction(o[s]):e.sizeFunction(t,r)}var Pr={131:n.COMPRESSED_RGB_S3TC_DXT1_EXT,132:n.COMPRESSED_SRGB_S3TC_DXT1_EXT,133:n.COMPRESSED_RGBA_S3TC_DXT1_EXT,134:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,135:n.COMPRESSED_RGBA_S3TC_DXT3_EXT,136:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,137:n.COMPRESSED_RGBA_S3TC_DXT5_EXT,138:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,139:n.COMPRESSED_RED_RGTC1_EXT,140:n.COMPRESSED_SIGNED_RED_RGTC1_EXT,141:n.COMPRESSED_RED_GREEN_RGTC2_EXT,142:n.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,147:n.COMPRESSED_RGB8_ETC2,148:n.COMPRESSED_SRGB8_ETC2,149:n.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,150:n.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,151:n.COMPRESSED_RGBA8_ETC2_EAC,152:n.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,153:n.COMPRESSED_R11_EAC,154:n.COMPRESSED_SIGNED_R11_EAC,155:n.COMPRESSED_RG11_EAC,156:n.COMPRESSED_SIGNED_RG11_EAC,157:n.COMPRESSED_RGBA_ASTC_4x4_KHR,158:n.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,159:n.COMPRESSED_RGBA_ASTC_5x4_KHR,160:n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,161:n.COMPRESSED_RGBA_ASTC_5x5_KHR,162:n.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,163:n.COMPRESSED_RGBA_ASTC_6x5_KHR,164:n.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,165:n.COMPRESSED_RGBA_ASTC_6x6_KHR,166:n.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,167:n.COMPRESSED_RGBA_ASTC_8x5_KHR,168:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,169:n.COMPRESSED_RGBA_ASTC_8x6_KHR,170:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,171:n.COMPRESSED_RGBA_ASTC_8x8_KHR,172:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,173:n.COMPRESSED_RGBA_ASTC_10x5_KHR,174:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,175:n.COMPRESSED_RGBA_ASTC_10x6_KHR,176:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,177:n.COMPRESSED_RGBA_ASTC_10x8_KHR,178:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,179:n.COMPRESSED_RGBA_ASTC_10x10_KHR,180:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,181:n.COMPRESSED_RGBA_ASTC_12x10_KHR,182:n.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,183:n.COMPRESSED_RGBA_ASTC_12x12_KHR,184:n.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,1000054e3:n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,1000054001:n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,1000066e3:n.COMPRESSED_RGBA_ASTC_4x4_KHR,1000066001:n.COMPRESSED_RGBA_ASTC_5x4_KHR,1000066002:n.COMPRESSED_RGBA_ASTC_5x5_KHR,1000066003:n.COMPRESSED_RGBA_ASTC_6x5_KHR,1000066004:n.COMPRESSED_RGBA_ASTC_6x6_KHR,1000066005:n.COMPRESSED_RGBA_ASTC_8x5_KHR,1000066006:n.COMPRESSED_RGBA_ASTC_8x6_KHR,1000066007:n.COMPRESSED_RGBA_ASTC_8x8_KHR,1000066008:n.COMPRESSED_RGBA_ASTC_10x5_KHR,1000066009:n.COMPRESSED_RGBA_ASTC_10x6_KHR,1000066010:n.COMPRESSED_RGBA_ASTC_10x8_KHR,1000066011:n.COMPRESSED_RGBA_ASTC_10x10_KHR,1000066012:n.COMPRESSED_RGBA_ASTC_12x10_KHR,1000066013:n.COMPRESSED_RGBA_ASTC_12x12_KHR};function _t(e){return Pr[e]}var p=[171,75,84,88,32,50,48,187,13,10,26,10];function J(e){let t=new Uint8Array(e);return!(t.byteLength<p.length||t[0]!==p[0]||t[1]!==p[1]||t[2]!==p[2]||t[3]!==p[3]||t[4]!==p[4]||t[5]!==p[5]||t[6]!==p[6]||t[7]!==p[7]||t[8]!==p[8]||t[9]!==p[9]||t[10]!==p[10]||t[11]!==p[11])}function lt(e){let t=new Uint8Array(e),r=ct(t),o=Math.max(1,r.levels.length),s=r.pixelWidth,a=r.pixelHeight,i=_t(r.vkFormat);return O(r.levels,{mipMapLevels:o,width:s,height:a,sizeFunction:c=>c.uncompressedByteLength,internalFormat:i})}var Br={etc1:{basisFormat:0,compressed:!0,format:n.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:n.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:n.COMPRESSED_RGBA_S3TC_DXT5_EXT},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:n.COMPRESSED_RGBA_ASTC_4X4_KHR},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};async function U(e,t){if(t.basis.containerFormat==="auto"){if(J(e)){let o=await b(t);return ft(o.KTX2File,e,t)}let{BasisFile:r}=await Se(t);return Re(r,e,t)}switch(t.basis.module){case"encoder":let r=await b(t);switch(t.basis.containerFormat){case"ktx2":return ft(r.KTX2File,e,t);case"basis":default:return Re(r.BasisFile,e,t)}case"transcoder":default:let{BasisFile:o}=await Se(t);return Re(o,e,t)}}function Re(e,t,r){let o=new e(new Uint8Array(t));try{if(!o.startTranscoding())throw new Error("Failed to start basis transcoding");let s=o.getNumImages(),a=[];for(let i=0;i<s;i++){let c=o.getNumLevels(i),_=[];for(let f=0;f<c;f++)_.push(Mr(o,i,f,r));a.push(_)}return a}finally{o.close(),o.delete()}}function Mr(e,t,r,o){let s=e.getImageWidth(t,r),a=e.getImageHeight(t,r),i=e.getHasAlpha(),{compressed:c,format:_,basisFormat:f}=St(o,i),u=e.getImageTranscodedSizeInBytes(t,r,f),h=new Uint8Array(u);if(!e.transcodeImage(h,t,r,f,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:a,data:h,compressed:c,format:_,hasAlpha:i}}function ft(e,t,r){let o=new e(new Uint8Array(t));try{if(!o.startTranscoding())throw new Error("failed to start KTX2 transcoding");let s=o.getLevels(),a=[];for(let i=0;i<s;i++){a.push(wr(o,i,r));break}return[a]}finally{o.close(),o.delete()}}function wr(e,t,r){let{alphaFlag:o,height:s,width:a}=e.getImageLevelInfo(t,0,0),{compressed:i,format:c,basisFormat:_}=St(r,o),f=e.getImageTranscodedSizeInBytes(t,0,0,_),u=new Uint8Array(f);if(!e.transcodeImage(u,t,0,0,_,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:a,height:s,data:u,compressed:i,levelSize:f,hasAlpha:o,format:c}}function St(e,t){let r=e&&e.basis&&e.basis.format;return r==="auto"&&(r=Ae()),typeof r=="object"&&(r=t?r.alpha:r.noAlpha),r=r.toLowerCase(),Br[r]}function Ae(){let e=$();return e.has("astc")?"astc-4x4":e.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:e.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:e.has("etc1")?"etc1":e.has("etc2")?"etc2":"rgb565"}var xe={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:m,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},ut={...xe,parse:U};var d={MAGIC_NUMBER:542327876,HEADER_LENGTH:31,MAGIC_NUMBER_INDEX:0,HEADER_SIZE_INDEX:1,HEADER_FLAGS_INDEX:2,HEADER_HEIGHT_INDEX:3,HEADER_WIDTH_INDEX:4,MIPMAPCOUNT_INDEX:7,HEADER_PF_FLAGS_INDEX:20,HEADER_PF_FOURCC_INDEX:21,DDSD_MIPMAPCOUNT:131072,DDPF_FOURCC:4},yr={DXT1:n.COMPRESSED_RGB_S3TC_DXT1_EXT,DXT3:n.COMPRESSED_RGBA_S3TC_DXT3_EXT,DXT5:n.COMPRESSED_RGBA_S3TC_DXT5_EXT,"ATC ":n.COMPRESSED_RGB_ATC_WEBGL,ATCA:n.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,ATCI:n.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL},Or=pt,Gr=Z,Ir=Z,br={DXT1:pt,DXT3:Z,DXT5:Z,"ATC ":Or,ATCA:Gr,ATCI:Ir};function Et(e){return new Uint32Array(e,0,d.HEADER_LENGTH)[d.MAGIC_NUMBER_INDEX]===d.MAGIC_NUMBER}function mt(e){let t=new Int32Array(e,0,d.HEADER_LENGTH),r=t[d.HEADER_PF_FOURCC_INDEX];x(Boolean(t[d.HEADER_PF_FLAGS_INDEX]&d.DDPF_FOURCC),"DDS: Unsupported format, must contain a FourCC code");let o=Ur(r),s=yr[o],a=br[o];x(s&&a,`DDS: Unknown pixel format ${r}`);let i=1;t[d.HEADER_FLAGS_INDEX]&d.DDSD_MIPMAPCOUNT&&(i=Math.max(1,t[d.MIPMAPCOUNT_INDEX]));let c=t[d.HEADER_WIDTH_INDEX],_=t[d.HEADER_HEIGHT_INDEX],f=t[d.HEADER_SIZE_INDEX]+4,u=new Uint8Array(e,f);return O(u,{mipMapLevels:i,width:c,height:_,sizeFunction:a,internalFormat:s})}function pt(e,t){return(e+3>>2)*(t+3>>2)*8}function Z(e,t){return(e+3>>2)*(t+3>>2)*16}function Ur(e){return String.fromCharCode(e&255,e>>8&255,e>>16&255,e>>24&255)}var A={MAGIC_NUMBER:55727696,MAGIC_NUMBER_EXTRA:1347834371,HEADER_LENGTH:13,HEADER_SIZE:52,MAGIC_NUMBER_INDEX:0,PIXEL_FORMAT_INDEX:2,COLOUR_SPACE_INDEX:4,HEIGHT_INDEX:6,WIDTH_INDEX:7,MIPMAPCOUNT_INDEX:11,METADATA_SIZE_INDEX:12},Lr={0:[n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],1:[n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],2:[n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],3:[n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],6:[n.COMPRESSED_RGB_ETC1_WEBGL],7:[n.COMPRESSED_RGB_S3TC_DXT1_EXT],9:[n.COMPRESSED_RGBA_S3TC_DXT3_EXT],11:[n.COMPRESSED_RGBA_S3TC_DXT5_EXT],22:[n.COMPRESSED_RGB8_ETC2],23:[n.COMPRESSED_RGBA8_ETC2_EAC],24:[n.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],25:[n.COMPRESSED_R11_EAC],26:[n.COMPRESSED_RG11_EAC],27:[n.COMPRESSED_RGBA_ASTC_4X4_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],28:[n.COMPRESSED_RGBA_ASTC_5X4_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],29:[n.COMPRESSED_RGBA_ASTC_5X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],30:[n.COMPRESSED_RGBA_ASTC_6X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],31:[n.COMPRESSED_RGBA_ASTC_6X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],32:[n.COMPRESSED_RGBA_ASTC_8X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],33:[n.COMPRESSED_RGBA_ASTC_8X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],34:[n.COMPRESSED_RGBA_ASTC_8X8_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],35:[n.COMPRESSED_RGBA_ASTC_10X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],36:[n.COMPRESSED_RGBA_ASTC_10X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],37:[n.COMPRESSED_RGBA_ASTC_10X8_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],38:[n.COMPRESSED_RGBA_ASTC_10X10_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],39:[n.COMPRESSED_RGBA_ASTC_12X10_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],40:[n.COMPRESSED_RGBA_ASTC_12X12_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]},Hr={0:dt,1:dt,2:Rt,3:Rt,6:L,7:L,9:H,11:H,22:L,23:H,24:L,25:L,26:H,27:H,28:Xr,29:Nr,30:Fr,31:Kr,32:vr,33:Vr,34:kr,35:Wr,36:zr,37:$r,38:jr,39:Jr,40:Zr};function At(e){let r=new Uint32Array(e,0,A.HEADER_LENGTH)[A.MAGIC_NUMBER_INDEX];return r===A.MAGIC_NUMBER||r===A.MAGIC_NUMBER_EXTRA}function xt(e){let t=new Uint32Array(e,0,A.HEADER_LENGTH),r=t[A.PIXEL_FORMAT_INDEX],o=t[A.COLOUR_SPACE_INDEX],s=Lr[r]||[],a=s.length>1&&o?s[1]:s[0],i=Hr[r],c=t[A.MIPMAPCOUNT_INDEX],_=t[A.WIDTH_INDEX],f=t[A.HEIGHT_INDEX],u=A.HEADER_SIZE+t[A.METADATA_SIZE_INDEX],h=new Uint8Array(e,u);return O(h,{mipMapLevels:c,width:_,height:f,sizeFunction:i,internalFormat:a})}function dt(e,t){return e=Math.max(e,16),t=Math.max(t,8),e*t/4}function Rt(e,t){return e=Math.max(e,8),t=Math.max(t,8),e*t/2}function L(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8}function H(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16}function Xr(e,t){return Math.floor((e+4)/5)*Math.floor((t+3)/4)*16}function Nr(e,t){return Math.floor((e+4)/5)*Math.floor((t+4)/5)*16}function Fr(e,t){return Math.floor((e+5)/6)*Math.floor((t+4)/5)*16}function Kr(e,t){return Math.floor((e+5)/6)*Math.floor((t+5)/6)*16}function vr(e,t){return Math.floor((e+7)/8)*Math.floor((t+4)/5)*16}function Vr(e,t){return Math.floor((e+7)/8)*Math.floor((t+5)/6)*16}function kr(e,t){return Math.floor((e+7)/8)*Math.floor((t+7)/8)*16}function Wr(e,t){return Math.floor((e+9)/10)*Math.floor((t+4)/5)*16}function zr(e,t){return Math.floor((e+9)/10)*Math.floor((t+5)/6)*16}function $r(e,t){return Math.floor((e+9)/10)*Math.floor((t+7)/8)*16}function jr(e,t){return Math.floor((e+9)/10)*Math.floor((t+9)/10)*16}function Jr(e,t){return Math.floor((e+11)/12)*Math.floor((t+9)/10)*16}function Zr(e,t){return Math.floor((e+11)/12)*Math.floor((t+11)/12)*16}function Tt(e){if(J(e))return lt(e);if(Et(e))return mt(e);if(At(e))return xt(e);throw new Error("Texture container format not recognized")}var Te={dataType:null,batchType:null,name:"Texture Containers",id:"compressed-texture",module:"textures",version:m,worker:!0,extensions:["ktx","ktx2","dds","pvr"],mimeTypes:["image/ktx2","image/ktx","image/vnd-ms.dds","image/x-dds","application/octet-stream"],binary:!0,options:{"compressed-texture":{libraryPath:"libs/",useBasis:!1}}},Ct={...Te,parse:async(e,t)=>t?.["compressed-texture"]?.useBasis?(t.basis={format:{alpha:"BC3",noAlpha:"BC1"},...t.basis,containerFormat:"ktx2",module:"encoder"},(await U(e,t))[0]):Tt(e)};var Ce={dataType:null,batchType:null,id:"crunch",name:"Crunch",module:"textures",version:m,worker:!0,extensions:["crn"],mimeTypes:["image/crn","image/x-crn","application/octet-stream"],binary:!0,options:{crunch:{libraryPath:"libs/"}}};var ge=new Uint32Array([305419896]),Yr=new Uint8Array(ge.buffer,ge.byteOffset,ge.byteLength),qr=Yr[0]!==18,gt=qr,Qr={u1:Uint8Array,i1:Int8Array,u2:Uint16Array,i2:Int16Array,u4:Uint32Array,i4:Int32Array,f4:Float32Array,f8:Float64Array};function he(e,t){let r=new DataView(e),{header:o,headerEndOffset:s}=eo(r),a=o.descr,i=Qr[a.slice(1,3)];if(!i)throw new Error(`Unimplemented type ${a}`);let _=o.shape?.reduce((u,h)=>u*h)*i.BYTES_PER_ELEMENT;if(e.byteLength<s+_)throw new Error("Buffer overflow");let f=new i(e.slice(s,s+_));if(a[0]===">"&&gt||a[0]==="<"&&!gt)throw new Error("Incorrect endianness");return{data:f,header:o}}function eo(e){let t=e.getUint8(6),r=8,o;t>=2?(o=e.getUint32(r,!0),r+=4):(o=e.getUint16(r,!0),r+=2);let s=t<=2?"latin1":"utf-8",a=new TextDecoder(s),i=new Uint8Array(e.buffer,r,o),c=a.decode(i);return r+=o,{header:JSON.parse(c.replace(/'/g,'"').replace("False","false").replace("(","[").replace(/,*\),*/g,"]")),headerEndOffset:r}}var to=new Uint8Array([147,78,85,77,80,89]),De={dataType:null,batchType:null,name:"NPY",id:"npy",module:"textures",version:m,worker:!0,extensions:["npy"],mimeTypes:[],tests:[to.buffer],options:{npy:{}}},ht={...De,parseSync:he,parse:async(e,t)=>he(e,t)};var Dt={DECODER:"crunch.js"};async function Pt(e,t,r){let o=["texture-compressor","--type","s3tc","--compression","DXT1","--quality","normal","--input",e,"--output",t];return await new w().start({command:"npx",arguments:o,spawn:r}),t}var Bt={name:"DDS Texture Container",id:"dds",module:"textures",version:m,extensions:["dds"],options:{texture:{format:"auto",compression:"auto",quality:"auto",mipmap:!1,flipY:!1,toolFlags:""}},encodeURLtoURL:Pt,encode(){throw new Error("Not implemented")}};async function Mt(e,t={}){let{useSRGB:r=!1,qualityLevel:o=10,encodeUASTC:s=!1,mipmaps:a=!1}=t?.["ktx2-basis-writer"]||{},{BasisEncoder:i}=await b(t),c=new i;try{let _=new Uint8Array(e.width*e.height*4);c.setCreateKTX2File(!0),c.setKTX2UASTCSupercompression(!0),c.setKTX2SRGBTransferFunc(!0),c.setSliceSourceImage(0,e.data,e.width,e.height,!1),c.setPerceptual(r),c.setMipSRGB(r),c.setQualityLevel(o),c.setUASTC(s),c.setMipGen(a);let f=c.encode(_);return _.subarray(0,f).buffer}catch(_){throw console.error("Basis Universal Supercompressed GPU Texture encoder Error: ",_),_}finally{c.delete()}}var wt={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:m,extensions:["ktx2"],options:{["ktx2-basis-writer"]:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}},encode:Mt};var yt="4.2.0-alpha.6";var ro=globalThis.loaders?.parseImageNode,Pe=typeof Image<"u",Be=typeof ImageBitmap<"u",oo=Boolean(ro),Me=se?!0:oo;function Ot(e){switch(e){case"auto":return Be||Pe||Me;case"imagebitmap":return Be;case"image":return Pe;case"data":return Me;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function Gt(){if(Be)return"imagebitmap";if(Pe)return"image";if(Me)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function It(e){let t=no(e);if(!t)throw new Error("Not an image");return t}function we(e){return Y(e)}function Y(e){switch(It(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),r=t.getContext("2d");if(!r)throw new Error("getImageData");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function no(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&e instanceof Image?"image":e&&typeof e=="object"&&e.data&&e.width&&e.height?"data":null}var so=/^data:image\/svg\+xml/,ao=/\.svg((\?|#).*)?$/;function q(e){return e&&(so.test(e)||ao.test(e))}function bt(e,t){if(q(t)){let o=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(o=unescape(encodeURIComponent(o)))}catch(a){throw new Error(a.message)}return`data:image/svg+xml;base64,${btoa(o)}`}return ye(e,t)}function ye(e,t){if(q(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function Q(e,t,r){let o=bt(e,r),s=self.URL||self.webkitURL,a=typeof o!="string"&&s.createObjectURL(o);try{return await io(a||o,t)}finally{a&&s.revokeObjectURL(a)}}async function io(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((o,s)=>{try{r.onload=()=>o(r),r.onerror=a=>{let i=a instanceof Error?a.message:"error";s(new Error(i))}}catch(a){s(a)}})}var co={},Ut=!0;async function Lt(e,t,r){let o;q(r)?o=await Q(e,t,r):o=ye(e,r);let s=t&&t.imagebitmap;return await _o(o,s)}async function _o(e,t=null){if((lo(t)||!Ut)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),Ut=!1}return await createImageBitmap(e)}function lo(e){for(let t in e||co)return!1;return!0}function Ht(e){return!Eo(e,"ftyp",4)||!(e[8]&96)?null:fo(e)}function fo(e){switch(So(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function So(e,t,r){return String.fromCharCode(...e.slice(t,r))}function uo(e){return[...e].map(t=>t.charCodeAt(0))}function Eo(e,t,r=0){let o=uo(t);for(let s=0;s<o.length;++s)if(o[s]!==e[s+r])return!1;return!0}var g=!1,X=!0;function ee(e){let t=N(e);return po(t)||xo(t)||Ro(t)||Ao(t)||mo(t)}function mo(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=Ht(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function po(e){let t=N(e);return t.byteLength>=24&&t.getUint32(0,g)===2303741511?{mimeType:"image/png",width:t.getUint32(16,g),height:t.getUint32(20,g)}:null}function Ro(e){let t=N(e);return t.byteLength>=10&&t.getUint32(0,g)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,X),height:t.getUint16(8,X)}:null}function Ao(e){let t=N(e);return t.byteLength>=14&&t.getUint16(0,g)===16973&&t.getUint32(2,X)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,X),height:t.getUint32(22,X)}:null}function xo(e){let t=N(e);if(!(t.byteLength>=3&&t.getUint16(0,g)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:o,sofMarkers:s}=To(),a=2;for(;a+9<t.byteLength;){let i=t.getUint16(a,g);if(s.has(i))return{mimeType:"image/jpeg",height:t.getUint16(a+5,g),width:t.getUint16(a+7,g)};if(!o.has(i))return null;a+=2,a+=t.getUint16(a,g)}return null}function To(){let e=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)e.add(r);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function N(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}async function Xt(e,t){let{mimeType:r}=ee(e)||{},o=globalThis.loaders?.parseImageNode;return x(o),await o(e,r)}async function Nt(e,t,r){t=t||{};let s=(t.image||{}).type||"auto",{url:a}=r||{},i=Co(s),c;switch(i){case"imagebitmap":c=await Lt(e,t,a);break;case"image":c=await Q(e,t,a);break;case"data":c=await Xt(e,t);break;default:x(!1)}return s==="data"&&(c=Y(c)),c}function Co(e){switch(e){case"auto":case"data":return Gt();default:return Ot(e),e}}var go=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],ho=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],Do={image:{type:"auto",decode:!0}},D={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:yt,mimeTypes:ho,extensions:go,parse:Nt,tests:[e=>Boolean(ee(new DataView(e)))],options:Do};function te(e,t,r){let o=typeof e=="function"?e({...t,...r}):e,s=t.baseUrl;return s&&(o=s[s.length-1]==="/"?`${s}${o}`:`${s}/${o}`),le(o)}var Po=e=>e&&typeof e=="object";async function Ft(e,t,r={}){return await Oe(e,t,r)}async function Oe(e,t,r){return Array.isArray(e)?await Mo(e,t,r):Po(e)?await Bo(e,t,r):await t(e,r)}async function Bo(e,t,r){let o=[],s={};for(let a in e){let i=e[a],c=Oe(i,t,r).then(_=>{s[a]=_});o.push(c)}return await Promise.all(o),s}async function Mo(e,t,r={}){let o=e.map(s=>Oe(s,t,r));return await Promise.all(o)}async function G(e,t,r){return await Ft(e,o=>Ge(o,t,r))}async function Ge(e,t,r){let s=await(await fetch(e,r.fetch)).arrayBuffer();return await t(s,r)}async function Kt(e,t={}){let r=await F(e,t);return await G(r,D.parse,t)}async function F(e,t,r={}){let o=t&&t.image&&t.image.mipLevels||0;return o!==0?await wo(e,o,t,r):te(e,t,r)}async function wo(e,t,r,o){let s=[];if(t==="auto"){let a=te(e,r,{...o,lod:0}),i=await Ge(a,D.parse,r),{width:c,height:_}=we(i);t=yo({width:c,height:_}),s.push(a)}x(t>0);for(let a=s.length;a<t;++a){let i=te(e,r,{...o,lod:a});s.push(i)}return s}function yo(e){return 1+Math.floor(Math.log2(Math.max(e.width,e.height)))}async function vt(e,t,r={}){let o=await Oo(e,t,r);return await G(o,D.parse,r)}async function Oo(e,t,r={}){let o=[];for(let s=0;s<e;s++){let a=F(t,r,{index:s});o.push(a)}return await Promise.all(o)}var Go=34069,Io=34070,bo=34071,Uo=34072,Lo=34073,Ho=34074,Vt=[{face:Go,direction:"right",axis:"x",sign:"positive"},{face:Io,direction:"left",axis:"x",sign:"negative"},{face:bo,direction:"top",axis:"y",sign:"positive"},{face:Uo,direction:"bottom",axis:"y",sign:"negative"},{face:Lo,direction:"front",axis:"z",sign:"positive"},{face:Ho,direction:"back",axis:"z",sign:"negative"}];async function Xo(e,t){let r={},o=[],s=0;for(let a=0;a<Vt.length;++a){let i=Vt[s],c=F(e,t,{...i,index:s++}).then(_=>{r[i.face]=_});o.push(c)}return await Promise.all(o),r}async function kt(e,t={}){let r=await Xo(e,t);return await G(r,D.parse,t)}var No={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:m,extensions:["ktx2"],worker:!0,options:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}};return ar(K);})();
9
9
  return __exports__;
10
10
  });
package/dist/index.cjs CHANGED
@@ -43,9 +43,10 @@ __export(dist_exports, {
43
43
  module.exports = __toCommonJS(dist_exports);
44
44
 
45
45
  // dist/lib/utils/version.js
46
- var VERSION = true ? "4.2.0-alpha.4" : "latest";
46
+ var VERSION = true ? "4.2.0-alpha.6" : "latest";
47
47
 
48
48
  // dist/lib/parsers/basis-module-loader.js
49
+ var import_loader_utils = require("@loaders.gl/loader-utils");
49
50
  var import_worker_utils = require("@loaders.gl/worker-utils");
50
51
  var BASIS_EXTERNAL_LIBRARIES = {
51
52
  /** Basis transcoder, javascript wrapper part */
@@ -59,11 +60,12 @@ var BASIS_EXTERNAL_LIBRARIES = {
59
60
  };
60
61
  var loadBasisTranscoderPromise;
61
62
  async function loadBasisTranscoderModule(options) {
62
- const modules = options.modules || {};
63
- if (modules.basis) {
64
- return modules.basis;
63
+ (0, import_loader_utils.registerJSModules)(options.modules);
64
+ const basis = (0, import_loader_utils.getJSModuleOrNull)("basis");
65
+ if (basis) {
66
+ return basis;
65
67
  }
66
- loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTranscoder(options);
68
+ loadBasisTranscoderPromise ||= loadBasisTranscoder(options);
67
69
  return await loadBasisTranscoderPromise;
68
70
  }
69
71
  async function loadBasisTranscoder(options) {
@@ -631,6 +633,8 @@ function selectSupportedBasisFormat() {
631
633
 
632
634
  // dist/basis-loader.js
633
635
  var BasisWorkerLoader = {
636
+ dataType: null,
637
+ batchType: null,
634
638
  name: "Basis",
635
639
  id: "basis",
636
640
  module: "textures",
@@ -643,12 +647,9 @@ var BasisWorkerLoader = {
643
647
  options: {
644
648
  basis: {
645
649
  format: "auto",
646
- // gl context doesn't exist on a worker thread
647
650
  libraryPath: "libs/",
648
651
  containerFormat: "auto",
649
- // 'basis' || 'ktx2' || 'auto'
650
652
  module: "transcoder"
651
- // 'transcoder' || 'encoder'
652
653
  }
653
654
  }
654
655
  };
@@ -658,7 +659,7 @@ var BasisLoader = {
658
659
  };
659
660
 
660
661
  // dist/lib/parsers/parse-dds.js
661
- var import_loader_utils = require("@loaders.gl/loader-utils");
662
+ var import_loader_utils2 = require("@loaders.gl/loader-utils");
662
663
  var DDS_CONSTANTS = {
663
664
  MAGIC_NUMBER: 542327876,
664
665
  HEADER_LENGTH: 31,
@@ -700,11 +701,11 @@ function isDDS(data) {
700
701
  function parseDDS(data) {
701
702
  const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
702
703
  const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];
703
- (0, import_loader_utils.assert)(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), "DDS: Unsupported format, must contain a FourCC code");
704
+ (0, import_loader_utils2.assert)(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), "DDS: Unsupported format, must contain a FourCC code");
704
705
  const fourCC = int32ToFourCC(pixelFormatNumber);
705
706
  const internalFormat = DDS_PIXEL_FORMATS[fourCC];
706
707
  const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
707
- (0, import_loader_utils.assert)(internalFormat && sizeFunction, `DDS: Unknown pixel format ${pixelFormatNumber}`);
708
+ (0, import_loader_utils2.assert)(internalFormat && sizeFunction, `DDS: Unknown pixel format ${pixelFormatNumber}`);
708
709
  let mipMapLevels = 1;
709
710
  if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {
710
711
  mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);
@@ -942,6 +943,8 @@ function parseCompressedTexture(data) {
942
943
 
943
944
  // dist/compressed-texture-loader.js
944
945
  var CompressedTextureWorkerLoader = {
946
+ dataType: null,
947
+ batchType: null,
945
948
  name: "Texture Containers",
946
949
  id: "compressed-texture",
947
950
  module: "textures",
@@ -994,6 +997,8 @@ var CompressedTextureLoader = {
994
997
 
995
998
  // dist/crunch-loader.js
996
999
  var CrunchLoader = {
1000
+ dataType: null,
1001
+ batchType: null,
997
1002
  id: "crunch",
998
1003
  name: "Crunch",
999
1004
  module: "textures",
@@ -1070,6 +1075,8 @@ function parseHeader(view) {
1070
1075
  // dist/npy-loader.js
1071
1076
  var NPY_MAGIC_NUMBER = new Uint8Array([147, 78, 85, 77, 80, 89]);
1072
1077
  var NPYWorkerLoader = {
1078
+ dataType: null,
1079
+ batchType: null,
1073
1080
  name: "NPY",
1074
1081
  id: "npy",
1075
1082
  module: "textures",
@@ -1089,6 +1096,7 @@ var NPYLoader = {
1089
1096
  };
1090
1097
 
1091
1098
  // dist/lib/parsers/crunch-module-loader.js
1099
+ var import_loader_utils3 = require("@loaders.gl/loader-utils");
1092
1100
  var import_worker_utils2 = require("@loaders.gl/worker-utils");
1093
1101
  var CRUNCH_EXTERNAL_LIBRARIES = {
1094
1102
  /** Crunch decoder library. It is used as dynamically imported script */
@@ -1190,18 +1198,18 @@ var KTX2BasisWriter = {
1190
1198
  };
1191
1199
 
1192
1200
  // dist/lib/texture-api/load-image.js
1193
- var import_loader_utils3 = require("@loaders.gl/loader-utils");
1201
+ var import_loader_utils5 = require("@loaders.gl/loader-utils");
1194
1202
  var import_images = require("@loaders.gl/images");
1195
1203
 
1196
1204
  // dist/lib/texture-api/generate-url.js
1197
- var import_loader_utils2 = require("@loaders.gl/loader-utils");
1205
+ var import_loader_utils4 = require("@loaders.gl/loader-utils");
1198
1206
  function generateUrl(getUrl, options, urlOptions) {
1199
1207
  let url = typeof getUrl === "function" ? getUrl({ ...options, ...urlOptions }) : getUrl;
1200
1208
  const baseUrl = options.baseUrl;
1201
1209
  if (baseUrl) {
1202
1210
  url = baseUrl[baseUrl.length - 1] === "/" ? `${baseUrl}${url}` : `${baseUrl}/${url}`;
1203
1211
  }
1204
- return (0, import_loader_utils2.resolvePath)(url);
1212
+ return (0, import_loader_utils4.resolvePath)(url);
1205
1213
  }
1206
1214
 
1207
1215
  // dist/lib/texture-api/async-deep-map.js
@@ -1265,7 +1273,7 @@ async function getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions) {
1265
1273
  mipLevels = getMipLevels({ width, height });
1266
1274
  urls.push(url);
1267
1275
  }
1268
- (0, import_loader_utils3.assert)(mipLevels > 0);
1276
+ (0, import_loader_utils5.assert)(mipLevels > 0);
1269
1277
  for (let mipLevel = urls.length; mipLevel < mipLevels; ++mipLevel) {
1270
1278
  const url = generateUrl(getUrl, options, { ...urlOptions, lod: mipLevel });
1271
1279
  urls.push(url);