@loaders.gl/textures 4.3.4 → 4.4.0-alpha.10

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 (136) hide show
  1. package/dist/basis-loader.js +1 -0
  2. package/dist/basis-loader.js.map +1 -0
  3. package/dist/basis-worker-node.js +287 -83
  4. package/dist/basis-worker.d.ts +2 -0
  5. package/dist/basis-worker.d.ts.map +1 -0
  6. package/dist/basis-worker.js +45 -14
  7. package/dist/basis-worker.js.map +1 -0
  8. package/dist/compressed-texture-loader.d.ts +2 -1
  9. package/dist/compressed-texture-loader.d.ts.map +1 -1
  10. package/dist/compressed-texture-loader.js +2 -2
  11. package/dist/compressed-texture-loader.js.map +1 -0
  12. package/dist/compressed-texture-worker.d.ts +2 -0
  13. package/dist/compressed-texture-worker.d.ts.map +1 -0
  14. package/dist/compressed-texture-worker.js +46 -15
  15. package/dist/compressed-texture-worker.js.map +1 -0
  16. package/dist/compressed-texture-writer.d.ts +1 -0
  17. package/dist/compressed-texture-writer.d.ts.map +1 -1
  18. package/dist/compressed-texture-writer.js +2 -0
  19. package/dist/compressed-texture-writer.js.map +1 -0
  20. package/dist/crunch-loader.js +1 -0
  21. package/dist/crunch-loader.js.map +1 -0
  22. package/dist/crunch-worker.d.ts +2 -0
  23. package/dist/crunch-worker.d.ts.map +1 -0
  24. package/dist/crunch-worker.js +38 -7
  25. package/dist/crunch-worker.js.map +1 -0
  26. package/dist/dist.dev.js +55 -18
  27. package/dist/dist.min.js +2 -2
  28. package/dist/index.cjs +14 -10
  29. package/dist/index.cjs.map +3 -3
  30. package/dist/index.js +1 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/ktx2-basis-writer-worker-node.js +276 -76
  33. package/dist/ktx2-basis-writer-worker.d.ts +2 -0
  34. package/dist/ktx2-basis-writer-worker.d.ts.map +1 -0
  35. package/dist/ktx2-basis-writer-worker.js +36 -7
  36. package/dist/ktx2-basis-writer-worker.js.map +1 -0
  37. package/dist/ktx2-basis-writer.d.ts +1 -0
  38. package/dist/ktx2-basis-writer.d.ts.map +1 -1
  39. package/dist/ktx2-basis-writer.js +2 -0
  40. package/dist/ktx2-basis-writer.js.map +1 -0
  41. package/dist/lib/encoders/encode-ktx.d.ts +1 -1
  42. package/dist/lib/encoders/encode-ktx.d.ts.map +1 -1
  43. package/dist/lib/encoders/encode-ktx.js +1 -0
  44. package/dist/lib/encoders/encode-ktx.js.map +1 -0
  45. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +2 -1
  46. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -1
  47. package/dist/lib/encoders/encode-ktx2-basis-texture.js +2 -1
  48. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  49. package/dist/lib/encoders/encode-texture.js +1 -0
  50. package/dist/lib/encoders/encode-texture.js.map +1 -0
  51. package/dist/lib/gl-extensions.js +1 -0
  52. package/dist/lib/gl-extensions.js.map +1 -0
  53. package/dist/lib/parsers/basis-module-loader.d.ts +3 -2
  54. package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -1
  55. package/dist/lib/parsers/basis-module-loader.js +1 -0
  56. package/dist/lib/parsers/basis-module-loader.js.map +1 -0
  57. package/dist/lib/parsers/crunch-module-loader.js +1 -0
  58. package/dist/lib/parsers/crunch-module-loader.js.map +1 -0
  59. package/dist/lib/parsers/parse-basis.d.ts +11 -1
  60. package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
  61. package/dist/lib/parsers/parse-basis.js +10 -7
  62. package/dist/lib/parsers/parse-basis.js.map +1 -0
  63. package/dist/lib/parsers/parse-compressed-texture.js +1 -0
  64. package/dist/lib/parsers/parse-compressed-texture.js.map +1 -0
  65. package/dist/lib/parsers/parse-crunch.js +1 -0
  66. package/dist/lib/parsers/parse-crunch.js.map +1 -0
  67. package/dist/lib/parsers/parse-dds.js +1 -0
  68. package/dist/lib/parsers/parse-dds.js.map +1 -0
  69. package/dist/lib/parsers/parse-ktx.js +1 -0
  70. package/dist/lib/parsers/parse-ktx.js.map +1 -0
  71. package/dist/lib/parsers/parse-npy.js +1 -0
  72. package/dist/lib/parsers/parse-npy.js.map +1 -0
  73. package/dist/lib/parsers/parse-pvr.js +1 -0
  74. package/dist/lib/parsers/parse-pvr.js.map +1 -0
  75. package/dist/lib/texture-api/async-deep-map.js +1 -0
  76. package/dist/lib/texture-api/async-deep-map.js.map +1 -0
  77. package/dist/lib/texture-api/deep-load.js +1 -0
  78. package/dist/lib/texture-api/deep-load.js.map +1 -0
  79. package/dist/lib/texture-api/generate-url.js +1 -0
  80. package/dist/lib/texture-api/generate-url.js.map +1 -0
  81. package/dist/lib/texture-api/load-image-array.js +1 -0
  82. package/dist/lib/texture-api/load-image-array.js.map +1 -0
  83. package/dist/lib/texture-api/load-image-cube.js +1 -0
  84. package/dist/lib/texture-api/load-image-cube.js.map +1 -0
  85. package/dist/lib/texture-api/load-image.js +1 -0
  86. package/dist/lib/texture-api/load-image.js.map +1 -0
  87. package/dist/lib/texture-api/texture-api-types.js +1 -0
  88. package/dist/lib/texture-api/texture-api-types.js.map +1 -0
  89. package/dist/lib/utils/extract-mipmap-images.js +1 -0
  90. package/dist/lib/utils/extract-mipmap-images.js.map +1 -0
  91. package/dist/lib/utils/ktx-format-helper.js +1 -0
  92. package/dist/lib/utils/ktx-format-helper.js.map +1 -0
  93. package/dist/lib/utils/texture-formats.js +1 -0
  94. package/dist/lib/utils/texture-formats.js.map +1 -0
  95. package/dist/lib/utils/version.js +2 -1
  96. package/dist/lib/utils/version.js.map +1 -0
  97. package/dist/libs/libs/README.md +9 -0
  98. package/dist/libs/libs/basis_encoder.js +21 -0
  99. package/dist/libs/libs/basis_encoder.wasm +0 -0
  100. package/dist/libs/libs/basis_transcoder.js +22 -0
  101. package/dist/libs/libs/basis_transcoder.wasm +0 -0
  102. package/dist/libs/libs/crunch.js +136 -0
  103. package/dist/npy-loader.js +1 -0
  104. package/dist/npy-loader.js.map +1 -0
  105. package/dist/npy-worker.d.ts +2 -0
  106. package/dist/npy-worker.d.ts.map +1 -0
  107. package/dist/npy-worker.js +5 -2
  108. package/dist/npy-worker.js.map +1 -0
  109. package/dist/workers/basis-worker-node.js +1 -0
  110. package/dist/workers/basis-worker-node.js.map +1 -0
  111. package/dist/workers/basis-worker.js +1 -0
  112. package/dist/workers/basis-worker.js.map +1 -0
  113. package/dist/workers/compressed-texture-worker.js +1 -1
  114. package/dist/workers/compressed-texture-worker.js.map +1 -0
  115. package/dist/workers/crunch-worker.js +1 -0
  116. package/dist/workers/crunch-worker.js.map +1 -0
  117. package/dist/workers/ktx2-basis-writer-worker-node.js +1 -0
  118. package/dist/workers/ktx2-basis-writer-worker-node.js.map +1 -0
  119. package/dist/workers/ktx2-basis-writer-worker.js +1 -0
  120. package/dist/workers/ktx2-basis-writer-worker.js.map +1 -0
  121. package/dist/workers/npy-worker.js +1 -0
  122. package/dist/workers/npy-worker.js.map +1 -0
  123. package/package.json +28 -7
  124. package/src/basis-worker.ts +7 -0
  125. package/src/compressed-texture-loader.ts +3 -4
  126. package/src/compressed-texture-worker.ts +6 -0
  127. package/src/compressed-texture-writer.ts +1 -0
  128. package/src/crunch-worker.ts +6 -0
  129. package/src/ktx2-basis-writer-worker.ts +6 -0
  130. package/src/ktx2-basis-writer.ts +1 -0
  131. package/src/lib/encoders/encode-ktx.ts +1 -1
  132. package/src/lib/encoders/encode-ktx2-basis-texture.ts +3 -2
  133. package/src/lib/parsers/basis-module-loader.ts +5 -5
  134. package/src/lib/parsers/parse-basis.ts +40 -12
  135. package/src/npy-worker.ts +6 -0
  136. package/src/workers/compressed-texture-worker.ts +0 -1
package/dist/dist.dev.js CHANGED
@@ -116,16 +116,20 @@ var __exports__ = (() => {
116
116
  return module || null;
117
117
  }
118
118
 
119
+ // ../worker-utils/src/lib/npm-tag.ts
120
+ var NPM_TAG = "beta";
121
+
119
122
  // ../worker-utils/src/lib/env-utils/version.ts
120
- var NPM_TAG = "latest";
123
+ var warningIssued = false;
121
124
  function getVersion() {
122
125
  if (!globalThis._loadersgl_?.version) {
123
126
  globalThis._loadersgl_ = globalThis._loadersgl_ || {};
124
- if (typeof __VERSION__ === "undefined") {
127
+ if (typeof __VERSION__ === "undefined" && !warningIssued) {
125
128
  console.warn(
126
129
  "loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN."
127
130
  );
128
131
  globalThis._loadersgl_.version = NPM_TAG;
132
+ warningIssued = true;
129
133
  } else {
130
134
  globalThis._loadersgl_.version = __VERSION__;
131
135
  }
@@ -172,6 +176,9 @@ var __exports__ = (() => {
172
176
  return await loadLibraryPromises[libraryUrl];
173
177
  }
174
178
  function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
179
+ if (options?.core) {
180
+ throw new Error("loadLibrary: options.core must be pre-normalized");
181
+ }
175
182
  if (!options.useLocalLibraries && library.startsWith("http")) {
176
183
  return library;
177
184
  }
@@ -197,10 +204,20 @@ var __exports__ = (() => {
197
204
  return await loadAsArrayBuffer(libraryUrl);
198
205
  }
199
206
  if (!isBrowser2) {
207
+ const { requireFromFile } = globalThis.loaders || {};
200
208
  try {
201
- const { requireFromFile } = globalThis.loaders || {};
202
- return await requireFromFile?.(libraryUrl);
209
+ const result = await requireFromFile?.(libraryUrl);
210
+ if (result || !libraryUrl.includes("/dist/libs/")) {
211
+ return result;
212
+ }
213
+ return await requireFromFile?.(libraryUrl.replace("/dist/libs/", "/src/libs/"));
203
214
  } catch (error) {
215
+ if (libraryUrl.includes("/dist/libs/")) {
216
+ try {
217
+ return await requireFromFile?.(libraryUrl.replace("/dist/libs/", "/src/libs/"));
218
+ } catch {
219
+ }
220
+ }
204
221
  console.error(error);
205
222
  return null;
206
223
  }
@@ -236,7 +253,14 @@ var __exports__ = (() => {
236
253
  const response = await fetch(url);
237
254
  return await response.arrayBuffer();
238
255
  }
239
- return await readFileAsArrayBuffer(url);
256
+ try {
257
+ return await readFileAsArrayBuffer(url);
258
+ } catch {
259
+ if (url.includes("/dist/libs/")) {
260
+ return await readFileAsArrayBuffer(url.replace("/dist/libs/", "/src/libs/"));
261
+ }
262
+ throw new Error(`Failed to load ArrayBuffer from ${url}`);
263
+ }
240
264
  }
241
265
  async function loadAsText(url) {
242
266
  const { readFileAsText } = globalThis.loaders || {};
@@ -244,7 +268,14 @@ var __exports__ = (() => {
244
268
  const response = await fetch(url);
245
269
  return await response.text();
246
270
  }
247
- return await readFileAsText(url);
271
+ try {
272
+ return await readFileAsText(url);
273
+ } catch {
274
+ if (url.includes("/dist/libs/")) {
275
+ return await readFileAsText(url.replace("/dist/libs/", "/src/libs/"));
276
+ }
277
+ throw new Error(`Failed to load text from ${url}`);
278
+ }
248
279
  }
249
280
 
250
281
  // ../worker-utils/src/index.ts
@@ -944,18 +975,18 @@ var __exports__ = (() => {
944
975
  bgr565: { basisFormat: 15, compressed: false },
945
976
  rgba4444: { basisFormat: 16, compressed: false }
946
977
  };
947
- async function parseBasis(data, options) {
948
- if (options.basis.containerFormat === "auto") {
978
+ async function parseBasis(data, options = {}) {
979
+ if (!options.basis?.containerFormat || options.basis.containerFormat === "auto") {
949
980
  if (isKTX(data)) {
950
- const fileConstructors = await loadBasisEncoderModule(options);
981
+ const fileConstructors = await loadBasisEncoderModule(options?.core || {});
951
982
  return parseKTX2File(fileConstructors.KTX2File, data, options);
952
983
  }
953
- const { BasisFile } = await loadBasisTranscoderModule(options);
984
+ const { BasisFile } = await loadBasisTranscoderModule(options?.core || {});
954
985
  return parseBasisFile(BasisFile, data, options);
955
986
  }
956
987
  switch (options.basis.module) {
957
988
  case "encoder":
958
- const fileConstructors = await loadBasisEncoderModule(options);
989
+ const fileConstructors = await loadBasisEncoderModule(options?.core || {});
959
990
  switch (options.basis.containerFormat) {
960
991
  case "ktx2":
961
992
  return parseKTX2File(fileConstructors.KTX2File, data, options);
@@ -965,7 +996,7 @@ var __exports__ = (() => {
965
996
  }
966
997
  case "transcoder":
967
998
  default:
968
- const { BasisFile } = await loadBasisTranscoderModule(options);
999
+ const { BasisFile } = await loadBasisTranscoderModule(options.core || {});
969
1000
  return parseBasisFile(BasisFile, data, options);
970
1001
  }
971
1002
  }
@@ -1068,7 +1099,7 @@ var __exports__ = (() => {
1068
1099
  };
1069
1100
  }
1070
1101
  function getBasisOptions(options, hasAlpha) {
1071
- let format = options && options.basis && options.basis.format;
1102
+ let format = options.basis?.format;
1072
1103
  if (format === "auto") {
1073
1104
  format = selectSupportedBasisFormat();
1074
1105
  }
@@ -1452,13 +1483,13 @@ var __exports__ = (() => {
1452
1483
  var CompressedTextureLoader = {
1453
1484
  ...CompressedTextureWorkerLoader,
1454
1485
  parse: async (arrayBuffer, options) => {
1486
+ options = { ...options };
1455
1487
  if (options?.["compressed-texture"]?.useBasis) {
1456
1488
  options.basis = {
1457
1489
  format: {
1458
1490
  alpha: "BC3",
1459
1491
  noAlpha: "BC1"
1460
1492
  },
1461
- // @ts-expect-error TODO not allowed to modify inputs
1462
1493
  ...options.basis,
1463
1494
  containerFormat: "ktx2",
1464
1495
  module: "encoder"
@@ -1609,6 +1640,7 @@ var __exports__ = (() => {
1609
1640
  module: "textures",
1610
1641
  version: VERSION,
1611
1642
  extensions: ["dds"],
1643
+ mimeTypes: ["image/vnd-ms.dds", "image/x-dds", "application/octet-stream"],
1612
1644
  options: {
1613
1645
  texture: {
1614
1646
  format: "auto",
@@ -1633,7 +1665,7 @@ var __exports__ = (() => {
1633
1665
  encodeUASTC = false,
1634
1666
  mipmaps = false
1635
1667
  } = options?.["ktx2-basis-writer"] || {};
1636
- const { BasisEncoder } = await loadBasisEncoderModule(options);
1668
+ const { BasisEncoder } = await loadBasisEncoderModule(options.core || {});
1637
1669
  const basisEncoder = new BasisEncoder();
1638
1670
  try {
1639
1671
  const basisFileData = new Uint8Array(image.width * image.height * 4);
@@ -1664,6 +1696,7 @@ var __exports__ = (() => {
1664
1696
  module: "textures",
1665
1697
  version: VERSION,
1666
1698
  extensions: ["ktx2"],
1699
+ mimeTypes: ["image/ktx2"],
1667
1700
  options: {
1668
1701
  ["ktx2-basis-writer"]: {
1669
1702
  useSRGB: false,
@@ -1817,7 +1850,6 @@ var __exports__ = (() => {
1817
1850
  }
1818
1851
 
1819
1852
  // ../images/src/lib/parsers/parse-to-image-bitmap.ts
1820
- var EMPTY_OBJECT = {};
1821
1853
  var imagebitmapOptionsSupported = true;
1822
1854
  async function parseToImageBitmap(arrayBuffer, options, url) {
1823
1855
  let blob;
@@ -1845,8 +1877,13 @@ var __exports__ = (() => {
1845
1877
  return await createImageBitmap(blob);
1846
1878
  }
1847
1879
  function isEmptyObject(object) {
1848
- for (const key in object || EMPTY_OBJECT) {
1849
- return false;
1880
+ if (!object) {
1881
+ return true;
1882
+ }
1883
+ for (const key in object) {
1884
+ if (Object.prototype.hasOwnProperty.call(object, key)) {
1885
+ return false;
1886
+ }
1850
1887
  }
1851
1888
  return true;
1852
1889
  }
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 Jt=Object.create;var k=Object.defineProperty;var Zt=Object.getOwnPropertyDescriptor;var qt=Object.getOwnPropertyNames;var Qt=Object.getPrototypeOf,eo=Object.prototype.hasOwnProperty;var we=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),to=(e,t)=>{for(var o in t)k(e,o,{get:t[o],enumerable:!0})},v=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of qt(t))!eo.call(e,s)&&s!==o&&k(e,s,{get:()=>t[s],enumerable:!(r=Zt(t,s))||r.enumerable});return e},W=(e,t,o)=>(v(e,t,"default"),o&&v(o,t,"default")),se=(e,t,o)=>(o=e!=null?Jt(Qt(e)):{},v(t||!e||!e.__esModule?k(o,"default",{value:e,enumerable:!0}):o,e)),oo=e=>v(k({},"__esModule",{value:!0}),e);var He=we((yr,be)=>{be.exports=globalThis.loaders});var Re=we(()=>{});var V={};to(V,{BASIS_EXTERNAL_LIBRARIES:()=>F,BasisLoader:()=>st,BasisWorkerLoader:()=>ue,CRUNCH_EXTERNAL_LIBRARIES:()=>ut,CompressedTextureLoader:()=>Tt,CompressedTextureWorkerLoader:()=>me,CompressedTextureWriter:()=>Ot,CrunchLoader:()=>Oe,CrunchWorkerLoader:()=>Oe,GL_EXTENSIONS_CONSTANTS:()=>n,KTX2BasisWriter:()=>Ct,KTX2BasisWriterWorker:()=>Ur,NPYLoader:()=>Et,NPYWorkerLoader:()=>de,getSupportedGPUTextureFormats:()=>Y,loadImageTexture:()=>Lt,loadImageTextureArray:()=>It,loadImageTextureCube:()=>Nt,selectSupportedBasisFormat:()=>Ee});W(V,se(He(),1));var f="4.3.3";function p(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var C={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},ro=C.self||C.window||C.global||{},no=C.window||C.self||C.global||{},so=C.global||C.self||C.window||{},_o=C.document||{};var _e=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var Ve=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),ao=Ve&&parseFloat(Ve[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 io(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.3.3"),globalThis._loadersgl_.version}var Xe=io();function ve(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}var d={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},kr=d.self||d.window||d.global||{},Wr=d.window||d.self||d.global||{},zr=d.global||d.self||d.window||{},$r=d.document||{};var P=typeof process!="object"||String(process)!=="[object process]"||process.browser,z=typeof importScripts=="function",Yr=typeof window<"u"&&typeof window.orientation<"u",ke=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),jr=ke&&parseFloat(ke[1])||0;var ce={};async function h(e,t=null,o={},r=null){return t&&(e=We(e,t,o,r)),ce[e]=ce[e]||co(e),await ce[e]}function We(e,t,o={},r=null){if(!o.useLocalLibraries&&e.startsWith("http"))return e;r=r||e;let s=o.modules||{};return s[r]?s[r]:P?o.CDN?(ve(o.CDN.startsWith("http")),`${o.CDN}/${t}@${Xe}/dist/libs/${r}`):z?`../src/libs/${r}`:`modules/${t}/src/libs/${r}`:`modules/${t}/dist/libs/${r}`}async function co(e){if(e.endsWith("wasm"))return await So(e);if(!P)try{let{requireFromFile:o}=globalThis.loaders||{};return await o?.(e)}catch(o){return console.error(o),null}if(z)return importScripts(e);let t=await lo(e);return Ro(t,e)}function Ro(e,t){if(!P){let{requireFromString:r}=globalThis.loaders||{};return r?.(e,t)}if(z)return eval.call(globalThis,e),null;let o=document.createElement("script");o.id=t;try{o.appendChild(document.createTextNode(e))}catch{o.text=e}return document.body.appendChild(o),null}async function So(e){let{readFileAsArrayBuffer:t}=globalThis.loaders||{};return P||!t||e.startsWith("http")?await(await fetch(e)).arrayBuffer():await t(e)}async function lo(e){let{readFileAsText:t}=globalThis.loaders||{};return P||!t||e.startsWith("http")?await(await fetch(e)).text():await t(e)}var je=se(Re(),1);var ze=se(Re(),1);function $e(e=3e3){return new Promise(t=>{ze.default.exec("lsof -i -P -n | grep LISTEN",(o,r)=>{if(o){t(e);return}let s=[],_=/:(\d+) \(LISTEN\)/;r.split(`
8
- `).forEach(i=>{let c=_.exec(i);c&&s.push(Number(c[1]))});let a=e;for(;s.includes(a);)a++;t(a)})})}var Ye={command:"",arguments:[],port:5e3,autoPort:!0,wait:2e3,onSuccess:e=>{console.log(`Started ${e.props.command}`)}},K=class{id;props={...Ye};childProcess=null;port=0;successTimer;constructor({id:t="browser-driver"}={}){this.id=t}async start(t){t={...Ye,...t},this.props=t;let o=[...t.arguments];return this.port=Number(t.port),t.portArg&&(t.autoPort&&(this.port=await $e(t.port)),o.push(t.portArg,String(this.port))),await new Promise((r,s)=>{try{this._setTimeout(()=>{t.onSuccess&&t.onSuccess(this),r({})}),console.log(`Spawning ${t.command} ${t.arguments.join(" ")}`);let _=(void 0)(t.command,o,t.spawn);this.childProcess=_,_.stdout.on("data",a=>{console.log(a.toString())}),_.stderr.on("data",a=>{console.log(`Child process wrote to stderr: "${a}".`),t.ignoreStderr||(this._clearTimeout(),s(new Error(a)))}),_.on("error",a=>{console.log(`Child process errored with ${a}`),this._clearTimeout(),s(a)}),_.on("close",a=>{console.log(`Child process exited with ${a}`),this.childProcess=null,this._clearTimeout(),r({})})}catch(_){s(_)}})}async stop(){this.childProcess&&(this.childProcess.kill(),this.childProcess=null)}async exit(t=0){try{await this.stop(),process.exit(t)}catch(o){console.error(o.message||o),process.exit(1)}}_setTimeout(t){Number(this.props.wait)>0&&(this.successTimer=setTimeout(t,this.props.wait))}_clearTimeout(){this.successTimer&&clearTimeout(this.successTimer)}};var Ao="",Je={};function Se(e){for(let t in Je)if(e.startsWith(t)){let o=Je[t];e=e.replace(t,o)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${Ao}${e}`),e}var F={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Ze;async function Ae(e){ae(e.modules);let t=ie("basis");return t||(Ze||=To(e),await Ze)}async function To(e){let t=null,o=null;return[t,o]=await Promise.all([await h(F.TRANSCODER,"textures",e),await h(F.TRANSCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await fo(t,o)}function fo(e,t){let o={};return t&&(o.wasmBinary=t),new Promise(r=>{e(o).then(s=>{let{BasisFile:_,initializeBasis:a}=s;a(),r({BasisFile:_})})})}var le;async function U(e){let t=e.modules||{};return t.basisEncoder?t.basisEncoder:(le=le||Eo(e),await le)}async function Eo(e){let t=null,o=null;return[t,o]=await Promise.all([await h(F.ENCODER,"textures",e),await h(F.ENCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await uo(t,o)}function uo(e,t){let o={};return t&&(o.wasmBinary=t),new Promise(r=>{e(o).then(s=>{let{BasisFile:_,KTX2File:a,initializeBasis:i,BasisEncoder:c}=s;i(),r({BasisFile:_,KTX2File:a,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 mo=["","WEBKIT_","MOZ_"],qe={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 Y(e){if(!$){e=e||Oo()||void 0,$=new Set;for(let t of mo)for(let o in qe)if(e&&e.getExtension(`${t}${o}`)){let r=qe[o];$.add(r)}}return $}function Oo(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var Te=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=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}},g=class{constructor(t,o,r,s){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(t.buffer,t.byteOffset+o,r),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),o=this._dataView.getUint32(this._offset+4,this._littleEndian),r=t+2**32*o;return this._offset+=8,r}_nextInt32(){let t=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint8Array(t){let o=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,t);return this._offset+=t,o}_skip(t){return this._offset+=t,this}_scan(t,o=0){let r=this._offset,s=0;for(;this._dataView.getUint8(this._offset)!==o&&s<t;)s++,this._offset++;return s<t&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+r,s)}};var gn=new Uint8Array([0]),l=[171,75,84,88,32,50,48,187,13,10,26,10];function Qe(e){return new TextDecoder().decode(e)}function et(e){let t=new Uint8Array(e.buffer,e.byteOffset,l.length);if(t[0]!==l[0]||t[1]!==l[1]||t[2]!==l[2]||t[3]!==l[3]||t[4]!==l[4]||t[5]!==l[5]||t[6]!==l[6]||t[7]!==l[7]||t[8]!==l[8]||t[9]!==l[9]||t[10]!==l[10]||t[11]!==l[11])throw new Error("Missing KTX 2.0 identifier.");let o=new Te,r=17*Uint32Array.BYTES_PER_ELEMENT,s=new g(e,l.length,r,!0);o.vkFormat=s._nextUint32(),o.typeSize=s._nextUint32(),o.pixelWidth=s._nextUint32(),o.pixelHeight=s._nextUint32(),o.pixelDepth=s._nextUint32(),o.layerCount=s._nextUint32(),o.faceCount=s._nextUint32();let _=s._nextUint32();o.supercompressionScheme=s._nextUint32();let a=s._nextUint32(),i=s._nextUint32(),c=s._nextUint32(),S=s._nextUint32(),A=s._nextUint64(),x=s._nextUint64(),yt=_*3*8,re=new g(e,l.length+r,yt,!0);for(let T=0;T<_;T++)o.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+re._nextUint64(),re._nextUint64()),uncompressedByteLength:re._nextUint64()});let R=new g(e,a,i,!0),ne={vendorId:R._skip(4)._nextUint16(),descriptorType:R._nextUint16(),versionNumber:R._nextUint16(),descriptorBlockSize:R._nextUint16(),colorModel:R._nextUint8(),colorPrimaries:R._nextUint8(),transferFunction:R._nextUint8(),flags:R._nextUint8(),texelBlockDimension:[R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8()],bytesPlane:[R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8()],samples:[]},wt=6,bt=4,Ht=(ne.descriptorBlockSize/4-wt)/bt;for(let T=0;T<Ht;T++){let B={bitOffset:R._nextUint16(),bitLength:R._nextUint8(),channelType:R._nextUint8(),samplePosition:[R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};B.channelType&64?(B.sampleLower=R._nextInt32(),B.sampleUpper=R._nextInt32()):(B.sampleLower=R._nextUint32(),B.sampleUpper=R._nextUint32()),ne.samples[T]=B}o.dataFormatDescriptor.length=0,o.dataFormatDescriptor.push(ne);let I=new g(e,c,S,!0);for(;I._offset<S;){let T=I._nextUint32(),B=I._scan(T),X=Qe(B);if(o.keyValue[X]=I._nextUint8Array(T-B.byteLength-1),X.match(/^ktx/i)){let ye=Qe(o.keyValue[X]);o.keyValue[X]=ye.substring(0,ye.lastIndexOf("\0"))}let jt=T%4?4-T%4:0;I._skip(jt)}if(x<=0)return o;let m=new g(e,A,x,!0),Vt=m._nextUint16(),Xt=m._nextUint16(),Ke=m._nextUint32(),Fe=m._nextUint32(),Ge=m._nextUint32(),vt=m._nextUint32(),Le=[];for(let T=0;T<_;T++)Le.push({imageFlags:m._nextUint32(),rgbSliceByteOffset:m._nextUint32(),rgbSliceByteLength:m._nextUint32(),alphaSliceByteOffset:m._nextUint32(),alphaSliceByteLength:m._nextUint32()});let Ie=A+m._offset,Ue=Ie+Ke,Ne=Ue+Fe,kt=Ne+Ge,Wt=new Uint8Array(e.buffer,e.byteOffset+Ie,Ke),zt=new Uint8Array(e.buffer,e.byteOffset+Ue,Fe),$t=new Uint8Array(e.buffer,e.byteOffset+Ne,Ge),Yt=new Uint8Array(e.buffer,e.byteOffset+kt,vt);return o.globalData={endpointCount:Vt,selectorCount:Xt,imageDescs:Le,endpointsData:Wt,selectorsData:zt,tablesData:$t,extendedData:Yt},o}function G(e,t){let o=new Array(t.mipMapLevels),r=t.width,s=t.height,_=0;for(let a=0;a<t.mipMapLevels;++a){let i=Co(t,r,s,e,a),c=po(e,a,_,i);o[a]={compressed:!0,format:t.internalFormat,data:c,width:r,height:s,levelSize:i},r=Math.max(1,r>>1),s=Math.max(1,s>>1),_+=i}return o}function po(e,t,o,r){return Array.isArray(e)?e[t].levelData:new Uint8Array(e.buffer,e.byteOffset+o,r)}function Co(e,t,o,r,s){return Array.isArray(r)?e.sizeFunction(r[s]):e.sizeFunction(t,o)}var Mo={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 tt(e){return Mo[e]}var E=[171,75,84,88,32,50,48,187,13,10,26,10];function j(e){let t=new Uint8Array(e);return!(t.byteLength<E.length||t[0]!==E[0]||t[1]!==E[1]||t[2]!==E[2]||t[3]!==E[3]||t[4]!==E[4]||t[5]!==E[5]||t[6]!==E[6]||t[7]!==E[7]||t[8]!==E[8]||t[9]!==E[9]||t[10]!==E[10]||t[11]!==E[11])}function ot(e){let t=new Uint8Array(e),o=et(t),r=Math.max(1,o.levels.length),s=o.pixelWidth,_=o.pixelHeight,a=tt(o.vkFormat);return G(o.levels,{mipMapLevels:r,width:s,height:_,sizeFunction:i=>i.uncompressedByteLength,internalFormat:a})}var xo={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 J(e,t){if(t.basis.containerFormat==="auto"){if(j(e)){let r=await U(t);return rt(r.KTX2File,e,t)}let{BasisFile:o}=await Ae(t);return fe(o,e,t)}switch(t.basis.module){case"encoder":let o=await U(t);switch(t.basis.containerFormat){case"ktx2":return rt(o.KTX2File,e,t);case"basis":default:return fe(o.BasisFile,e,t)}case"transcoder":default:let{BasisFile:r}=await Ae(t);return fe(r,e,t)}}function fe(e,t,o){let r=new e(new Uint8Array(t));try{if(!r.startTranscoding())throw new Error("Failed to start basis transcoding");let s=r.getNumImages(),_=[];for(let a=0;a<s;a++){let i=r.getNumLevels(a),c=[];for(let S=0;S<i;S++)c.push(Bo(r,a,S,o));_.push(c)}return _}finally{r.close(),r.delete()}}function Bo(e,t,o,r){let s=e.getImageWidth(t,o),_=e.getImageHeight(t,o),a=e.getHasAlpha(),{compressed:i,format:c,basisFormat:S}=nt(r,a),A=e.getImageTranscodedSizeInBytes(t,o,S),x=new Uint8Array(A);if(!e.transcodeImage(x,t,o,S,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:_,data:x,compressed:i,format:c,hasAlpha:a}}function rt(e,t,o){let r=new e(new Uint8Array(t));try{if(!r.startTranscoding())throw new Error("failed to start KTX2 transcoding");let s=r.getLevels(),_=[];for(let a=0;a<s;a++)_.push(Do(r,a,o));return[_]}finally{r.close(),r.delete()}}function Do(e,t,o){let{alphaFlag:r,height:s,width:_}=e.getImageLevelInfo(t,0,0),{compressed:a,format:i,basisFormat:c}=nt(o,r),S=e.getImageTranscodedSizeInBytes(t,0,0,c),A=new Uint8Array(S);if(!e.transcodeImage(A,t,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:_,height:s,data:A,compressed:a,levelSize:S,hasAlpha:r,format:i}}function nt(e,t){let o=e&&e.basis&&e.basis.format;return o==="auto"&&(o=Ee()),typeof o=="object"&&(o=t?o.alpha:o.noAlpha),o=o.toLowerCase(),xo[o]}function Ee(){let e=Y();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 ue={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:f,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"}}},st={...ue,parse:J};var u={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},go={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},Po=it,ho=Z,Ko=Z,Fo={DXT1:it,DXT3:Z,DXT5:Z,"ATC ":Po,ATCA:ho,ATCI:Ko};function _t(e){return new Uint32Array(e,0,u.HEADER_LENGTH)[u.MAGIC_NUMBER_INDEX]===u.MAGIC_NUMBER}function at(e){let t=new Int32Array(e,0,u.HEADER_LENGTH),o=t[u.HEADER_PF_FOURCC_INDEX];p(Boolean(t[u.HEADER_PF_FLAGS_INDEX]&u.DDPF_FOURCC),"DDS: Unsupported format, must contain a FourCC code");let r=Go(o),s=go[r],_=Fo[r];p(s&&_,`DDS: Unknown pixel format ${o}`);let a=1;t[u.HEADER_FLAGS_INDEX]&u.DDSD_MIPMAPCOUNT&&(a=Math.max(1,t[u.MIPMAPCOUNT_INDEX]));let i=t[u.HEADER_WIDTH_INDEX],c=t[u.HEADER_HEIGHT_INDEX],S=t[u.HEADER_SIZE_INDEX]+4,A=new Uint8Array(e,S);return G(A,{mipMapLevels:a,width:i,height:c,sizeFunction:_,internalFormat:s})}function it(e,t){return(e+3>>2)*(t+3>>2)*8}function Z(e,t){return(e+3>>2)*(t+3>>2)*16}function Go(e){return String.fromCharCode(e&255,e>>8&255,e>>16&255,e>>24&255)}var O={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},Lo={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]},Io={0:ct,1:ct,2:Rt,3:Rt,6:N,7:N,9:y,11:y,22:N,23:y,24:N,25:N,26:y,27:y,28:Uo,29:No,30:yo,31:wo,32:bo,33:Ho,34:Vo,35:Xo,36:vo,37:ko,38:Wo,39:zo,40:$o};function St(e){let o=new Uint32Array(e,0,O.HEADER_LENGTH)[O.MAGIC_NUMBER_INDEX];return o===O.MAGIC_NUMBER||o===O.MAGIC_NUMBER_EXTRA}function lt(e){let t=new Uint32Array(e,0,O.HEADER_LENGTH),o=t[O.PIXEL_FORMAT_INDEX],r=t[O.COLOUR_SPACE_INDEX],s=Lo[o]||[],_=s.length>1&&r?s[1]:s[0],a=Io[o],i=t[O.MIPMAPCOUNT_INDEX],c=t[O.WIDTH_INDEX],S=t[O.HEIGHT_INDEX],A=O.HEADER_SIZE+t[O.METADATA_SIZE_INDEX],x=new Uint8Array(e,A);return G(x,{mipMapLevels:i,width:c,height:S,sizeFunction:a,internalFormat:_})}function ct(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 N(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8}function y(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16}function Uo(e,t){return Math.floor((e+4)/5)*Math.floor((t+3)/4)*16}function No(e,t){return Math.floor((e+4)/5)*Math.floor((t+4)/5)*16}function yo(e,t){return Math.floor((e+5)/6)*Math.floor((t+4)/5)*16}function wo(e,t){return Math.floor((e+5)/6)*Math.floor((t+5)/6)*16}function bo(e,t){return Math.floor((e+7)/8)*Math.floor((t+4)/5)*16}function Ho(e,t){return Math.floor((e+7)/8)*Math.floor((t+5)/6)*16}function Vo(e,t){return Math.floor((e+7)/8)*Math.floor((t+7)/8)*16}function Xo(e,t){return Math.floor((e+9)/10)*Math.floor((t+4)/5)*16}function vo(e,t){return Math.floor((e+9)/10)*Math.floor((t+5)/6)*16}function ko(e,t){return Math.floor((e+9)/10)*Math.floor((t+7)/8)*16}function Wo(e,t){return Math.floor((e+9)/10)*Math.floor((t+9)/10)*16}function zo(e,t){return Math.floor((e+11)/12)*Math.floor((t+9)/10)*16}function $o(e,t){return Math.floor((e+11)/12)*Math.floor((t+11)/12)*16}function At(e){if(j(e))return ot(e);if(_t(e))return at(e);if(St(e))return lt(e);throw new Error("Texture container format not recognized")}var me={dataType:null,batchType:null,name:"Texture Containers",id:"compressed-texture",module:"textures",version:f,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={...me,parse:async(e,t)=>t?.["compressed-texture"]?.useBasis?(t.basis={format:{alpha:"BC3",noAlpha:"BC1"},...t.basis,containerFormat:"ktx2",module:"encoder"},(await J(e,t))[0]):At(e)};var Oe={dataType:null,batchType:null,id:"crunch",name:"Crunch",module:"textures",version:f,worker:!0,extensions:["crn"],mimeTypes:["image/crn","image/x-crn","application/octet-stream"],binary:!0,options:{crunch:{libraryPath:"libs/"}}};var pe=new Uint32Array([305419896]),Yo=new Uint8Array(pe.buffer,pe.byteOffset,pe.byteLength),jo=Yo[0]!==18,ft=jo,Jo={u1:Uint8Array,i1:Int8Array,u2:Uint16Array,i2:Int16Array,u4:Uint32Array,i4:Int32Array,f4:Float32Array,f8:Float64Array};function Ce(e,t){let o=new DataView(e),{header:r,headerEndOffset:s}=Zo(o),_=r.descr,a=Jo[_.slice(1,3)];if(!a)throw new Error(`Unimplemented type ${_}`);let c=r.shape?.reduce((A,x)=>A*x)*a.BYTES_PER_ELEMENT;if(e.byteLength<s+c)throw new Error("Buffer overflow");let S=new a(e.slice(s,s+c));if(_[0]===">"&&ft||_[0]==="<"&&!ft)throw new Error("Incorrect endianness");return{data:S,header:r}}function Zo(e){let t=e.getUint8(6),o=8,r;t>=2?(r=e.getUint32(o,!0),o+=4):(r=e.getUint16(o,!0),o+=2);let s=t<=2?"latin1":"utf-8",_=new TextDecoder(s),a=new Uint8Array(e.buffer,o,r),i=_.decode(a);return o+=r,{header:JSON.parse(i.replace(/'/g,'"').replace("False","false").replace("(","[").replace(/,*\),*/g,"]")),headerEndOffset:o}}var qo=new Uint8Array([147,78,85,77,80,89]),de={dataType:null,batchType:null,name:"NPY",id:"npy",module:"textures",version:f,worker:!0,extensions:["npy"],mimeTypes:[],tests:[qo.buffer],options:{npy:{}}},Et={...de,parseSync:Ce,parse:async(e,t)=>Ce(e,t)};var ut={DECODER:"crunch.js"};async function mt(e,t,o){let r=["texture-compressor","--type","s3tc","--compression","DXT1","--quality","normal","--input",e,"--output",t];return await new K().start({command:"npx",arguments:r,spawn:o}),t}var Ot={name:"DDS Texture Container",id:"dds",module:"textures",version:f,extensions:["dds"],options:{texture:{format:"auto",compression:"auto",quality:"auto",mipmap:!1,flipY:!1,toolFlags:""}},encodeURLtoURL:mt,encode(){throw new Error("Not implemented")}};async function pt(e,t={}){let{useSRGB:o=!1,qualityLevel:r=10,encodeUASTC:s=!1,mipmaps:_=!1}=t?.["ktx2-basis-writer"]||{},{BasisEncoder:a}=await U(t),i=new a;try{let c=new Uint8Array(e.width*e.height*4);i.setCreateKTX2File(!0),i.setKTX2UASTCSupercompression(!0),i.setKTX2SRGBTransferFunc(!0),i.setSliceSourceImage(0,e.data,e.width,e.height,!1),i.setPerceptual(o),i.setMipSRGB(o),i.setQualityLevel(r),i.setUASTC(s),i.setMipGen(_);let S=i.encode(c);return c.subarray(0,S).buffer}catch(c){throw console.error("Basis Universal Supercompressed GPU Texture encoder Error: ",c),c}finally{i.delete()}}var Ct={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:f,extensions:["ktx2"],options:{["ktx2-basis-writer"]:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}},encode:pt};var dt="4.3.3";var Qo=globalThis.loaders?.parseImageNode,Me=typeof Image<"u",xe=typeof ImageBitmap<"u",er=Boolean(Qo),Be=_e?!0:er;function Mt(e){switch(e){case"auto":return xe||Me||Be;case"imagebitmap":return xe;case"image":return Me;case"data":return Be;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function xt(){if(xe)return"imagebitmap";if(Me)return"image";if(Be)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function Bt(e){let t=tr(e);if(!t)throw new Error("Not an image");return t}function De(e){return q(e)}function q(e){switch(Bt(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),o=t.getContext("2d");if(!o)throw new Error("getImageData");return t.width=e.width,t.height=e.height,o.drawImage(e,0,0),o.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function tr(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 or=/^data:image\/svg\+xml/,rr=/\.svg((\?|#).*)?$/;function Q(e){return e&&(or.test(e)||rr.test(e))}function Dt(e,t){if(Q(t)){let r=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(r=unescape(encodeURIComponent(r)))}catch(_){throw new Error(_.message)}return`data:image/svg+xml;base64,${btoa(r)}`}return ge(e,t)}function ge(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,o){let r=Dt(e,o),s=self.URL||self.webkitURL,_=typeof r!="string"&&s.createObjectURL(r);try{return await nr(_||r,t)}finally{_&&s.revokeObjectURL(_)}}async function nr(e,t){let o=new Image;return o.src=e,t.image&&t.image.decode&&o.decode?(await o.decode(),o):await new Promise((r,s)=>{try{o.onload=()=>r(o),o.onerror=_=>{let a=_ instanceof Error?_.message:"error";s(new Error(a))}}catch(_){s(_)}})}var sr={},gt=!0;async function Pt(e,t,o){let r;Q(o)?r=await ee(e,t,o):r=ge(e,o);let s=t&&t.imagebitmap;return await _r(r,s)}async function _r(e,t=null){if((ar(t)||!gt)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(o){console.warn(o),gt=!1}return await createImageBitmap(e)}function ar(e){for(let t in e||sr)return!1;return!0}function ht(e){return!Sr(e,"ftyp",4)||!(e[8]&96)?null:ir(e)}function ir(e){switch(cr(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function cr(e,t,o){return String.fromCharCode(...e.slice(t,o))}function Rr(e){return[...e].map(t=>t.charCodeAt(0))}function Sr(e,t,o=0){let r=Rr(t);for(let s=0;s<r.length;++s)if(r[s]!==e[s+o])return!1;return!0}var M=!1,w=!0;function te(e){let t=b(e);return Ar(t)||Er(t)||Tr(t)||fr(t)||lr(t)}function lr(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),o=ht(t);return o?{mimeType:o.mimeType,width:0,height:0}:null}function Ar(e){let t=b(e);return t.byteLength>=24&&t.getUint32(0,M)===2303741511?{mimeType:"image/png",width:t.getUint32(16,M),height:t.getUint32(20,M)}:null}function Tr(e){let t=b(e);return t.byteLength>=10&&t.getUint32(0,M)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,w),height:t.getUint16(8,w)}:null}function fr(e){let t=b(e);return t.byteLength>=14&&t.getUint16(0,M)===16973&&t.getUint32(2,w)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,w),height:t.getUint32(22,w)}:null}function Er(e){let t=b(e);if(!(t.byteLength>=3&&t.getUint16(0,M)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:r,sofMarkers:s}=ur(),_=2;for(;_+9<t.byteLength;){let a=t.getUint16(_,M);if(s.has(a))return{mimeType:"image/jpeg",height:t.getUint16(_+5,M),width:t.getUint16(_+7,M)};if(!r.has(a))return null;_+=2,_+=t.getUint16(_,M)}return null}function ur(){let e=new Set([65499,65476,65484,65501,65534]);for(let o=65504;o<65520;++o)e.add(o);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function b(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 Kt(e,t){let{mimeType:o}=te(e)||{},r=globalThis.loaders?.parseImageNode;return p(r),await r(e,o)}async function Ft(e,t,o){t=t||{};let s=(t.image||{}).type||"auto",{url:_}=o||{},a=mr(s),i;switch(a){case"imagebitmap":i=await Pt(e,t,_);break;case"image":i=await ee(e,t,_);break;case"data":i=await Kt(e,t);break;default:p(!1)}return s==="data"&&(i=q(i)),i}function mr(e){switch(e){case"auto":case"data":return xt();default:return Mt(e),e}}var Or=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],pr=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],Cr={image:{type:"auto",decode:!0}},D={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:dt,mimeTypes:pr,extensions:Or,parse:Ft,tests:[e=>Boolean(te(new DataView(e)))],options:Cr};function oe(e,t,o){let r=typeof e=="function"?e({...t,...o}):e,s=t.baseUrl;return s&&(r=s[s.length-1]==="/"?`${s}${r}`:`${s}/${r}`),Se(r)}var dr=e=>e&&typeof e=="object";async function Gt(e,t,o={}){return await Pe(e,t,o)}async function Pe(e,t,o){return Array.isArray(e)?await xr(e,t,o):dr(e)?await Mr(e,t,o):await t(e,o)}async function Mr(e,t,o){let r=[],s={};for(let _ in e){let a=e[_],i=Pe(a,t,o).then(c=>{s[_]=c});r.push(i)}return await Promise.all(r),s}async function xr(e,t,o={}){let r=e.map(s=>Pe(s,t,o));return await Promise.all(r)}async function L(e,t,o){return await Gt(e,r=>he(r,t,o))}async function he(e,t,o){let s=await(await fetch(e,o.fetch)).arrayBuffer();return await t(s,o)}async function Lt(e,t={}){let o=await H(e,t);return await L(o,D.parse,t)}async function H(e,t,o={}){let r=t&&t.image&&t.image.mipLevels||0;return r!==0?await Br(e,r,t,o):oe(e,t,o)}async function Br(e,t,o,r){let s=[];if(t==="auto"){let _=oe(e,o,{...r,lod:0}),a=await he(_,D.parse,o),{width:i,height:c}=De(a);t=Dr({width:i,height:c}),s.push(_)}p(t>0);for(let _=s.length;_<t;++_){let a=oe(e,o,{...r,lod:_});s.push(a)}return s}function Dr(e){return 1+Math.floor(Math.log2(Math.max(e.width,e.height)))}async function It(e,t,o={}){let r=await gr(e,t,o);return await L(r,D.parse,o)}async function gr(e,t,o={}){let r=[];for(let s=0;s<e;s++){let _=H(t,o,{index:s});r.push(_)}return await Promise.all(r)}var Pr=34069,hr=34070,Kr=34071,Fr=34072,Gr=34073,Lr=34074,Ut=[{face:Pr,direction:"right",axis:"x",sign:"positive"},{face:hr,direction:"left",axis:"x",sign:"negative"},{face:Kr,direction:"top",axis:"y",sign:"positive"},{face:Fr,direction:"bottom",axis:"y",sign:"negative"},{face:Gr,direction:"front",axis:"z",sign:"positive"},{face:Lr,direction:"back",axis:"z",sign:"negative"}];async function Ir(e,t){let o={},r=[],s=0;for(let _=0;_<Ut.length;++_){let a=Ut[s],i=H(e,t,{...a,index:s++}).then(c=>{o[a.face]=c});r.push(i)}return await Promise.all(r),o}async function Nt(e,t={}){let o=await Ir(e,t);return await L(o,D.parse,t)}var Ur={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:f,extensions:["ktx2"],worker:!0,options:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}};return oo(V);})();
7
+ "use strict";var __exports__=(()=>{var jt=Object.create;var k=Object.defineProperty;var Jt=Object.getOwnPropertyDescriptor;var Zt=Object.getOwnPropertyNames;var qt=Object.getPrototypeOf,Qt=Object.prototype.hasOwnProperty;var we=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),er=(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 Zt(t))!Qt.call(e,s)&&s!==r&&k(e,s,{get:()=>t[s],enumerable:!(o=Jt(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?jt(qt(e)):{},v(t||!e||!e.__esModule?k(r,"default",{value:e,enumerable:!0}):r,e)),tr=e=>v(k({},"__esModule",{value:!0}),e);var He=we((No,be)=>{be.exports=globalThis.loaders});var Re=we(()=>{});var V={};er(V,{BASIS_EXTERNAL_LIBRARIES:()=>F,BasisLoader:()=>nt,BasisWorkerLoader:()=>ue,CRUNCH_EXTERNAL_LIBRARIES:()=>Et,CompressedTextureLoader:()=>At,CompressedTextureWorkerLoader:()=>me,CompressedTextureWriter:()=>mt,CrunchLoader:()=>de,CrunchWorkerLoader:()=>de,GL_EXTENSIONS_CONSTANTS:()=>n,KTX2BasisWriter:()=>pt,KTX2BasisWriterWorker:()=>Io,NPYLoader:()=>ft,NPYWorkerLoader:()=>Ce,getSupportedGPUTextureFormats:()=>Y,loadImageTexture:()=>Gt,loadImageTextureArray:()=>Lt,loadImageTextureCube:()=>yt,selectSupportedBasisFormat:()=>Ee});W(V,se(He(),1));var f="4.4.0-alpha.10";function p(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var O={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},rr=O.self||O.window||O.global||{},or=O.window||O.self||O.global||{},nr=O.global||O.self||O.window||{},sr=O.document||{};var _e=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var Ve=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),_r=Ve&&parseFloat(Ve[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 ar(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.10"),globalThis._loadersgl_.version}var Xe=ar();function ve(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},vo=C.self||C.window||C.global||{},ko=C.window||C.self||C.global||{},Wo=C.global||C.self||C.window||{},zo=C.document||{};var P=typeof process!="object"||String(process)!=="[object process]"||process.browser,z=typeof importScripts=="function",$o=typeof window<"u"&&typeof window.orientation<"u",ke=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Yo=ke&&parseFloat(ke[1])||0;var ce={};async function h(e,t=null,r={},o=null){return t&&(e=We(e,t,r,o)),ce[e]=ce[e]||ir(e),await ce[e]}function We(e,t,r={},o=null){if(r?.core)throw new Error("loadLibrary: options.core must be pre-normalized");if(!r.useLocalLibraries&&e.startsWith("http"))return e;o=o||e;let s=r.modules||{};return s[o]?s[o]:P?r.CDN?(ve(r.CDN.startsWith("http")),`${r.CDN}/${t}@${Xe}/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 Rr(e);if(!P){let{requireFromFile:r}=globalThis.loaders||{};try{let o=await r?.(e);return o||!e.includes("/dist/libs/")?o:await r?.(e.replace("/dist/libs/","/src/libs/"))}catch(o){if(e.includes("/dist/libs/"))try{return await r?.(e.replace("/dist/libs/","/src/libs/"))}catch{}return console.error(o),null}}if(z)return importScripts(e);let t=await lr(e);return cr(t,e)}function cr(e,t){if(!P){let{requireFromString:o}=globalThis.loaders||{};return o?.(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 Rr(e){let{readFileAsArrayBuffer:t}=globalThis.loaders||{};if(P||!t||e.startsWith("http"))return await(await fetch(e)).arrayBuffer();try{return await t(e)}catch{if(e.includes("/dist/libs/"))return await t(e.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load ArrayBuffer from ${e}`)}}async function lr(e){let{readFileAsText:t}=globalThis.loaders||{};if(P||!t||e.startsWith("http"))return await(await fetch(e)).text();try{return await t(e)}catch{if(e.includes("/dist/libs/"))return await t(e.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load text from ${e}`)}}var ze=se(Re(),1);function $e(e=3e3){return new Promise(t=>{ze.default.exec("lsof -i -P -n | grep LISTEN",(r,o)=>{if(r){t(e);return}let s=[],_=/:(\d+) \(LISTEN\)/;o.split(`
8
+ `).forEach(i=>{let c=_.exec(i);c&&s.push(Number(c[1]))});let a=e;for(;s.includes(a);)a++;t(a)})})}async function Sr(){if(typeof process>"u"||!process.versions?.node)throw new Error("ChildProcessProxy is only available in Node.js environments");return await Promise.resolve().then(()=>se(Re(),1))}var Ye={command:"",arguments:[],port:5e3,autoPort:!0,wait:2e3,onSuccess:e=>{console.log(`Started ${e.props.command}`)}},K=class{id;props={...Ye};childProcess=null;port=0;successTimer;constructor({id:t="browser-driver"}={}){this.id=t}async start(t){t={...Ye,...t},this.props=t;let r=await Sr(),o=[...t.arguments];return this.port=Number(t.port),t.portArg&&(t.autoPort&&(this.port=await $e(t.port)),o.push(t.portArg,String(this.port))),await new Promise((s,_)=>{try{this._setTimeout(()=>{t.onSuccess&&t.onSuccess(this),s({})}),console.log(`Spawning ${t.command} ${t.arguments.join(" ")}`);let a=r.spawn(t.command,o,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(),_(new Error(i)))}),a.on("error",i=>{console.log(`Child process errored with ${i}`),this._clearTimeout(),_(i)}),a.on("close",i=>{console.log(`Child process exited with ${i}`),this.childProcess=null,this._clearTimeout(),s({})})}catch(a){_(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 Ar="",je={};function le(e){for(let t in je)if(e.startsWith(t)){let r=je[t];e=e.replace(t,r)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${Ar}${e}`),e}var F={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Je;async function Ae(e){ae(e.modules);let t=ie("basis");return t||(Je||=Tr(e),await Je)}async function Tr(e){let t=null,r=null;return[t,r]=await Promise.all([await h(F.TRANSCODER,"textures",e),await h(F.TRANSCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await fr(t,r)}function fr(e,t){let r={};return t&&(r.wasmBinary=t),new Promise(o=>{e(r).then(s=>{let{BasisFile:_,initializeBasis:a}=s;a(),o({BasisFile:_})})})}var Se;async function y(e){let t=e.modules||{};return t.basisEncoder?t.basisEncoder:(Se=Se||Er(e),await Se)}async function Er(e){let t=null,r=null;return[t,r]=await Promise.all([await h(F.ENCODER,"textures",e),await h(F.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:_,KTX2File:a,initializeBasis:i,BasisEncoder:c}=s;i(),o({BasisFile:_,KTX2File:a,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_"],Ze={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 Y(e){if(!$){e=e||dr()||void 0,$=new Set;for(let t of mr)for(let r in Ze)if(e&&e.getExtension(`${t}${r}`)){let o=Ze[r];$.add(o)}}return $}function dr(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var Te=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=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}},D=class{constructor(t,r,o,s){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,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),r=this._dataView.getUint32(this._offset+4,this._littleEndian),o=t+2**32*r;return this._offset+=8,o}_nextInt32(){let t=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint8Array(t){let r=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,t);return this._offset+=t,r}_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)}};var gn=new Uint8Array([0]),S=[171,75,84,88,32,50,48,187,13,10,26,10];function qe(e){return new TextDecoder().decode(e)}function Qe(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 Te,o=17*Uint32Array.BYTES_PER_ELEMENT,s=new D(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 _=s._nextUint32();r.supercompressionScheme=s._nextUint32();let a=s._nextUint32(),i=s._nextUint32(),c=s._nextUint32(),l=s._nextUint32(),A=s._nextUint64(),x=s._nextUint64(),Nt=_*3*8,oe=new D(e,S.length+o,Nt,!0);for(let T=0;T<_;T++)r.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+oe._nextUint64(),oe._nextUint64()),uncompressedByteLength:oe._nextUint64()});let R=new D(e,a,i,!0),ne={vendorId:R._skip(4)._nextUint16(),descriptorType:R._nextUint16(),versionNumber:R._nextUint16(),descriptorBlockSize:R._nextUint16(),colorModel:R._nextUint8(),colorPrimaries:R._nextUint8(),transferFunction:R._nextUint8(),flags:R._nextUint8(),texelBlockDimension:[R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8()],bytesPlane:[R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8()],samples:[]},Ut=6,wt=4,bt=(ne.descriptorBlockSize/4-Ut)/wt;for(let T=0;T<bt;T++){let B={bitOffset:R._nextUint16(),bitLength:R._nextUint8(),channelType:R._nextUint8(),samplePosition:[R._nextUint8(),R._nextUint8(),R._nextUint8(),R._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};B.channelType&64?(B.sampleLower=R._nextInt32(),B.sampleUpper=R._nextInt32()):(B.sampleLower=R._nextUint32(),B.sampleUpper=R._nextUint32()),ne.samples[T]=B}r.dataFormatDescriptor.length=0,r.dataFormatDescriptor.push(ne);let I=new D(e,c,l,!0);for(;I._offset<l;){let T=I._nextUint32(),B=I._scan(T),X=qe(B);if(r.keyValue[X]=I._nextUint8Array(T-B.byteLength-1),X.match(/^ktx/i)){let Ue=qe(r.keyValue[X]);r.keyValue[X]=Ue.substring(0,Ue.lastIndexOf("\0"))}let Yt=T%4?4-T%4:0;I._skip(Yt)}if(x<=0)return r;let m=new D(e,A,x,!0),Ht=m._nextUint16(),Vt=m._nextUint16(),Ke=m._nextUint32(),Fe=m._nextUint32(),Ge=m._nextUint32(),Xt=m._nextUint32(),Le=[];for(let T=0;T<_;T++)Le.push({imageFlags:m._nextUint32(),rgbSliceByteOffset:m._nextUint32(),rgbSliceByteLength:m._nextUint32(),alphaSliceByteOffset:m._nextUint32(),alphaSliceByteLength:m._nextUint32()});let Ie=A+m._offset,ye=Ie+Ke,Ne=ye+Fe,vt=Ne+Ge,kt=new Uint8Array(e.buffer,e.byteOffset+Ie,Ke),Wt=new Uint8Array(e.buffer,e.byteOffset+ye,Fe),zt=new Uint8Array(e.buffer,e.byteOffset+Ne,Ge),$t=new Uint8Array(e.buffer,e.byteOffset+vt,Xt);return r.globalData={endpointCount:Ht,selectorCount:Vt,imageDescs:Le,endpointsData:kt,selectorsData:Wt,tablesData:zt,extendedData:$t},r}function G(e,t){let r=new Array(t.mipMapLevels),o=t.width,s=t.height,_=0;for(let a=0;a<t.mipMapLevels;++a){let i=Or(t,o,s,e,a),c=pr(e,a,_,i);r[a]={compressed:!0,format:t.internalFormat,data:c,width:o,height:s,levelSize:i},o=Math.max(1,o>>1),s=Math.max(1,s>>1),_+=i}return r}function pr(e,t,r,o){return Array.isArray(e)?e[t].levelData:new Uint8Array(e.buffer,e.byteOffset+r,o)}function Or(e,t,r,o,s){return Array.isArray(o)?e.sizeFunction(o[s]):e.sizeFunction(t,r)}var Cr={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 et(e){return Cr[e]}var E=[171,75,84,88,32,50,48,187,13,10,26,10];function j(e){let t=new Uint8Array(e);return!(t.byteLength<E.length||t[0]!==E[0]||t[1]!==E[1]||t[2]!==E[2]||t[3]!==E[3]||t[4]!==E[4]||t[5]!==E[5]||t[6]!==E[6]||t[7]!==E[7]||t[8]!==E[8]||t[9]!==E[9]||t[10]!==E[10]||t[11]!==E[11])}function tt(e){let t=new Uint8Array(e),r=Qe(t),o=Math.max(1,r.levels.length),s=r.pixelWidth,_=r.pixelHeight,a=et(r.vkFormat);return G(r.levels,{mipMapLevels:o,width:s,height:_,sizeFunction:i=>i.uncompressedByteLength,internalFormat:a})}var Mr={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 J(e,t={}){if(!t.basis?.containerFormat||t.basis.containerFormat==="auto"){if(j(e)){let o=await y(t?.core||{});return rt(o.KTX2File,e,t)}let{BasisFile:r}=await Ae(t?.core||{});return fe(r,e,t)}switch(t.basis.module){case"encoder":let r=await y(t?.core||{});switch(t.basis.containerFormat){case"ktx2":return rt(r.KTX2File,e,t);case"basis":default:return fe(r.BasisFile,e,t)}case"transcoder":default:let{BasisFile:o}=await Ae(t.core||{});return fe(o,e,t)}}function fe(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(),_=[];for(let a=0;a<s;a++){let i=o.getNumLevels(a),c=[];for(let l=0;l<i;l++)c.push(xr(o,a,l,r));_.push(c)}return _}finally{o.close(),o.delete()}}function xr(e,t,r,o){let s=e.getImageWidth(t,r),_=e.getImageHeight(t,r),a=e.getHasAlpha(),{compressed:i,format:c,basisFormat:l}=ot(o,a),A=e.getImageTranscodedSizeInBytes(t,r,l),x=new Uint8Array(A);if(!e.transcodeImage(x,t,r,l,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:_,data:x,compressed:i,format:c,hasAlpha:a}}function rt(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(),_=[];for(let a=0;a<s;a++)_.push(Br(o,a,r));return[_]}finally{o.close(),o.delete()}}function Br(e,t,r){let{alphaFlag:o,height:s,width:_}=e.getImageLevelInfo(t,0,0),{compressed:a,format:i,basisFormat:c}=ot(r,o),l=e.getImageTranscodedSizeInBytes(t,0,0,c),A=new Uint8Array(l);if(!e.transcodeImage(A,t,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:_,height:s,data:A,compressed:a,levelSize:l,hasAlpha:o,format:i}}function ot(e,t){let r=e.basis?.format;return r==="auto"&&(r=Ee()),typeof r=="object"&&(r=t?r.alpha:r.noAlpha),r=r.toLowerCase(),Mr[r]}function Ee(){let e=Y();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 ue={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:f,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"}}},nt={...ue,parse:J};var u={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},gr={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},Dr=at,Pr=Z,hr=Z,Kr={DXT1:at,DXT3:Z,DXT5:Z,"ATC ":Dr,ATCA:Pr,ATCI:hr};function st(e){return new Uint32Array(e,0,u.HEADER_LENGTH)[u.MAGIC_NUMBER_INDEX]===u.MAGIC_NUMBER}function _t(e){let t=new Int32Array(e,0,u.HEADER_LENGTH),r=t[u.HEADER_PF_FOURCC_INDEX];p(Boolean(t[u.HEADER_PF_FLAGS_INDEX]&u.DDPF_FOURCC),"DDS: Unsupported format, must contain a FourCC code");let o=Fr(r),s=gr[o],_=Kr[o];p(s&&_,`DDS: Unknown pixel format ${r}`);let a=1;t[u.HEADER_FLAGS_INDEX]&u.DDSD_MIPMAPCOUNT&&(a=Math.max(1,t[u.MIPMAPCOUNT_INDEX]));let i=t[u.HEADER_WIDTH_INDEX],c=t[u.HEADER_HEIGHT_INDEX],l=t[u.HEADER_SIZE_INDEX]+4,A=new Uint8Array(e,l);return G(A,{mipMapLevels:a,width:i,height:c,sizeFunction:_,internalFormat:s})}function at(e,t){return(e+3>>2)*(t+3>>2)*8}function Z(e,t){return(e+3>>2)*(t+3>>2)*16}function Fr(e){return String.fromCharCode(e&255,e>>8&255,e>>16&255,e>>24&255)}var d={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},Gr={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:it,1:it,2:ct,3:ct,6:N,7:N,9:U,11:U,22:N,23:U,24:N,25:N,26:U,27:U,28:Ir,29:yr,30:Nr,31:Ur,32:wr,33:br,34:Hr,35:Vr,36:Xr,37:vr,38:kr,39:Wr,40:zr};function Rt(e){let r=new Uint32Array(e,0,d.HEADER_LENGTH)[d.MAGIC_NUMBER_INDEX];return r===d.MAGIC_NUMBER||r===d.MAGIC_NUMBER_EXTRA}function lt(e){let t=new Uint32Array(e,0,d.HEADER_LENGTH),r=t[d.PIXEL_FORMAT_INDEX],o=t[d.COLOUR_SPACE_INDEX],s=Gr[r]||[],_=s.length>1&&o?s[1]:s[0],a=Lr[r],i=t[d.MIPMAPCOUNT_INDEX],c=t[d.WIDTH_INDEX],l=t[d.HEIGHT_INDEX],A=d.HEADER_SIZE+t[d.METADATA_SIZE_INDEX],x=new Uint8Array(e,A);return G(x,{mipMapLevels:i,width:c,height:l,sizeFunction:a,internalFormat:_})}function it(e,t){return e=Math.max(e,16),t=Math.max(t,8),e*t/4}function ct(e,t){return e=Math.max(e,8),t=Math.max(t,8),e*t/2}function N(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8}function U(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16}function Ir(e,t){return Math.floor((e+4)/5)*Math.floor((t+3)/4)*16}function yr(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 Ur(e,t){return Math.floor((e+5)/6)*Math.floor((t+5)/6)*16}function wr(e,t){return Math.floor((e+7)/8)*Math.floor((t+4)/5)*16}function br(e,t){return Math.floor((e+7)/8)*Math.floor((t+5)/6)*16}function Hr(e,t){return Math.floor((e+7)/8)*Math.floor((t+7)/8)*16}function Vr(e,t){return Math.floor((e+9)/10)*Math.floor((t+4)/5)*16}function Xr(e,t){return Math.floor((e+9)/10)*Math.floor((t+5)/6)*16}function vr(e,t){return Math.floor((e+9)/10)*Math.floor((t+7)/8)*16}function kr(e,t){return Math.floor((e+9)/10)*Math.floor((t+9)/10)*16}function Wr(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 St(e){if(j(e))return tt(e);if(st(e))return _t(e);if(Rt(e))return lt(e);throw new Error("Texture container format not recognized")}var me={dataType:null,batchType:null,name:"Texture Containers",id:"compressed-texture",module:"textures",version:f,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}}},At={...me,parse:async(e,t)=>(t={...t},t?.["compressed-texture"]?.useBasis?(t.basis={format:{alpha:"BC3",noAlpha:"BC1"},...t.basis,containerFormat:"ktx2",module:"encoder"},(await J(e,t))[0]):St(e))};var de={dataType:null,batchType:null,id:"crunch",name:"Crunch",module:"textures",version:f,worker:!0,extensions:["crn"],mimeTypes:["image/crn","image/x-crn","application/octet-stream"],binary:!0,options:{crunch:{libraryPath:"libs/"}}};var pe=new Uint32Array([305419896]),$r=new Uint8Array(pe.buffer,pe.byteOffset,pe.byteLength),Yr=$r[0]!==18,Tt=Yr,jr={u1:Uint8Array,i1:Int8Array,u2:Uint16Array,i2:Int16Array,u4:Uint32Array,i4:Int32Array,f4:Float32Array,f8:Float64Array};function Oe(e,t){let r=new DataView(e),{header:o,headerEndOffset:s}=Jr(r),_=o.descr,a=jr[_.slice(1,3)];if(!a)throw new Error(`Unimplemented type ${_}`);let c=o.shape?.reduce((A,x)=>A*x)*a.BYTES_PER_ELEMENT;if(e.byteLength<s+c)throw new Error("Buffer overflow");let l=new a(e.slice(s,s+c));if(_[0]===">"&&Tt||_[0]==="<"&&!Tt)throw new Error("Incorrect endianness");return{data:l,header:o}}function Jr(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",_=new TextDecoder(s),a=new Uint8Array(e.buffer,r,o),i=_.decode(a);return r+=o,{header:JSON.parse(i.replace(/'/g,'"').replace("False","false").replace("(","[").replace(/,*\),*/g,"]")),headerEndOffset:r}}var Zr=new Uint8Array([147,78,85,77,80,89]),Ce={dataType:null,batchType:null,name:"NPY",id:"npy",module:"textures",version:f,worker:!0,extensions:["npy"],mimeTypes:[],tests:[Zr.buffer],options:{npy:{}}},ft={...Ce,parseSync:Oe,parse:async(e,t)=>Oe(e,t)};var Et={DECODER:"crunch.js"};async function ut(e,t,r){let o=["texture-compressor","--type","s3tc","--compression","DXT1","--quality","normal","--input",e,"--output",t];return await new K().start({command:"npx",arguments:o,spawn:r}),t}var mt={name:"DDS Texture Container",id:"dds",module:"textures",version:f,extensions:["dds"],mimeTypes:["image/vnd-ms.dds","image/x-dds","application/octet-stream"],options:{texture:{format:"auto",compression:"auto",quality:"auto",mipmap:!1,flipY:!1,toolFlags:""}},encodeURLtoURL:ut,encode(){throw new Error("Not implemented")}};async function dt(e,t={}){let{useSRGB:r=!1,qualityLevel:o=10,encodeUASTC:s=!1,mipmaps:_=!1}=t?.["ktx2-basis-writer"]||{},{BasisEncoder:a}=await y(t.core||{}),i=new a;try{let c=new Uint8Array(e.width*e.height*4);i.setCreateKTX2File(!0),i.setKTX2UASTCSupercompression(!0),i.setKTX2SRGBTransferFunc(!0),i.setSliceSourceImage(0,e.data,e.width,e.height,!1),i.setPerceptual(r),i.setMipSRGB(r),i.setQualityLevel(o),i.setUASTC(s),i.setMipGen(_);let l=i.encode(c);return c.subarray(0,l).buffer}catch(c){throw console.error("Basis Universal Supercompressed GPU Texture encoder Error: ",c),c}finally{i.delete()}}var pt={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:f,extensions:["ktx2"],mimeTypes:["image/ktx2"],options:{["ktx2-basis-writer"]:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}},encode:dt};var Ot="4.4.0-alpha.10";var qr=globalThis.loaders?.parseImageNode,Me=typeof Image<"u",xe=typeof ImageBitmap<"u",Qr=Boolean(qr),Be=_e?!0:Qr;function Ct(e){switch(e){case"auto":return xe||Me||Be;case"imagebitmap":return xe;case"image":return Me;case"data":return Be;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function Mt(){if(xe)return"imagebitmap";if(Me)return"image";if(Be)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function xt(e){let t=eo(e);if(!t)throw new Error("Not an image");return t}function ge(e){return q(e)}function q(e){switch(xt(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 eo(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 to=/^data:image\/svg\+xml/,ro=/\.svg((\?|#).*)?$/;function Q(e){return e&&(to.test(e)||ro.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(_){throw new Error(_.message)}return`data:image/svg+xml;base64,${btoa(o)}`}return De(e,t)}function De(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=Bt(e,r),s=self.URL||self.webkitURL,_=typeof o!="string"&&s.createObjectURL(o);try{return await oo(_||o,t)}finally{_&&s.revokeObjectURL(_)}}async function oo(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=_=>{let a=_ instanceof Error?_.message:"error";s(new Error(a))}}catch(_){s(_)}})}var gt=!0;async function Dt(e,t,r){let o;Q(r)?o=await ee(e,t,r):o=De(e,r);let s=t&&t.imagebitmap;return await no(o,s)}async function no(e,t=null){if((so(t)||!gt)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),gt=!1}return await createImageBitmap(e)}function so(e){if(!e)return!0;for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function Pt(e){return!co(e,"ftyp",4)||!(e[8]&96)?null:_o(e)}function _o(e){switch(ao(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function ao(e,t,r){return String.fromCharCode(...e.slice(t,r))}function io(e){return[...e].map(t=>t.charCodeAt(0))}function co(e,t,r=0){let o=io(t);for(let s=0;s<o.length;++s)if(o[s]!==e[s+r])return!1;return!0}var M=!1,w=!0;function te(e){let t=b(e);return lo(t)||To(t)||So(t)||Ao(t)||Ro(t)}function Ro(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=Pt(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function lo(e){let t=b(e);return t.byteLength>=24&&t.getUint32(0,M)===2303741511?{mimeType:"image/png",width:t.getUint32(16,M),height:t.getUint32(20,M)}:null}function So(e){let t=b(e);return t.byteLength>=10&&t.getUint32(0,M)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,w),height:t.getUint16(8,w)}:null}function Ao(e){let t=b(e);return t.byteLength>=14&&t.getUint16(0,M)===16973&&t.getUint32(2,w)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,w),height:t.getUint32(22,w)}:null}function To(e){let t=b(e);if(!(t.byteLength>=3&&t.getUint16(0,M)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:o,sofMarkers:s}=fo(),_=2;for(;_+9<t.byteLength;){let a=t.getUint16(_,M);if(s.has(a))return{mimeType:"image/jpeg",height:t.getUint16(_+5,M),width:t.getUint16(_+7,M)};if(!o.has(a))return null;_+=2,_+=t.getUint16(_,M)}return null}function fo(){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 b(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 p(o),await o(e,r)}async function Kt(e,t,r){t=t||{};let s=(t.image||{}).type||"auto",{url:_}=r||{},a=Eo(s),i;switch(a){case"imagebitmap":i=await Dt(e,t,_);break;case"image":i=await ee(e,t,_);break;case"data":i=await ht(e,t);break;default:p(!1)}return s==="data"&&(i=q(i)),i}function Eo(e){switch(e){case"auto":case"data":return Mt();default:return Ct(e),e}}var uo=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],mo=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],po={image:{type:"auto",decode:!0}},g={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:Ot,mimeTypes:mo,extensions:uo,parse:Kt,tests:[e=>Boolean(te(new DataView(e)))],options:po};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}`),le(o)}var Oo=e=>e&&typeof e=="object";async function Ft(e,t,r={}){return await Pe(e,t,r)}async function Pe(e,t,r){return Array.isArray(e)?await Mo(e,t,r):Oo(e)?await Co(e,t,r):await t(e,r)}async function Co(e,t,r){let o=[],s={};for(let _ in e){let a=e[_],i=Pe(a,t,r).then(c=>{s[_]=c});o.push(i)}return await Promise.all(o),s}async function Mo(e,t,r={}){let o=e.map(s=>Pe(s,t,r));return await Promise.all(o)}async function L(e,t,r){return await Ft(e,o=>he(o,t,r))}async function he(e,t,r){let s=await(await fetch(e,r.fetch)).arrayBuffer();return await t(s,r)}async function Gt(e,t={}){let r=await H(e,t);return await L(r,g.parse,t)}async function H(e,t,r={}){let o=t&&t.image&&t.image.mipLevels||0;return o!==0?await xo(e,o,t,r):re(e,t,r)}async function xo(e,t,r,o){let s=[];if(t==="auto"){let _=re(e,r,{...o,lod:0}),a=await he(_,g.parse,r),{width:i,height:c}=ge(a);t=Bo({width:i,height:c}),s.push(_)}p(t>0);for(let _=s.length;_<t;++_){let a=re(e,r,{...o,lod:_});s.push(a)}return s}function Bo(e){return 1+Math.floor(Math.log2(Math.max(e.width,e.height)))}async function Lt(e,t,r={}){let o=await go(e,t,r);return await L(o,g.parse,r)}async function go(e,t,r={}){let o=[];for(let s=0;s<e;s++){let _=H(t,r,{index:s});o.push(_)}return await Promise.all(o)}var Do=34069,Po=34070,ho=34071,Ko=34072,Fo=34073,Go=34074,It=[{face:Do,direction:"right",axis:"x",sign:"positive"},{face:Po,direction:"left",axis:"x",sign:"negative"},{face:ho,direction:"top",axis:"y",sign:"positive"},{face:Ko,direction:"bottom",axis:"y",sign:"negative"},{face:Fo,direction:"front",axis:"z",sign:"positive"},{face:Go,direction:"back",axis:"z",sign:"negative"}];async function Lo(e,t){let r={},o=[],s=0;for(let _=0;_<It.length;++_){let a=It[s],i=H(e,t,{...a,index:s++}).then(c=>{r[a.face]=c});o.push(i)}return await Promise.all(o),r}async function yt(e,t={}){let r=await Lo(e,t);return await L(r,g.parse,t)}var Io={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:f,extensions:["ktx2"],worker:!0,options:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}};return tr(V);})();
9
9
  return __exports__;
10
10
  });
package/dist/index.cjs CHANGED
@@ -43,7 +43,7 @@ __export(dist_exports, {
43
43
  module.exports = __toCommonJS(dist_exports);
44
44
 
45
45
  // dist/lib/utils/version.js
46
- var VERSION = true ? "4.3.3" : "latest";
46
+ var VERSION = true ? "4.4.0-alpha.10" : "latest";
47
47
 
48
48
  // dist/lib/parsers/basis-module-loader.js
49
49
  var import_loader_utils = require("@loaders.gl/loader-utils");
@@ -479,18 +479,19 @@ var OutputFormat = {
479
479
  bgr565: { basisFormat: 15, compressed: false },
480
480
  rgba4444: { basisFormat: 16, compressed: false }
481
481
  };
482
- async function parseBasis(data, options) {
483
- if (options.basis.containerFormat === "auto") {
482
+ async function parseBasis(data, options = {}) {
483
+ var _a;
484
+ if (!((_a = options.basis) == null ? void 0 : _a.containerFormat) || options.basis.containerFormat === "auto") {
484
485
  if (isKTX(data)) {
485
- const fileConstructors = await loadBasisEncoderModule(options);
486
+ const fileConstructors = await loadBasisEncoderModule((options == null ? void 0 : options.core) || {});
486
487
  return parseKTX2File(fileConstructors.KTX2File, data, options);
487
488
  }
488
- const { BasisFile } = await loadBasisTranscoderModule(options);
489
+ const { BasisFile } = await loadBasisTranscoderModule((options == null ? void 0 : options.core) || {});
489
490
  return parseBasisFile(BasisFile, data, options);
490
491
  }
491
492
  switch (options.basis.module) {
492
493
  case "encoder":
493
- const fileConstructors = await loadBasisEncoderModule(options);
494
+ const fileConstructors = await loadBasisEncoderModule((options == null ? void 0 : options.core) || {});
494
495
  switch (options.basis.containerFormat) {
495
496
  case "ktx2":
496
497
  return parseKTX2File(fileConstructors.KTX2File, data, options);
@@ -500,7 +501,7 @@ async function parseBasis(data, options) {
500
501
  }
501
502
  case "transcoder":
502
503
  default:
503
- const { BasisFile } = await loadBasisTranscoderModule(options);
504
+ const { BasisFile } = await loadBasisTranscoderModule(options.core || {});
504
505
  return parseBasisFile(BasisFile, data, options);
505
506
  }
506
507
  }
@@ -598,7 +599,8 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
598
599
  };
599
600
  }
600
601
  function getBasisOptions(options, hasAlpha) {
601
- let format = options && options.basis && options.basis.format;
602
+ var _a;
603
+ let format = (_a = options.basis) == null ? void 0 : _a.format;
602
604
  if (format === "auto") {
603
605
  format = selectSupportedBasisFormat();
604
606
  }
@@ -976,13 +978,13 @@ var CompressedTextureLoader = {
976
978
  ...CompressedTextureWorkerLoader,
977
979
  parse: async (arrayBuffer, options) => {
978
980
  var _a;
981
+ options = { ...options };
979
982
  if ((_a = options == null ? void 0 : options["compressed-texture"]) == null ? void 0 : _a.useBasis) {
980
983
  options.basis = {
981
984
  format: {
982
985
  alpha: "BC3",
983
986
  noAlpha: "BC1"
984
987
  },
985
- // @ts-expect-error TODO not allowed to modify inputs
986
988
  ...options.basis,
987
989
  containerFormat: "ktx2",
988
990
  module: "encoder"
@@ -1135,6 +1137,7 @@ var CompressedTextureWriter = {
1135
1137
  module: "textures",
1136
1138
  version: VERSION,
1137
1139
  extensions: ["dds"],
1140
+ mimeTypes: ["image/vnd-ms.dds", "image/x-dds", "application/octet-stream"],
1138
1141
  options: {
1139
1142
  texture: {
1140
1143
  format: "auto",
@@ -1154,7 +1157,7 @@ var CompressedTextureWriter = {
1154
1157
  // dist/lib/encoders/encode-ktx2-basis-texture.js
1155
1158
  async function encodeKTX2BasisTexture(image, options = {}) {
1156
1159
  const { useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false } = (options == null ? void 0 : options["ktx2-basis-writer"]) || {};
1157
- const { BasisEncoder } = await loadBasisEncoderModule(options);
1160
+ const { BasisEncoder } = await loadBasisEncoderModule(options.core || {});
1158
1161
  const basisEncoder = new BasisEncoder();
1159
1162
  try {
1160
1163
  const basisFileData = new Uint8Array(image.width * image.height * 4);
@@ -1185,6 +1188,7 @@ var KTX2BasisWriter = {
1185
1188
  module: "textures",
1186
1189
  version: VERSION,
1187
1190
  extensions: ["ktx2"],
1191
+ mimeTypes: ["image/ktx2"],
1188
1192
  options: {
1189
1193
  ["ktx2-basis-writer"]: {
1190
1194
  useSRGB: false,