@loaders.gl/textures 3.1.0-alpha.4 → 3.1.0-beta.3

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 (271) hide show
  1. package/dist/basis-loader.d.ts +50 -0
  2. package/dist/basis-loader.d.ts.map +1 -0
  3. package/dist/basis-loader.js +40 -0
  4. package/dist/basis-worker.js +675 -2
  5. package/dist/bundle.d.ts +2 -0
  6. package/dist/bundle.d.ts.map +1 -0
  7. package/dist/bundle.js +2107 -0
  8. package/dist/compressed-texture-loader.d.ts +63 -0
  9. package/dist/compressed-texture-loader.d.ts.map +1 -0
  10. package/dist/compressed-texture-loader.js +64 -0
  11. package/dist/compressed-texture-worker.js +1179 -2
  12. package/dist/compressed-texture-writer.d.ts +25 -0
  13. package/dist/compressed-texture-writer.d.ts.map +1 -0
  14. package/dist/compressed-texture-writer.js +28 -0
  15. package/dist/crunch-loader.d.ts +21 -0
  16. package/dist/crunch-loader.d.ts.map +1 -0
  17. package/dist/crunch-loader.js +25 -0
  18. package/dist/crunch-worker.js +486 -2
  19. package/dist/es5/basis-loader.js +5 -13
  20. package/dist/es5/basis-loader.js.map +1 -1
  21. package/dist/es5/bundle.js +1 -1
  22. package/dist/es5/bundle.js.map +1 -1
  23. package/dist/es5/compressed-texture-loader.js +20 -59
  24. package/dist/es5/compressed-texture-loader.js.map +1 -1
  25. package/dist/es5/compressed-texture-writer.js +2 -2
  26. package/dist/es5/compressed-texture-writer.js.map +1 -1
  27. package/dist/es5/crunch-loader.js +2 -2
  28. package/dist/es5/crunch-loader.js.map +1 -1
  29. package/dist/es5/index.js +26 -18
  30. package/dist/es5/index.js.map +1 -1
  31. package/dist/es5/ktx2-basis-universal-texture-writer.js +29 -0
  32. package/dist/es5/ktx2-basis-universal-texture-writer.js.map +1 -0
  33. package/dist/es5/lib/encoders/encode-ktx.js +1 -1
  34. package/dist/es5/lib/encoders/encode-ktx.js.map +1 -1
  35. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +43 -0
  36. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  37. package/dist/es5/lib/encoders/encode-texture.js +13 -41
  38. package/dist/es5/lib/encoders/encode-texture.js.map +1 -1
  39. package/dist/es5/lib/{gl-constants.js → gl-extensions.js} +4 -4
  40. package/dist/es5/lib/gl-extensions.js.map +1 -0
  41. package/dist/es5/lib/parsers/basis-module-loader.js +51 -190
  42. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
  43. package/dist/es5/lib/parsers/crunch-module-loader.js +15 -71
  44. package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
  45. package/dist/es5/lib/parsers/parse-basis.js +86 -138
  46. package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
  47. package/dist/es5/lib/parsers/parse-crunch.js +59 -80
  48. package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
  49. package/dist/es5/lib/parsers/parse-dds.js +39 -39
  50. package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
  51. package/dist/es5/lib/parsers/parse-ktx.js +14 -16
  52. package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
  53. package/dist/es5/lib/parsers/parse-npy.js +27 -28
  54. package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
  55. package/dist/es5/lib/parsers/parse-pvr.js +49 -49
  56. package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
  57. package/dist/es5/lib/texture-api/async-deep-map.js +27 -156
  58. package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -1
  59. package/dist/es5/lib/texture-api/deep-load.js +6 -67
  60. package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
  61. package/dist/es5/lib/texture-api/generate-url.js +4 -16
  62. package/dist/es5/lib/texture-api/generate-url.js.map +1 -1
  63. package/dist/es5/lib/texture-api/load-image-array.js +12 -76
  64. package/dist/es5/lib/texture-api/load-image-array.js.map +1 -1
  65. package/dist/es5/lib/texture-api/load-image-cube.js +27 -96
  66. package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -1
  67. package/dist/es5/lib/texture-api/load-image.js +37 -146
  68. package/dist/es5/lib/texture-api/load-image.js.map +1 -1
  69. package/dist/es5/lib/texture-api/texture-api-types.js +2 -0
  70. package/dist/es5/lib/texture-api/texture-api-types.js.map +1 -0
  71. package/dist/es5/lib/utils/extract-mipmap-images.js +9 -9
  72. package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
  73. package/dist/es5/lib/utils/ktx-format-helper.js +68 -68
  74. package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -1
  75. package/dist/es5/lib/utils/texture-formats.js +9 -27
  76. package/dist/es5/lib/utils/texture-formats.js.map +1 -1
  77. package/dist/es5/lib/utils/version.js +1 -1
  78. package/dist/es5/lib/utils/version.js.map +1 -1
  79. package/dist/es5/libs/README.md +2 -2
  80. package/dist/es5/libs/basis_encoder.js +1 -1
  81. package/dist/es5/libs/basis_transcoder.js +1 -1
  82. package/dist/es5/libs/crunch.js +1 -0
  83. package/dist/es5/npy-loader.js +7 -42
  84. package/dist/es5/npy-loader.js.map +1 -1
  85. package/dist/es5/workers/crunch-worker.js +2 -11
  86. package/dist/es5/workers/crunch-worker.js.map +1 -1
  87. package/dist/esm/index.js +2 -1
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/ktx2-basis-universal-texture-writer.js +18 -0
  90. package/dist/esm/ktx2-basis-universal-texture-writer.js.map +1 -0
  91. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +35 -0
  92. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  93. package/dist/esm/lib/encoders/encode-texture.js +1 -1
  94. package/dist/esm/lib/encoders/encode-texture.js.map +1 -1
  95. package/dist/esm/lib/{gl-constants.js → gl-extensions.js} +2 -2
  96. package/dist/esm/lib/gl-extensions.js.map +1 -0
  97. package/dist/esm/lib/parsers/basis-module-loader.js +8 -3
  98. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
  99. package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
  100. package/dist/esm/lib/parsers/parse-basis.js +8 -8
  101. package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
  102. package/dist/esm/lib/parsers/parse-crunch.js +4 -4
  103. package/dist/esm/lib/parsers/parse-crunch.js.map +1 -1
  104. package/dist/esm/lib/parsers/parse-dds.js +24 -24
  105. package/dist/esm/lib/parsers/parse-dds.js.map +1 -1
  106. package/dist/esm/lib/parsers/parse-ktx.js +2 -2
  107. package/dist/esm/lib/parsers/parse-ktx.js.map +1 -1
  108. package/dist/esm/lib/parsers/parse-npy.js +4 -2
  109. package/dist/esm/lib/parsers/parse-npy.js.map +1 -1
  110. package/dist/esm/lib/parsers/parse-pvr.js +28 -28
  111. package/dist/esm/lib/parsers/parse-pvr.js.map +1 -1
  112. package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -1
  113. package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
  114. package/dist/esm/lib/texture-api/generate-url.js +6 -14
  115. package/dist/esm/lib/texture-api/generate-url.js.map +1 -1
  116. package/dist/esm/lib/texture-api/load-image-array.js.map +1 -1
  117. package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -1
  118. package/dist/esm/lib/texture-api/load-image.js +2 -5
  119. package/dist/esm/lib/texture-api/load-image.js.map +1 -1
  120. package/dist/esm/lib/texture-api/texture-api-types.js +2 -0
  121. package/dist/esm/lib/texture-api/texture-api-types.js.map +1 -0
  122. package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -1
  123. package/dist/esm/lib/utils/ktx-format-helper.js +67 -67
  124. package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -1
  125. package/dist/esm/lib/utils/texture-formats.js +1 -1
  126. package/dist/esm/lib/utils/texture-formats.js.map +1 -1
  127. package/dist/esm/lib/utils/version.js +1 -1
  128. package/dist/esm/lib/utils/version.js.map +1 -1
  129. package/dist/esm/libs/README.md +2 -2
  130. package/dist/esm/libs/basis_encoder.js +1 -1
  131. package/dist/esm/libs/basis_transcoder.js +1 -1
  132. package/dist/esm/libs/crunch.js +1 -0
  133. package/dist/esm/npy-loader.js.map +1 -1
  134. package/dist/index.d.ts +16 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +37 -0
  137. package/dist/ktx2-basis-universal-texture-writer.d.ts +22 -0
  138. package/dist/ktx2-basis-universal-texture-writer.d.ts.map +1 -0
  139. package/dist/ktx2-basis-universal-texture-writer.js +25 -0
  140. package/dist/lib/encoders/encode-ktx.d.ts +2 -0
  141. package/dist/lib/encoders/encode-ktx.d.ts.map +1 -0
  142. package/dist/lib/encoders/encode-ktx.js +10 -0
  143. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +10 -0
  144. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -0
  145. package/dist/lib/encoders/encode-ktx2-basis-texture.js +41 -0
  146. package/dist/lib/encoders/encode-texture.d.ts +2 -0
  147. package/dist/lib/encoders/encode-texture.d.ts.map +1 -0
  148. package/dist/lib/encoders/encode-texture.js +30 -0
  149. package/dist/lib/gl-extensions.d.ts +61 -0
  150. package/dist/lib/gl-extensions.d.ts.map +1 -0
  151. package/dist/lib/gl-extensions.js +72 -0
  152. package/dist/lib/parsers/basis-module-loader.d.ts +13 -0
  153. package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -0
  154. package/dist/lib/parsers/basis-module-loader.js +114 -0
  155. package/dist/lib/parsers/crunch-module-loader.d.ts +7 -0
  156. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -0
  157. package/dist/lib/parsers/crunch-module-loader.js +35 -0
  158. package/dist/lib/parsers/parse-basis.d.ts +30 -0
  159. package/dist/lib/parsers/parse-basis.d.ts.map +1 -0
  160. package/dist/lib/parsers/parse-basis.js +245 -0
  161. package/dist/lib/parsers/parse-compressed-texture.d.ts +8 -0
  162. package/dist/lib/parsers/parse-compressed-texture.d.ts.map +1 -0
  163. package/dist/lib/parsers/parse-compressed-texture.js +26 -0
  164. package/dist/lib/parsers/parse-crunch.d.ts +9 -0
  165. package/dist/lib/parsers/parse-crunch.d.ts.map +1 -0
  166. package/dist/lib/parsers/parse-crunch.js +105 -0
  167. package/dist/lib/parsers/parse-dds.d.ts +28 -0
  168. package/dist/lib/parsers/parse-dds.d.ts.map +1 -0
  169. package/dist/lib/parsers/parse-dds.js +108 -0
  170. package/dist/lib/parsers/parse-ktx.d.ts +3 -0
  171. package/dist/lib/parsers/parse-ktx.d.ts.map +1 -0
  172. package/dist/lib/parsers/parse-ktx.js +46 -0
  173. package/dist/lib/parsers/parse-npy.d.ts +10 -0
  174. package/dist/lib/parsers/parse-npy.d.ts.map +1 -0
  175. package/dist/lib/parsers/parse-npy.js +85 -0
  176. package/dist/lib/parsers/parse-pvr.d.ts +15 -0
  177. package/dist/lib/parsers/parse-pvr.d.ts.map +1 -0
  178. package/dist/lib/parsers/parse-pvr.js +250 -0
  179. package/dist/lib/texture-api/async-deep-map.d.ts +5 -0
  180. package/dist/lib/texture-api/async-deep-map.d.ts.map +1 -0
  181. package/dist/lib/texture-api/async-deep-map.js +41 -0
  182. package/dist/lib/texture-api/deep-load.d.ts +5 -0
  183. package/dist/lib/texture-api/deep-load.d.ts.map +1 -0
  184. package/dist/lib/texture-api/deep-load.js +16 -0
  185. package/dist/lib/texture-api/generate-url.d.ts +3 -0
  186. package/dist/lib/texture-api/generate-url.d.ts.map +1 -0
  187. package/dist/lib/texture-api/generate-url.js +17 -0
  188. package/dist/lib/texture-api/load-image-array.d.ts +4 -0
  189. package/dist/lib/texture-api/load-image-array.d.ts.map +1 -0
  190. package/dist/lib/texture-api/load-image-array.js +21 -0
  191. package/dist/lib/texture-api/load-image-cube.d.ts +12 -0
  192. package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -0
  193. package/dist/lib/texture-api/load-image-cube.js +47 -0
  194. package/dist/lib/texture-api/load-image.d.ts +8 -0
  195. package/dist/lib/texture-api/load-image.d.ts.map +1 -0
  196. package/dist/lib/texture-api/load-image.js +43 -0
  197. package/dist/lib/texture-api/texture-api-types.d.ts +10 -0
  198. package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -0
  199. package/dist/lib/texture-api/texture-api-types.js +3 -0
  200. package/dist/lib/utils/extract-mipmap-images.d.ts +13 -0
  201. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -0
  202. package/dist/lib/utils/extract-mipmap-images.js +50 -0
  203. package/dist/lib/utils/ktx-format-helper.d.ts +9 -0
  204. package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -0
  205. package/dist/lib/utils/ktx-format-helper.js +125 -0
  206. package/dist/lib/utils/texture-formats.d.ts +8 -0
  207. package/dist/lib/utils/texture-formats.d.ts.map +1 -0
  208. package/dist/lib/utils/texture-formats.js +51 -0
  209. package/dist/lib/utils/version.d.ts +2 -0
  210. package/dist/lib/utils/version.d.ts.map +1 -0
  211. package/dist/lib/utils/version.js +8 -0
  212. package/dist/libs/README.md +2 -2
  213. package/dist/libs/basis_encoder.js +1 -1
  214. package/dist/libs/basis_transcoder.js +1 -1
  215. package/dist/libs/crunch.js +1 -0
  216. package/dist/npy-loader.d.ts +45 -0
  217. package/dist/npy-loader.d.ts.map +1 -0
  218. package/dist/npy-loader.js +34 -0
  219. package/dist/npy-worker.js +240 -2
  220. package/dist/types.d.ts +21 -0
  221. package/dist/types.d.ts.map +1 -0
  222. package/dist/types.js +2 -0
  223. package/dist/workers/basis-worker.d.ts +2 -0
  224. package/dist/workers/basis-worker.d.ts.map +1 -0
  225. package/dist/workers/basis-worker.js +5 -0
  226. package/dist/workers/compressed-texture-worker.d.ts +2 -0
  227. package/dist/workers/compressed-texture-worker.d.ts.map +1 -0
  228. package/dist/workers/compressed-texture-worker.js +5 -0
  229. package/dist/workers/crunch-worker.d.ts +21 -0
  230. package/dist/workers/crunch-worker.d.ts.map +1 -0
  231. package/dist/workers/crunch-worker.js +14 -0
  232. package/dist/workers/npy-worker.d.ts +2 -0
  233. package/dist/workers/npy-worker.d.ts.map +1 -0
  234. package/dist/workers/npy-worker.js +5 -0
  235. package/package.json +11 -11
  236. package/src/index.ts +2 -1
  237. package/src/ktx2-basis-universal-texture-writer.ts +27 -0
  238. package/src/lib/encoders/encode-ktx2-basis-texture.ts +44 -0
  239. package/src/lib/{gl-constants.ts → gl-extensions.ts} +1 -1
  240. package/src/lib/parsers/basis-module-loader.ts +12 -4
  241. package/src/lib/parsers/crunch-module-loader.ts +1 -0
  242. package/src/lib/parsers/parse-basis.js +32 -8
  243. package/src/lib/parsers/parse-crunch.ts +4 -4
  244. package/src/lib/parsers/parse-dds.ts +29 -26
  245. package/src/lib/parsers/parse-ktx.js +3 -6
  246. package/src/lib/parsers/parse-ktx.ts +47 -0
  247. package/src/lib/parsers/parse-npy.js +3 -17
  248. package/src/lib/parsers/parse-npy.ts +98 -0
  249. package/src/lib/parsers/parse-pvr.ts +90 -48
  250. package/src/lib/texture-api/async-deep-map.ts +15 -8
  251. package/src/lib/texture-api/deep-load.ts +7 -3
  252. package/src/lib/texture-api/generate-url.ts +10 -8
  253. package/src/lib/texture-api/load-image-array.ts +8 -2
  254. package/src/lib/texture-api/load-image-cube.ts +18 -4
  255. package/src/lib/texture-api/load-image.ts +15 -5
  256. package/src/lib/texture-api/texture-api-types.ts +12 -0
  257. package/src/lib/utils/extract-mipmap-images.ts +16 -3
  258. package/src/lib/utils/ktx-format-helper.ts +71 -71
  259. package/src/libs/README.md +2 -2
  260. package/src/libs/basis_encoder.js +1 -1
  261. package/src/libs/basis_transcoder.js +1 -1
  262. package/src/libs/crunch.js +1 -0
  263. package/src/npy-loader.ts +2 -2
  264. package/dist/basis-worker.js.map +0 -1
  265. package/dist/compressed-texture-worker.js.map +0 -1
  266. package/dist/crunch-worker.js.map +0 -1
  267. package/dist/dist.min.js +0 -2
  268. package/dist/dist.min.js.map +0 -1
  269. package/dist/es5/lib/gl-constants.js.map +0 -1
  270. package/dist/esm/lib/gl-constants.js.map +0 -1
  271. package/dist/npy-worker.js.map +0 -1
@@ -1,2 +1,1179 @@
1
- !function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=19)}([function(t,e,r){t.exports=r(11)},function(t,e){function r(t,e,r,n,o,i,a){try{var s=t[i](a),_=s.value}catch(t){return void r(t)}s.done?e(_):Promise.resolve(_).then(n,o)}t.exports=function(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function s(t){r(a,o,i,s,_,"next",t)}function _(t){r(a,o,i,s,_,"throw",t)}s(void 0)}))}},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,r){"use strict";(function(t,n){r.d(e,"a",(function(){return a})),r.d(e,"b",(function(){return s})),r.d(e,"c",(function(){return _}));var o=r(3),i={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:void 0!==t&&t,document:"undefined"!=typeof document&&document},a=i.global||i.self||i.window||{},s="object"!==(void 0===n?"undefined":r.n(o)()(n))||"[object process]"!==String(n)||n.browser,_="function"==typeof importScripts,u=("undefined"!=typeof window&&window.orientation,void 0!==n&&n.version&&/v([0-9]*)/.exec(n.version));u&&parseFloat(u[1])}).call(this,r(17),r(18))},function(t,e){function r(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(t.exports=r=function(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=r=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),r(e)}t.exports=r,t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){},function(t,e){t.exports=function(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,r){var n=r(12),o=r(13),i=r(14),a=r(16);t.exports=function(t,e){return n(t)||o(t,e)||i(t,e)||a()},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){function r(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}t.exports=function(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t},t.exports.default=t.exports,t.exports.__esModule=!0},,,function(t,e,r){var n=function(t){"use strict";var e=Object.prototype,r=e.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function _(t,e,r,n){var o=e&&e.prototype instanceof f?e:f,i=Object.create(o.prototype),a=new m(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return x()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=d(a,r);if(s){if(s===c)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var _=u(t,e,r);if("normal"===_.type){if(n=r.done?"completed":"suspendedYield",_.arg===c)continue;return{value:_.arg,done:r.done}}"throw"===_.type&&(n="completed",r.method="throw",r.arg=_.arg)}}}(t,r,a),i}function u(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=_;var c={};function f(){}function S(){}function E(){}var l={};l[o]=function(){return this};var R=Object.getPrototypeOf,p=R&&R(R(D([])));p&&p!==e&&r.call(p,o)&&(l=p);var A=E.prototype=f.prototype=Object.create(l);function C(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function h(t,e){var n;this._invoke=function(o,i){function a(){return new e((function(n,a){!function n(o,i,a,s){var _=u(t[o],t,i);if("throw"!==_.type){var c=_.arg,f=c.value;return f&&"object"==typeof f&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(f).then((function(t){c.value=t,a(c)}),(function(t){return n("throw",t,a,s)}))}s(_.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function d(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,d(t,e),"throw"===e.method))return c;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var n=u(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,c;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,c):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,c)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function m(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function D(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return i.next=i}}return{next:x}}function x(){return{value:void 0,done:!0}}return S.prototype=A.constructor=E,E.constructor=S,S.displayName=s(E,a,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===S||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,E):(t.__proto__=E,s(t,a,"GeneratorFunction")),t.prototype=Object.create(A),t},t.awrap=function(t){return{__await:t}},C(h.prototype),h.prototype[i]=function(){return this},t.AsyncIterator=h,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new h(_(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},C(A),s(A,a,"Generator"),A[o]=function(){return this},A.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=D,m.prototype={constructor:m,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),_=r.call(i,"finallyLoc");if(s&&_){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!_)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,c):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),c},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),T(r),c}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;T(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:D(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),c}},t}(t.exports);try{regeneratorRuntime=n}catch(t){Function("r","regeneratorRuntime = r")(n)}},function(t,e){t.exports=function(t){if(Array.isArray(t))return t},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){var r=t&&("undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"]);if(null!=r){var n,o,i=[],a=!0,s=!1;try{for(r=r.call(t);!(a=(n=r.next()).done)&&(i.push(n.value),!e||i.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{a||null==r.return||r.return()}finally{if(s)throw o}}return i}},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,r){var n=r(15);t.exports=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e){var r,n,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:i}catch(t){r=i}try{n="function"==typeof clearTimeout?clearTimeout:a}catch(t){n=a}}();var _,u=[],c=!1,f=-1;function S(){c&&_&&(c=!1,_.length?u=_.concat(u):f=-1,u.length&&E())}function E(){if(!c){var t=s(S);c=!0;for(var e=u.length;e;){for(_=u,u=[];++f<e;)_&&_[f].run();f=-1,e=u.length}_=null,c=!1,function(t){if(n===clearTimeout)return clearTimeout(t);if((n===a||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(t);try{n(t)}catch(e){try{return n.call(null,t)}catch(e){return n.call(this,t)}}}(t)}}function l(t,e){this.fun=t,this.array=e}function R(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];u.push(new l(t,e)),1!==u.length||c||s(E)},l.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=R,o.addListener=R,o.once=R,o.off=R,o.removeListener=R,o.removeAllListeners=R,o.emit=R,o.prependListener=R,o.prependOnceListener=R,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(t,e,r){"use strict";r.r(e);var n=r(5),o=r.n(n),i=r(1),a=r.n(i),s=r(0),_=r.n(s),u=r(7),c=r.n(u),f=r(8),S=r.n(f),E=r(3),l=r.n(E);function R(t){return!!t&&(t instanceof ArrayBuffer||("undefined"!=typeof MessagePort&&t instanceof MessagePort||("undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas)))}var p=new Map,A=function(){function t(){c()(this,t)}return S()(t,null,[{key:"onmessage",set:function(t){self.onmessage=function(e){if(C(e)){var r=e.data,n=r.type,o=r.payload;t(n,o)}}}},{key:"addEventListener",value:function(t){var e=p.get(t);e||(e=function(e){if(C(e)){var r=e.data,n=r.type,o=r.payload;t(n,o)}}),self.addEventListener("message",e)}},{key:"removeEventListener",value:function(t){var e=p.get(t);p.delete(t),self.removeEventListener("message",e)}},{key:"postMessage",value:function(t,e){if(self){var r={source:"loaders.gl",type:t,payload:e},n=function t(e){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2?arguments[2]:void 0,o=n||new Set;if(e){if(R(e))o.add(e);else if(R(e.buffer))o.add(e.buffer);else if(ArrayBuffer.isView(e));else if(r&&"object"===l()(e))for(var i in e)t(e[i],r,o)}else;return void 0===n?Array.from(o):[]}(e);self.postMessage(r,n)}}}]),t}();function C(t){var e=t.type,r=t.data;return"message"===e&&r&&"string"==typeof r.source&&r.source.startsWith("loaders.gl")}function h(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function d(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?h(Object(r),!0).forEach((function(e){o()(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):h(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var P=0;function T(t,e){return new Promise((function(r,n){var o=P++;A.addEventListener((function t(e,i){if(i.id===o)switch(e){case"done":A.removeEventListener(t),r(i.result);break;case"error":A.removeEventListener(t),n(i.error)}}));var i={id:o,input:t,options:e};A.postMessage("process",i)}))}function m(t){return D.apply(this,arguments)}function D(){return(D=a()(_.a.mark((function t(e){var r,n,o,i,a,s,u;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.loader,n=e.arrayBuffer,o=e.options,i=e.context,!r.parseSync&&!r.parse){t.next=6;break}a=n,s=r.parseSync||r.parse,t.next=13;break;case 6:if(!r.parseTextSync){t.next=12;break}u=new TextDecoder,a=u.decode(n),s=r.parseTextSync,t.next=13;break;case 12:throw new Error("Could not load data with ".concat(r.name," loader"));case 13:return o=d(d({},o),{},{modules:r&&r.options&&r.options.modules||{},worker:!1}),t.next=16,s(a,d({},o),i,r);case 16:return t.abrupt("return",t.sent);case 17:case"end":return t.stop()}}),t)})))).apply(this,arguments)}new Uint8Array([0]);const x=[171,75,84,88,32,50,48,187,13,10,26,10];var y,M,O,v,G,b,B,g;!function(t){t[t.NONE=0]="NONE",t[t.BASISLZ=1]="BASISLZ",t[t.ZSTD=2]="ZSTD",t[t.ZLIB=3]="ZLIB"}(y||(y={})),function(t){t[t.BASICFORMAT=0]="BASICFORMAT"}(M||(M={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.ETC1S=163]="ETC1S",t[t.UASTC=166]="UASTC"}(O||(O={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.SRGB=1]="SRGB"}(v||(v={})),function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.LINEAR=1]="LINEAR",t[t.SRGB=2]="SRGB",t[t.ITU=3]="ITU",t[t.NTSC=4]="NTSC",t[t.SLOG=5]="SLOG",t[t.SLOG2=6]="SLOG2"}(G||(G={})),function(t){t[t.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",t[t.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(b||(b={})),function(t){t[t.RGB=0]="RGB",t[t.RRR=3]="RRR",t[t.GGG=4]="GGG",t[t.AAA=15]="AAA"}(B||(B={})),function(t){t[t.RGB=0]="RGB",t[t.RGBA=3]="RGBA",t[t.RRR=4]="RRR",t[t.RRRG=5]="RRRG"}(g||(g={}));class H{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=y.NONE,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:M.BASICFORMAT,versionNumber:2,descriptorBlockSize:40,colorModel:O.UNSPECIFIED,colorPrimaries:v.SRGB,transferFunction:v.SRGB,flags:b.ALPHA_STRAIGHT,texelBlockDimension:{x:4,y:4,z:1,w:1},bytesPlane:[],samples:[]}],this.keyValue={},this.globalData=null}}class w{constructor(t,e,r,n){this._dataView=new DataView(t.buffer,t.byteOffset+e,r),this._littleEndian=n,this._offset=0}_nextUint8(){const t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){const t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){const t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){const t=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_skip(t){return this._offset+=t,this}_scan(t,e=0){const r=this._offset;let n=0;for(;this._dataView.getUint8(this._offset)!==e&&n<t;)n++,this._offset++;return n<t&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+r,n)}}function L(t){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString("utf8")}function X(t,e){for(var r=new Array(e.mipMapLevels),n=e.width,o=e.height,i=0,a=0;a<e.mipMapLevels;++a){var s=I(e,n,o,t,a),_=U(t,a,i,s);r[a]={compressed:!0,format:e.internalFormat,data:_,width:n,height:o,levelSize:s},n=Math.max(1,n>>1),o=Math.max(1,o>>1),i+=s}return r}function U(t,e,r,n){return Array.isArray(t)?t[e].levelData:new Uint8Array(t.buffer,t.byteOffset+r,n)}function I(t,e,r,n,o){return Array.isArray(n)?t.sizeFunction(n[o]):t.sizeFunction(e,r)}var K={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},F={131:K.COMPRESSED_RGB_S3TC_DXT1_EXT,132:K.COMPRESSED_SRGB_S3TC_DXT1_EXT,133:K.COMPRESSED_RGBA_S3TC_DXT1_EXT,134:K.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,135:K.COMPRESSED_RGBA_S3TC_DXT3_EXT,136:K.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,137:K.COMPRESSED_RGBA_S3TC_DXT5_EXT,138:K.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,139:K.COMPRESSED_RED_RGTC1_EXT,140:K.COMPRESSED_SIGNED_RED_RGTC1_EXT,141:K.COMPRESSED_RED_GREEN_RGTC2_EXT,142:K.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,147:K.COMPRESSED_RGB8_ETC2,148:K.COMPRESSED_SRGB8_ETC2,149:K.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,150:K.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,151:K.COMPRESSED_RGBA8_ETC2_EAC,152:K.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,153:K.COMPRESSED_R11_EAC,154:K.COMPRESSED_SIGNED_R11_EAC,155:K.COMPRESSED_RG11_EAC,156:K.COMPRESSED_SIGNED_RG11_EAC,157:K.COMPRESSED_RGBA_ASTC_4x4_KHR,158:K.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,159:K.COMPRESSED_RGBA_ASTC_5x4_KHR,160:K.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,161:K.COMPRESSED_RGBA_ASTC_5x5_KHR,162:K.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,163:K.COMPRESSED_RGBA_ASTC_6x5_KHR,164:K.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,165:K.COMPRESSED_RGBA_ASTC_6x6_KHR,166:K.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,167:K.COMPRESSED_RGBA_ASTC_8x5_KHR,168:K.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,169:K.COMPRESSED_RGBA_ASTC_8x6_KHR,170:K.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,171:K.COMPRESSED_RGBA_ASTC_8x8_KHR,172:K.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,173:K.COMPRESSED_RGBA_ASTC_10x5_KHR,174:K.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,175:K.COMPRESSED_RGBA_ASTC_10x6_KHR,176:K.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,177:K.COMPRESSED_RGBA_ASTC_10x8_KHR,178:K.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,179:K.COMPRESSED_RGBA_ASTC_10x10_KHR,180:K.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,181:K.COMPRESSED_RGBA_ASTC_12x10_KHR,182:K.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,183:K.COMPRESSED_RGBA_ASTC_12x12_KHR,184:K.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,1000054e3:K.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,1000054001:K.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,1000066e3:K.COMPRESSED_RGBA_ASTC_4x4_KHR,1000066001:K.COMPRESSED_RGBA_ASTC_5x4_KHR,1000066002:K.COMPRESSED_RGBA_ASTC_5x5_KHR,1000066003:K.COMPRESSED_RGBA_ASTC_6x5_KHR,1000066004:K.COMPRESSED_RGBA_ASTC_6x6_KHR,1000066005:K.COMPRESSED_RGBA_ASTC_8x5_KHR,1000066006:K.COMPRESSED_RGBA_ASTC_8x6_KHR,1000066007:K.COMPRESSED_RGBA_ASTC_8x8_KHR,1000066008:K.COMPRESSED_RGBA_ASTC_10x5_KHR,1000066009:K.COMPRESSED_RGBA_ASTC_10x6_KHR,1000066010:K.COMPRESSED_RGBA_ASTC_10x8_KHR,1000066011:K.COMPRESSED_RGBA_ASTC_10x10_KHR,1000066012:K.COMPRESSED_RGBA_ASTC_12x10_KHR,1000066013:K.COMPRESSED_RGBA_ASTC_12x12_KHR};var N=[171,75,84,88,32,50,48,187,13,10,26,10];function k(t){var e=new Uint8Array(t.buffer||t,t.byteOffset||0,N.length);return!(e[0]!==N[0]||e[1]!==N[1]||e[2]!==N[2]||e[3]!==N[3]||e[4]!==N[4]||e[5]!==N[5]||e[6]!==N[6]||e[7]!==N[7]||e[8]!==N[8]||e[9]!==N[9]||e[10]!==N[10]||e[11]!==N[11])}function j(t){var e,r=function(t){const e=new Uint8Array(t.buffer,t.byteOffset,x.length);if(e[0]!==x[0]||e[1]!==x[1]||e[2]!==x[2]||e[3]!==x[3]||e[4]!==x[4]||e[5]!==x[5]||e[6]!==x[6]||e[7]!==x[7]||e[8]!==x[8]||e[9]!==x[9]||e[10]!==x[10]||e[11]!==x[11])throw new Error("Missing KTX 2.0 identifier.");const r=new H,n=17*Uint32Array.BYTES_PER_ELEMENT,o=new w(t,x.length,n,!0);r.vkFormat=o._nextUint32(),r.typeSize=o._nextUint32(),r.pixelWidth=o._nextUint32(),r.pixelHeight=o._nextUint32(),r.pixelDepth=o._nextUint32(),r.layerCount=o._nextUint32(),r.faceCount=o._nextUint32();const i=o._nextUint32();r.supercompressionScheme=o._nextUint32();const a=o._nextUint32(),s=o._nextUint32(),_=o._nextUint32(),u=o._nextUint32(),c=o._nextUint64(),f=o._nextUint64(),S=new w(t,x.length+n,3*i*8,!0);for(let e=0;e<i;e++)r.levels.push({levelData:new Uint8Array(t.buffer,t.byteOffset+S._nextUint64(),S._nextUint64()),uncompressedByteLength:S._nextUint64()});const E=new w(t,a,s,!0),l={vendorId:E._skip(4)._nextUint16(),descriptorType:E._nextUint16(),versionNumber:E._nextUint16(),descriptorBlockSize:E._nextUint16(),colorModel:E._nextUint8(),colorPrimaries:E._nextUint8(),transferFunction:E._nextUint8(),flags:E._nextUint8(),texelBlockDimension:{x:E._nextUint8()+1,y:E._nextUint8()+1,z:E._nextUint8()+1,w:E._nextUint8()+1},bytesPlane:[E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8()],samples:[]},R=(l.descriptorBlockSize/4-6)/4;for(let t=0;t<R;t++)l.samples[t]={bitOffset:E._nextUint16(),bitLength:E._nextUint8(),channelID:E._nextUint8(),samplePosition:[E._nextUint8(),E._nextUint8(),E._nextUint8(),E._nextUint8()],sampleLower:E._nextUint32(),sampleUpper:E._nextUint32()};r.dataFormatDescriptor.length=0,r.dataFormatDescriptor.push(l);const p=new w(t,_,u,!0);for(;p._offset<u;){const t=p._nextUint32(),e=p._scan(t),n=L(e),o=p._scan(t-e.byteLength);r.keyValue[n]=n.match(/^ktx/i)?L(o):o,t%4&&p._skip(4-t%4)}if(f<=0)return r;const A=new w(t,c,f,!0),C=A._nextUint16(),h=A._nextUint16(),d=A._nextUint32(),P=A._nextUint32(),T=A._nextUint32(),m=A._nextUint32(),D=[];for(let t=0;t<i;t++)D.push({imageFlags:A._nextUint32(),rgbSliceByteOffset:A._nextUint32(),rgbSliceByteLength:A._nextUint32(),alphaSliceByteOffset:A._nextUint32(),alphaSliceByteLength:A._nextUint32()});const y=c+A._offset,M=y+d,O=M+P,v=O+T,G=new Uint8Array(t.buffer,t.byteOffset+y,d),b=new Uint8Array(t.buffer,t.byteOffset+M,P),B=new Uint8Array(t.buffer,t.byteOffset+O,T),g=new Uint8Array(t.buffer,t.byteOffset+v,m);return r.globalData={endpointCount:C,selectorCount:h,imageDescs:D,endpointsData:G,selectorsData:b,tablesData:B,extendedData:g},r}(new Uint8Array(t)),n=Math.max(1,r.levels.length),o=r.pixelWidth,i=r.pixelHeight,a=(e=r.vkFormat,F[e]);return X(r.levels,{mipMapLevels:n,width:o,height:i,sizeFunction:function(t){return t.uncompressedByteLength},internalFormat:a})}function V(t,e){if(!t)throw new Error(e||"loader assertion failed.")}var W={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,PIXEL_FORMATS:{DXT1:K.COMPRESSED_RGB_S3TC_DXT1_EXT,DXT3:K.COMPRESSED_RGBA_S3TC_DXT3_EXT,DXT5:K.COMPRESSED_RGBA_S3TC_DXT5_EXT,"ATC ":K.COMPRESSED_RGB_ATC_WEBGL,ATCA:K.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,ATCI:K.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL},SIZE_FUNCTIONS:{DXT1:Z,DXT3:q,DXT5:q,"ATC ":Z,ATCA:q,ATCI:q}};function z(t){var e=new Int32Array(t,0,W.HEADER_LENGTH),r=e[W.HEADER_PF_FOURCC_INDEX];V(Boolean(e[W.HEADER_PF_FLAGS_INDEX]&W.DDPF_FOURCC),"DDS: Unsupported format, must contain a FourCC code");var n,o=(n=r,String.fromCharCode(255&n,n>>8&255,n>>16&255,n>>24&255)),i=W.PIXEL_FORMATS[o],a=W.SIZE_FUNCTIONS[o];V(i&&a,"DDS: Unknown pixel format ".concat(r));var s=1;e[W.HEADER_FLAGS_INDEX]&W.DDSD_MIPMAPCOUNT&&(s=Math.max(1,e[W.MIPMAPCOUNT_INDEX]));var _=e[W.HEADER_WIDTH_INDEX],u=e[W.HEADER_HEIGHT_INDEX],c=e[W.HEADER_SIZE_INDEX]+4;return X(new Uint8Array(t,c),{mipMapLevels:s,width:_,height:u,sizeFunction:a,internalFormat:i})}function Z(t,e){return(t+3>>2)*(e+3>>2)*8}function q(t,e){return(t+3>>2)*(e+3>>2)*16}var Y=55727696,$=1347834371,J=13,Q=52,tt=0,et=2,rt=4,nt=6,ot=7,it=11,at=12,st={0:[K.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],1:[K.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],2:[K.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],3:[K.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],6:[K.COMPRESSED_RGB_ETC1_WEBGL],7:[K.COMPRESSED_RGB_S3TC_DXT1_EXT],9:[K.COMPRESSED_RGBA_S3TC_DXT3_EXT],11:[K.COMPRESSED_RGBA_S3TC_DXT5_EXT],22:[K.COMPRESSED_RGB8_ETC2],23:[K.COMPRESSED_RGBA8_ETC2_EAC],24:[K.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],25:[K.COMPRESSED_R11_EAC],26:[K.COMPRESSED_RG11_EAC],27:[K.COMPRESSED_RGBA_ASTC_4X4_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],28:[K.COMPRESSED_RGBA_ASTC_5X4_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],29:[K.COMPRESSED_RGBA_ASTC_5X5_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],30:[K.COMPRESSED_RGBA_ASTC_6X5_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],31:[K.COMPRESSED_RGBA_ASTC_6X6_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],32:[K.COMPRESSED_RGBA_ASTC_8X5_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],33:[K.COMPRESSED_RGBA_ASTC_8X6_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],34:[K.COMPRESSED_RGBA_ASTC_8X8_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],35:[K.COMPRESSED_RGBA_ASTC_10X5_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],36:[K.COMPRESSED_RGBA_ASTC_10X6_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],37:[K.COMPRESSED_RGBA_ASTC_10X8_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],38:[K.COMPRESSED_RGBA_ASTC_10X10_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],39:[K.COMPRESSED_RGBA_ASTC_12X10_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],40:[K.COMPRESSED_RGBA_ASTC_12X12_KHR,K.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]},_t={0:ut,1:ut,2:ct,3:ct,6:ft,7:ft,9:St,11:St,22:ft,23:St,24:ft,25:ft,26:St,27:St,28:function(t,e){return Math.floor((t+4)/5)*Math.floor((e+3)/4)*16},29:function(t,e){return Math.floor((t+4)/5)*Math.floor((e+4)/5)*16},30:function(t,e){return Math.floor((t+5)/6)*Math.floor((e+4)/5)*16},31:function(t,e){return Math.floor((t+5)/6)*Math.floor((e+5)/6)*16},32:function(t,e){return Math.floor((t+7)/8)*Math.floor((e+4)/5)*16},33:function(t,e){return Math.floor((t+7)/8)*Math.floor((e+5)/6)*16},34:function(t,e){return Math.floor((t+7)/8)*Math.floor((e+7)/8)*16},35:function(t,e){return Math.floor((t+9)/10)*Math.floor((e+4)/5)*16},36:function(t,e){return Math.floor((t+9)/10)*Math.floor((e+5)/6)*16},37:function(t,e){return Math.floor((t+9)/10)*Math.floor((e+7)/8)*16},38:function(t,e){return Math.floor((t+9)/10)*Math.floor((e+9)/10)*16},39:function(t,e){return Math.floor((t+11)/12)*Math.floor((e+9)/10)*16},40:function(t,e){return Math.floor((t+11)/12)*Math.floor((e+11)/12)*16}};function ut(t,e){return(t=Math.max(t,16))*(e=Math.max(e,8))/4}function ct(t,e){return(t=Math.max(t,8))*(e=Math.max(e,8))/2}function ft(t,e){return Math.floor((t+3)/4)*Math.floor((e+3)/4)*8}function St(t,e){return Math.floor((t+3)/4)*Math.floor((e+3)/4)*16}function Et(t){if(k(t))return j(t);if(function(t){return new Uint32Array(t,0,W.HEADER_LENGTH)[W.MAGIC_NUMBER_INDEX]===W.MAGIC_NUMBER}(t))return z(t);if(function(t){var e=new Uint32Array(t,0,J)[tt];return e===Y||e===$}(t))return function(t){var e=new Uint32Array(t,0,J),r=e[et],n=e[rt],o=st[r]||[],i=o.length>1&&n?o[1]:o[0],a=_t[r],s=e[it],_=e[ot],u=e[nt],c=Q+e[at];return X(new Uint8Array(t,c),{mipMapLevels:s,width:_,height:u,sizeFunction:a,internalFormat:i})}(t);throw new Error("Texture container format not recognized")}var lt=r(6),Rt=r.n(lt),pt=r(2),At=r(4);var Ct,ht,dt={};function Pt(t){return Tt.apply(this,arguments)}function Tt(){return(Tt=a()(_.a.mark((function t(e){var r,n,o=arguments;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:null,n=o.length>2&&void 0!==o[2]?o[2]:{},r&&(e=mt(e,r,n)),dt[e]=dt[e]||Dt(e),t.next=6,dt[e];case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function mt(t,e,r){if(t.startsWith("http"))return t;var n=r.modules||{};return n[t]?n[t]:pt.b?r.CDN?(function(t,e){if(!t)throw new Error(e||"loaders.gl assertion failed.")}(r.CDN.startsWith("http")),"".concat(r.CDN,"/").concat(e,"@").concat("3.1.0-alpha.4","/dist/libs/").concat(t)):pt.c?"../src/libs/".concat(t):"modules/".concat(e,"/src/libs/").concat(t):"modules/".concat(e,"/dist/libs/").concat(t)}function Dt(t){return xt.apply(this,arguments)}function xt(){return(xt=a()(_.a.mark((function t(e){var r,n,o;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.endsWith("wasm")){t.next=7;break}return t.next=3,fetch(e);case 3:return r=t.sent,t.next=6,r.arrayBuffer();case 6:return t.abrupt("return",t.sent);case 7:if(pt.b){t.next=14;break}if(t.t0=At.requireFromFile,!t.t0){t.next=13;break}return t.next=12,At.requireFromFile(e);case 12:t.t0=t.sent;case 13:return t.abrupt("return",t.t0);case 14:if(!pt.c){t.next=16;break}return t.abrupt("return",importScripts(e));case 16:return t.next=18,fetch(e);case 18:return n=t.sent,t.next=21,n.text();case 21:return o=t.sent,t.abrupt("return",yt(o,e));case 23:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function yt(t,e){if(!pt.b)return At.requireFromString&&At.requireFromString(t,e);if(pt.c)return eval.call(pt.a,t),null;var r=document.createElement("script");r.id=e;try{r.appendChild(document.createTextNode(t))}catch(e){r.text=t}return document.body.appendChild(r),null}function Mt(t){return Ot.apply(this,arguments)}function Ot(){return(Ot=a()(_.a.mark((function t(e){var r;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=e.modules||{}).basis){t.next=3;break}return t.abrupt("return",r.basis);case 3:return Ct=Ct||vt(e),t.next=6,Ct;case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function vt(t){return Gt.apply(this,arguments)}function Gt(){return(Gt=a()(_.a.mark((function t(e){var r,n,o,i;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=null,n=null,t.t0=Promise,t.next=5,Pt("basis_transcoder.js","textures",e);case 5:return t.t1=t.sent,t.next=8,Pt("basis_transcoder.wasm","textures",e);case 8:return t.t2=t.sent,t.t3=[t.t1,t.t2],t.next=12,t.t0.all.call(t.t0,t.t3);case 12:return o=t.sent,i=Rt()(o,2),r=i[0],n=i[1],r=r||globalThis.BASIS,t.next=19,bt(r,n);case 19:return t.abrupt("return",t.sent);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function bt(t,e){var r={};return e&&(r.wasmBinary=e),new Promise((function(e){t(r).then((function(t){var r=t.BasisFile;(0,t.initializeBasis)(),e({BasisFile:r})}))}))}function Bt(t){return gt.apply(this,arguments)}function gt(){return(gt=a()(_.a.mark((function t(e){var r;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=e.modules||{}).basisEncoder){t.next=3;break}return t.abrupt("return",r.basisEncoder);case 3:return ht=ht||Ht(e),t.next=6,ht;case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Ht(t){return wt.apply(this,arguments)}function wt(){return(wt=a()(_.a.mark((function t(e){var r,n,o,i;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=null,n=null,t.t0=Promise,t.next=5,Pt("basis_encoder.js","textures",e);case 5:return t.t1=t.sent,t.next=8,Pt("basis_encoder.wasm","textures",e);case 8:return t.t2=t.sent,t.t3=[t.t1,t.t2],t.next=12,t.t0.all.call(t.t0,t.t3);case 12:return o=t.sent,i=Rt()(o,2),r=i[0],n=i[1],r=r||globalThis.BASIS,t.next=19,Lt(r,n);case 19:return t.abrupt("return",t.sent);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Lt(t,e){var r={};return e&&(r.wasmBinary=e),new Promise((function(e){t(r).then((function(t){var r=t.BasisFile,n=t.KTX2File;(0,t.initializeBasis)(),e({BasisFile:r,KTX2File:n})}))}))}function Xt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return Ut(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ut(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var It=["","WEBKIT_","MOZ_"],Kt={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"},Ft=null;function Nt(t){if(!Ft){t=t||function(){try{return document.createElement("canvas").getContext("webgl")}catch(t){return null}}()||void 0,Ft=new Set;var e,r=Xt(It);try{for(r.s();!(e=r.n()).done;){var n=e.value;for(var o in Kt)if(t&&t.getExtension("".concat(n).concat(o))){var i=Kt[o];Ft.add(i)}}}catch(t){r.e(t)}finally{r.f()}}return Ft}var kt={etc1:{basisFormat:0,compressed:!0,format:K.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:K.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:K.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:K.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:K.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:K.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}};function jt(t,e){return Vt.apply(this,arguments)}function Vt(){return(Vt=a()(_.a.mark((function t(e,r){var n,o,i,a,s,u;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("auto"!==r.basis.containerFormat){t.next=11;break}if(!k(e)){t.next=6;break}return t.next=4,Bt(r);case 4:return n=t.sent,t.abrupt("return",Zt(n.KTX2File,e,r));case 6:return t.next=8,Mt(r);case 8:return o=t.sent,i=o.BasisFile,t.abrupt("return",Wt(i,e,r));case 11:t.t0=r.basis.module,t.next="encoder"===t.t0?14:(t.t0,22);break;case 14:return t.next=16,Bt(r);case 16:a=t.sent,t.t1=r.basis.containerFormat,t.next="ktx2"===t.t1?20:(t.t1,21);break;case 20:return t.abrupt("return",Zt(a.KTX2File,e,r));case 21:return t.abrupt("return",Wt(a.BasisFile,e,r));case 22:return t.next=24,Mt(r);case 24:return s=t.sent,u=s.BasisFile,t.abrupt("return",Wt(u,e,r));case 27:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Wt(t,e,r){var n=new t(new Uint8Array(e));try{if(!n.startTranscoding())return null;for(var o=n.getNumImages(),i=[],a=0;a<o;a++){for(var s=n.getNumLevels(a),_=[],u=0;u<s;u++)_.push(zt(n,a,u,r));i.push(_)}return i}finally{n.close(),n.delete()}}function zt(t,e,r,n){var o=t.getImageWidth(e,r),i=t.getImageHeight(e,r),a=t.getHasAlpha(),s=Yt(n,a),_=s.compressed,u=s.format,c=s.basisFormat,f=t.getImageTranscodedSizeInBytes(e,r,c),S=new Uint8Array(f);return t.transcodeImage(S,e,r,c,0,0)?{width:o,height:i,data:S,compressed:_,hasAlpha:a,format:u}:null}function Zt(t,e,r){var n=new t(new Uint8Array(e));try{if(!n.startTranscoding())return null;for(var o=n.getLevels(),i=[],a=0;a<o;a++){i.push(qt(n,a,r));break}return i}finally{n.close(),n.delete()}}function qt(t,e,r){var n=t.getImageLevelInfo(e,0,0),o=n.alphaFlag,i=n.height,a=n.width,s=Yt(r,o),_=s.compressed,u=s.format,c=s.basisFormat,f=t.getImageTranscodedSizeInBytes(e,0,0,c),S=new Uint8Array(f);return t.transcodeImage(S,e,0,0,c,0,-1,-1)?{width:a,height:i,data:S,compressed:_,alphaFlag:o,format:u}:null}function Yt(t,e){var r=t&&t.basis&&t.basis.format;return"auto"===r&&(r=function(){var t=Nt();if(t.has("astc"))return"astc-4x4";if(t.has("dxt"))return{alpha:"bc3",noAlpha:"bc1"};if(t.has("pvrtc"))return{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"};if(t.has("etc1"))return"etc1";if(t.has("etc2"))return"etc2";return"rgb565"}()),"object"===l()(r)&&(r=e?r.alpha:r.noAlpha),r=r.toLowerCase(),kt[r]}function $t(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Jt(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?$t(Object(r),!0).forEach((function(e){o()(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):$t(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var Qt,te,ee={name:"Texture Containers",id:"compressed-texture",module:"textures",version:"3.1.0-alpha.4",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}}},re=Jt(Jt({},ee),{},{parse:(Qt=a()(_.a.mark((function t(e,r){return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!r["compressed-texture"].useBasis){t.next=5;break}return r.basis=Jt(Jt({format:{alpha:"BC3",noAlpha:"BC1"}},r.basis),{},{containerFormat:"ktx2",module:"encoder"}),t.next=4,jt(e,r);case 4:return t.abrupt("return",t.sent);case 5:return t.abrupt("return",Et(e));case 6:case"end":return t.stop()}}),t)}))),function(t,e){return Qt.apply(this,arguments)})});te=re,"undefined"!=typeof self&&(A.onmessage=function(){var t=a()(_.a.mark((function t(e,r){var n,o,i,a,s;return _.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.t0=e,t.next="process"===t.t0?3:16;break;case 3:return t.prev=3,n=r.input,o=r.options,i=void 0===o?{}:o,t.next=7,m({loader:te,arrayBuffer:n,options:i,context:{parse:T}});case 7:a=t.sent,A.postMessage("done",{result:a}),t.next=15;break;case 11:t.prev=11,t.t1=t.catch(3),s=t.t1 instanceof Error?t.t1.message:"",A.postMessage("error",{error:s});case 15:return t.abrupt("break",16);case 16:case"end":return t.stop()}}),t,null,[[3,11]])})));return function(e,r){return t.apply(this,arguments)}}())}]);
2
- //# sourceMappingURL=compressed-texture-worker.js.map
1
+ (() => {
2
+ // ../loader-utils/src/lib/env-utils/assert.ts
3
+ function assert(condition, message) {
4
+ if (!condition) {
5
+ throw new Error(message || "loader assertion failed.");
6
+ }
7
+ }
8
+
9
+ // ../worker-utils/src/lib/env-utils/version.ts
10
+ var DEFAULT_VERSION = "beta";
11
+ var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : DEFAULT_VERSION;
12
+ if (typeof __VERSION__ === "undefined") {
13
+ console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
14
+ }
15
+
16
+ // ../worker-utils/src/lib/env-utils/assert.ts
17
+ function assert2(condition, message) {
18
+ if (!condition) {
19
+ throw new Error(message || "loaders.gl assertion failed.");
20
+ }
21
+ }
22
+
23
+ // ../worker-utils/src/lib/env-utils/globals.ts
24
+ var globals = {
25
+ self: typeof self !== "undefined" && self,
26
+ window: typeof window !== "undefined" && window,
27
+ global: typeof global !== "undefined" && global,
28
+ document: typeof document !== "undefined" && document
29
+ };
30
+ var self_ = globals.self || globals.window || globals.global || {};
31
+ var window_ = globals.window || globals.self || globals.global || {};
32
+ var global_ = globals.global || globals.self || globals.window || {};
33
+ var document_ = globals.document || {};
34
+ var isBrowser = typeof process !== "object" || String(process) !== "[object process]" || process.browser;
35
+ var isWorker = typeof importScripts === "function";
36
+ var isMobile = typeof window !== "undefined" && typeof window.orientation !== "undefined";
37
+ var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
38
+ var nodeVersion = matches && parseFloat(matches[1]) || 0;
39
+
40
+ // ../worker-utils/src/lib/worker-utils/get-transfer-list.ts
41
+ function getTransferList(object, recursive = true, transfers) {
42
+ const transfersSet = transfers || new Set();
43
+ if (!object) {
44
+ } else if (isTransferable(object)) {
45
+ transfersSet.add(object);
46
+ } else if (isTransferable(object.buffer)) {
47
+ transfersSet.add(object.buffer);
48
+ } else if (ArrayBuffer.isView(object)) {
49
+ } else if (recursive && typeof object === "object") {
50
+ for (const key in object) {
51
+ getTransferList(object[key], recursive, transfersSet);
52
+ }
53
+ }
54
+ return transfers === void 0 ? Array.from(transfersSet) : [];
55
+ }
56
+ function isTransferable(object) {
57
+ if (!object) {
58
+ return false;
59
+ }
60
+ if (object instanceof ArrayBuffer) {
61
+ return true;
62
+ }
63
+ if (typeof MessagePort !== "undefined" && object instanceof MessagePort) {
64
+ return true;
65
+ }
66
+ if (typeof ImageBitmap !== "undefined" && object instanceof ImageBitmap) {
67
+ return true;
68
+ }
69
+ if (typeof OffscreenCanvas !== "undefined" && object instanceof OffscreenCanvas) {
70
+ return true;
71
+ }
72
+ return false;
73
+ }
74
+
75
+ // ../worker-utils/src/lib/worker-farm/worker-body.ts
76
+ var onMessageWrapperMap = new Map();
77
+ var WorkerBody = class {
78
+ static set onmessage(onMessage) {
79
+ self.onmessage = (message) => {
80
+ if (!isKnownMessage(message)) {
81
+ return;
82
+ }
83
+ const { type, payload } = message.data;
84
+ onMessage(type, payload);
85
+ };
86
+ }
87
+ static addEventListener(onMessage) {
88
+ let onMessageWrapper = onMessageWrapperMap.get(onMessage);
89
+ if (!onMessageWrapper) {
90
+ onMessageWrapper = (message) => {
91
+ if (!isKnownMessage(message)) {
92
+ return;
93
+ }
94
+ const { type, payload } = message.data;
95
+ onMessage(type, payload);
96
+ };
97
+ }
98
+ self.addEventListener("message", onMessageWrapper);
99
+ }
100
+ static removeEventListener(onMessage) {
101
+ const onMessageWrapper = onMessageWrapperMap.get(onMessage);
102
+ onMessageWrapperMap.delete(onMessage);
103
+ self.removeEventListener("message", onMessageWrapper);
104
+ }
105
+ static postMessage(type, payload) {
106
+ if (self) {
107
+ const data = { source: "loaders.gl", type, payload };
108
+ const transferList = getTransferList(payload);
109
+ self.postMessage(data, transferList);
110
+ }
111
+ }
112
+ };
113
+ function isKnownMessage(message) {
114
+ const { type, data } = message;
115
+ return type === "message" && data && typeof data.source === "string" && data.source.startsWith("loaders.gl");
116
+ }
117
+
118
+ // ../worker-utils/src/lib/library-utils/library-utils.ts
119
+ var LATEST = "beta";
120
+ var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
121
+ var loadLibraryPromises = {};
122
+ async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
123
+ if (moduleName) {
124
+ libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
125
+ }
126
+ loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
127
+ return await loadLibraryPromises[libraryUrl];
128
+ }
129
+ function getLibraryUrl(library, moduleName, options) {
130
+ if (library.startsWith("http")) {
131
+ return library;
132
+ }
133
+ const modules = options.modules || {};
134
+ if (modules[library]) {
135
+ return modules[library];
136
+ }
137
+ if (!isBrowser) {
138
+ return `modules/${moduleName}/dist/libs/${library}`;
139
+ }
140
+ if (options.CDN) {
141
+ assert2(options.CDN.startsWith("http"));
142
+ return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
143
+ }
144
+ if (isWorker) {
145
+ return `../src/libs/${library}`;
146
+ }
147
+ return `modules/${moduleName}/src/libs/${library}`;
148
+ }
149
+ async function loadLibraryFromFile(libraryUrl) {
150
+ if (libraryUrl.endsWith("wasm")) {
151
+ const response2 = await fetch(libraryUrl);
152
+ return await response2.arrayBuffer();
153
+ }
154
+ if (!isBrowser) {
155
+ return node.requireFromFile && await node.requireFromFile(libraryUrl);
156
+ }
157
+ if (isWorker) {
158
+ return importScripts(libraryUrl);
159
+ }
160
+ const response = await fetch(libraryUrl);
161
+ const scriptSource = await response.text();
162
+ return loadLibraryFromString(scriptSource, libraryUrl);
163
+ }
164
+ function loadLibraryFromString(scriptSource, id) {
165
+ if (!isBrowser) {
166
+ return node.requireFromString && node.requireFromString(scriptSource, id);
167
+ }
168
+ if (isWorker) {
169
+ eval.call(global_, scriptSource);
170
+ return null;
171
+ }
172
+ const script = document.createElement("script");
173
+ script.id = id;
174
+ try {
175
+ script.appendChild(document.createTextNode(scriptSource));
176
+ } catch (e2) {
177
+ script.text = scriptSource;
178
+ }
179
+ document.body.appendChild(script);
180
+ return null;
181
+ }
182
+
183
+ // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
184
+ var requestId = 0;
185
+ function createLoaderWorker(loader) {
186
+ if (typeof self === "undefined") {
187
+ return;
188
+ }
189
+ WorkerBody.onmessage = async (type, payload) => {
190
+ switch (type) {
191
+ case "process":
192
+ try {
193
+ const { input, options = {} } = payload;
194
+ const result = await parseData({
195
+ loader,
196
+ arrayBuffer: input,
197
+ options,
198
+ context: {
199
+ parse: parseOnMainThread
200
+ }
201
+ });
202
+ WorkerBody.postMessage("done", { result });
203
+ } catch (error) {
204
+ const message = error instanceof Error ? error.message : "";
205
+ WorkerBody.postMessage("error", { error: message });
206
+ }
207
+ break;
208
+ default:
209
+ }
210
+ };
211
+ }
212
+ function parseOnMainThread(arrayBuffer, options) {
213
+ return new Promise((resolve, reject) => {
214
+ const id = requestId++;
215
+ const onMessage = (type, payload2) => {
216
+ if (payload2.id !== id) {
217
+ return;
218
+ }
219
+ switch (type) {
220
+ case "done":
221
+ WorkerBody.removeEventListener(onMessage);
222
+ resolve(payload2.result);
223
+ break;
224
+ case "error":
225
+ WorkerBody.removeEventListener(onMessage);
226
+ reject(payload2.error);
227
+ break;
228
+ default:
229
+ }
230
+ };
231
+ WorkerBody.addEventListener(onMessage);
232
+ const payload = { id, input: arrayBuffer, options };
233
+ WorkerBody.postMessage("process", payload);
234
+ });
235
+ }
236
+ async function parseData({ loader, arrayBuffer, options, context }) {
237
+ let data;
238
+ let parser;
239
+ if (loader.parseSync || loader.parse) {
240
+ data = arrayBuffer;
241
+ parser = loader.parseSync || loader.parse;
242
+ } else if (loader.parseTextSync) {
243
+ const textDecoder = new TextDecoder();
244
+ data = textDecoder.decode(arrayBuffer);
245
+ parser = loader.parseTextSync;
246
+ } else {
247
+ throw new Error(`Could not load data with ${loader.name} loader`);
248
+ }
249
+ options = {
250
+ ...options,
251
+ modules: loader && loader.options && loader.options.modules || {},
252
+ worker: false
253
+ };
254
+ return await parser(data, { ...options }, context, loader);
255
+ }
256
+
257
+ // src/lib/utils/version.ts
258
+ var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
259
+
260
+ // ../../node_modules/ktx-parse/dist/ktx-parse.modern.js
261
+ var t = new Uint8Array([0]);
262
+ var e = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
263
+ var n;
264
+ var i;
265
+ var s;
266
+ var a;
267
+ var r;
268
+ var o;
269
+ var l;
270
+ var f;
271
+ !function(t2) {
272
+ t2[t2.NONE = 0] = "NONE", t2[t2.BASISLZ = 1] = "BASISLZ", t2[t2.ZSTD = 2] = "ZSTD", t2[t2.ZLIB = 3] = "ZLIB";
273
+ }(n || (n = {})), function(t2) {
274
+ t2[t2.BASICFORMAT = 0] = "BASICFORMAT";
275
+ }(i || (i = {})), function(t2) {
276
+ t2[t2.UNSPECIFIED = 0] = "UNSPECIFIED", t2[t2.ETC1S = 163] = "ETC1S", t2[t2.UASTC = 166] = "UASTC";
277
+ }(s || (s = {})), function(t2) {
278
+ t2[t2.UNSPECIFIED = 0] = "UNSPECIFIED", t2[t2.SRGB = 1] = "SRGB";
279
+ }(a || (a = {})), function(t2) {
280
+ t2[t2.UNSPECIFIED = 0] = "UNSPECIFIED", t2[t2.LINEAR = 1] = "LINEAR", t2[t2.SRGB = 2] = "SRGB", t2[t2.ITU = 3] = "ITU", t2[t2.NTSC = 4] = "NTSC", t2[t2.SLOG = 5] = "SLOG", t2[t2.SLOG2 = 6] = "SLOG2";
281
+ }(r || (r = {})), function(t2) {
282
+ t2[t2.ALPHA_STRAIGHT = 0] = "ALPHA_STRAIGHT", t2[t2.ALPHA_PREMULTIPLIED = 1] = "ALPHA_PREMULTIPLIED";
283
+ }(o || (o = {})), function(t2) {
284
+ t2[t2.RGB = 0] = "RGB", t2[t2.RRR = 3] = "RRR", t2[t2.GGG = 4] = "GGG", t2[t2.AAA = 15] = "AAA";
285
+ }(l || (l = {})), function(t2) {
286
+ t2[t2.RGB = 0] = "RGB", t2[t2.RGBA = 3] = "RGBA", t2[t2.RRR = 4] = "RRR", t2[t2.RRRG = 5] = "RRRG";
287
+ }(f || (f = {}));
288
+ var U = class {
289
+ constructor() {
290
+ this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = n.NONE, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: i.BASICFORMAT, versionNumber: 2, descriptorBlockSize: 40, colorModel: s.UNSPECIFIED, colorPrimaries: a.SRGB, transferFunction: a.SRGB, flags: o.ALPHA_STRAIGHT, texelBlockDimension: { x: 4, y: 4, z: 1, w: 1 }, bytesPlane: [], samples: [] }], this.keyValue = {}, this.globalData = null;
291
+ }
292
+ };
293
+ var c = class {
294
+ constructor(t2, e2, n2, i2) {
295
+ this._dataView = new DataView(t2.buffer, t2.byteOffset + e2, n2), this._littleEndian = i2, this._offset = 0;
296
+ }
297
+ _nextUint8() {
298
+ const t2 = this._dataView.getUint8(this._offset);
299
+ return this._offset += 1, t2;
300
+ }
301
+ _nextUint16() {
302
+ const t2 = this._dataView.getUint16(this._offset, this._littleEndian);
303
+ return this._offset += 2, t2;
304
+ }
305
+ _nextUint32() {
306
+ const t2 = this._dataView.getUint32(this._offset, this._littleEndian);
307
+ return this._offset += 4, t2;
308
+ }
309
+ _nextUint64() {
310
+ const t2 = this._dataView.getUint32(this._offset, this._littleEndian) + 2 ** 32 * this._dataView.getUint32(this._offset + 4, this._littleEndian);
311
+ return this._offset += 8, t2;
312
+ }
313
+ _skip(t2) {
314
+ return this._offset += t2, this;
315
+ }
316
+ _scan(t2, e2 = 0) {
317
+ const n2 = this._offset;
318
+ let i2 = 0;
319
+ for (; this._dataView.getUint8(this._offset) !== e2 && i2 < t2; )
320
+ i2++, this._offset++;
321
+ return i2 < t2 && this._offset++, new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + n2, i2);
322
+ }
323
+ };
324
+ function _(t2) {
325
+ return typeof TextDecoder != "undefined" ? new TextDecoder().decode(t2) : Buffer.from(t2).toString("utf8");
326
+ }
327
+ function p(t2) {
328
+ const n2 = new Uint8Array(t2.buffer, t2.byteOffset, e.length);
329
+ if (n2[0] !== e[0] || n2[1] !== e[1] || n2[2] !== e[2] || n2[3] !== e[3] || n2[4] !== e[4] || n2[5] !== e[5] || n2[6] !== e[6] || n2[7] !== e[7] || n2[8] !== e[8] || n2[9] !== e[9] || n2[10] !== e[10] || n2[11] !== e[11])
330
+ throw new Error("Missing KTX 2.0 identifier.");
331
+ const i2 = new U(), s2 = 17 * Uint32Array.BYTES_PER_ELEMENT, a2 = new c(t2, e.length, s2, true);
332
+ i2.vkFormat = a2._nextUint32(), i2.typeSize = a2._nextUint32(), i2.pixelWidth = a2._nextUint32(), i2.pixelHeight = a2._nextUint32(), i2.pixelDepth = a2._nextUint32(), i2.layerCount = a2._nextUint32(), i2.faceCount = a2._nextUint32();
333
+ const r2 = a2._nextUint32();
334
+ i2.supercompressionScheme = a2._nextUint32();
335
+ const o2 = a2._nextUint32(), l2 = a2._nextUint32(), f2 = a2._nextUint32(), h = a2._nextUint32(), g = a2._nextUint64(), p2 = a2._nextUint64(), x = new c(t2, e.length + s2, 3 * r2 * 8, true);
336
+ for (let e2 = 0; e2 < r2; e2++)
337
+ i2.levels.push({ levelData: new Uint8Array(t2.buffer, t2.byteOffset + x._nextUint64(), x._nextUint64()), uncompressedByteLength: x._nextUint64() });
338
+ const u = new c(t2, o2, l2, true), y = { vendorId: u._skip(4)._nextUint16(), descriptorType: u._nextUint16(), versionNumber: u._nextUint16(), descriptorBlockSize: u._nextUint16(), colorModel: u._nextUint8(), colorPrimaries: u._nextUint8(), transferFunction: u._nextUint8(), flags: u._nextUint8(), texelBlockDimension: { x: u._nextUint8() + 1, y: u._nextUint8() + 1, z: u._nextUint8() + 1, w: u._nextUint8() + 1 }, bytesPlane: [u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8()], samples: [] }, D = (y.descriptorBlockSize / 4 - 6) / 4;
339
+ for (let t3 = 0; t3 < D; t3++)
340
+ y.samples[t3] = { bitOffset: u._nextUint16(), bitLength: u._nextUint8(), channelID: u._nextUint8(), samplePosition: [u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8()], sampleLower: u._nextUint32(), sampleUpper: u._nextUint32() };
341
+ i2.dataFormatDescriptor.length = 0, i2.dataFormatDescriptor.push(y);
342
+ const b = new c(t2, f2, h, true);
343
+ for (; b._offset < h; ) {
344
+ const t3 = b._nextUint32(), e2 = b._scan(t3), n3 = _(e2), s3 = b._scan(t3 - e2.byteLength);
345
+ i2.keyValue[n3] = n3.match(/^ktx/i) ? _(s3) : s3, t3 % 4 && b._skip(4 - t3 % 4);
346
+ }
347
+ if (p2 <= 0)
348
+ return i2;
349
+ const d = new c(t2, g, p2, true), B = d._nextUint16(), w = d._nextUint16(), A = d._nextUint32(), S = d._nextUint32(), m = d._nextUint32(), L = d._nextUint32(), I = [];
350
+ for (let t3 = 0; t3 < r2; t3++)
351
+ I.push({ imageFlags: d._nextUint32(), rgbSliceByteOffset: d._nextUint32(), rgbSliceByteLength: d._nextUint32(), alphaSliceByteOffset: d._nextUint32(), alphaSliceByteLength: d._nextUint32() });
352
+ const R = g + d._offset, E = R + A, T = E + S, O = T + m, P = new Uint8Array(t2.buffer, t2.byteOffset + R, A), C = new Uint8Array(t2.buffer, t2.byteOffset + E, S), F = new Uint8Array(t2.buffer, t2.byteOffset + T, m), G = new Uint8Array(t2.buffer, t2.byteOffset + O, L);
353
+ return i2.globalData = { endpointCount: B, selectorCount: w, imageDescs: I, endpointsData: P, selectorsData: C, tablesData: F, extendedData: G }, i2;
354
+ }
355
+
356
+ // src/lib/utils/extract-mipmap-images.ts
357
+ function extractMipmapImages(data, options) {
358
+ const images = new Array(options.mipMapLevels);
359
+ let levelWidth = options.width;
360
+ let levelHeight = options.height;
361
+ let offset = 0;
362
+ for (let i2 = 0; i2 < options.mipMapLevels; ++i2) {
363
+ const levelSize = getLevelSize(options, levelWidth, levelHeight, data, i2);
364
+ const levelData = getLevelData(data, i2, offset, levelSize);
365
+ images[i2] = {
366
+ compressed: true,
367
+ format: options.internalFormat,
368
+ data: levelData,
369
+ width: levelWidth,
370
+ height: levelHeight,
371
+ levelSize
372
+ };
373
+ levelWidth = Math.max(1, levelWidth >> 1);
374
+ levelHeight = Math.max(1, levelHeight >> 1);
375
+ offset += levelSize;
376
+ }
377
+ return images;
378
+ }
379
+ function getLevelData(data, index, offset, levelSize) {
380
+ if (!Array.isArray(data)) {
381
+ return new Uint8Array(data.buffer, data.byteOffset + offset, levelSize);
382
+ }
383
+ return data[index].levelData;
384
+ }
385
+ function getLevelSize(options, levelWidth, levelHeight, data, index) {
386
+ if (!Array.isArray(data)) {
387
+ return options.sizeFunction(levelWidth, levelHeight);
388
+ }
389
+ return options.sizeFunction(data[index]);
390
+ }
391
+
392
+ // src/lib/gl-extensions.ts
393
+ var GL_EXTENSIONS_CONSTANTS = {
394
+ COMPRESSED_RGB_S3TC_DXT1_EXT: 33776,
395
+ COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777,
396
+ COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778,
397
+ COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779,
398
+ COMPRESSED_R11_EAC: 37488,
399
+ COMPRESSED_SIGNED_R11_EAC: 37489,
400
+ COMPRESSED_RG11_EAC: 37490,
401
+ COMPRESSED_SIGNED_RG11_EAC: 37491,
402
+ COMPRESSED_RGB8_ETC2: 37492,
403
+ COMPRESSED_RGBA8_ETC2_EAC: 37493,
404
+ COMPRESSED_SRGB8_ETC2: 37494,
405
+ COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37495,
406
+ COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37496,
407
+ COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37497,
408
+ COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840,
409
+ COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842,
410
+ COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841,
411
+ COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843,
412
+ COMPRESSED_RGB_ETC1_WEBGL: 36196,
413
+ COMPRESSED_RGB_ATC_WEBGL: 35986,
414
+ COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 35987,
415
+ COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 34798,
416
+ COMPRESSED_RGBA_ASTC_4X4_KHR: 37808,
417
+ COMPRESSED_RGBA_ASTC_5X4_KHR: 37809,
418
+ COMPRESSED_RGBA_ASTC_5X5_KHR: 37810,
419
+ COMPRESSED_RGBA_ASTC_6X5_KHR: 37811,
420
+ COMPRESSED_RGBA_ASTC_6X6_KHR: 37812,
421
+ COMPRESSED_RGBA_ASTC_8X5_KHR: 37813,
422
+ COMPRESSED_RGBA_ASTC_8X6_KHR: 37814,
423
+ COMPRESSED_RGBA_ASTC_8X8_KHR: 37815,
424
+ COMPRESSED_RGBA_ASTC_10X5_KHR: 37816,
425
+ COMPRESSED_RGBA_ASTC_10X6_KHR: 37817,
426
+ COMPRESSED_RGBA_ASTC_10X8_KHR: 37818,
427
+ COMPRESSED_RGBA_ASTC_10X10_KHR: 37819,
428
+ COMPRESSED_RGBA_ASTC_12X10_KHR: 37820,
429
+ COMPRESSED_RGBA_ASTC_12X12_KHR: 37821,
430
+ COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: 37840,
431
+ COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: 37841,
432
+ COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: 37842,
433
+ COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: 37843,
434
+ COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: 37844,
435
+ COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: 37845,
436
+ COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: 37846,
437
+ COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: 37847,
438
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: 37848,
439
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: 37849,
440
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: 37850,
441
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 37851,
442
+ COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 37852,
443
+ COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 37853,
444
+ COMPRESSED_RED_RGTC1_EXT: 36283,
445
+ COMPRESSED_SIGNED_RED_RGTC1_EXT: 36284,
446
+ COMPRESSED_RED_GREEN_RGTC2_EXT: 36285,
447
+ COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 36286,
448
+ COMPRESSED_SRGB_S3TC_DXT1_EXT: 35916,
449
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 35917,
450
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 35918,
451
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 35919
452
+ };
453
+
454
+ // src/lib/utils/ktx-format-helper.ts
455
+ var VULKAN_TO_WEBGL_FORMAT_MAP = {
456
+ 131: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
457
+ 132: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_S3TC_DXT1_EXT,
458
+ 133: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT1_EXT,
459
+ 134: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
460
+ 135: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
461
+ 136: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
462
+ 137: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
463
+ 138: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
464
+ 139: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_RGTC1_EXT,
465
+ 140: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_RGTC1_EXT,
466
+ 141: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_GREEN_RGTC2_EXT,
467
+ 142: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,
468
+ 147: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2,
469
+ 148: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ETC2,
470
+ 149: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
471
+ 150: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
472
+ 151: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC,
473
+ 152: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
474
+ 153: GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC,
475
+ 154: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_R11_EAC,
476
+ 155: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC,
477
+ 156: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RG11_EAC,
478
+ 157: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
479
+ 158: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
480
+ 159: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
481
+ 160: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,
482
+ 161: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
483
+ 162: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
484
+ 163: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
485
+ 164: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
486
+ 165: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
487
+ 166: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
488
+ 167: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
489
+ 168: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
490
+ 169: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
491
+ 170: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
492
+ 171: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
493
+ 172: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
494
+ 173: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
495
+ 174: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
496
+ 175: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
497
+ 176: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
498
+ 177: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
499
+ 178: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
500
+ 179: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
501
+ 180: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
502
+ 181: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
503
+ 182: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
504
+ 183: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR,
505
+ 184: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
506
+ 1000054e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
507
+ 1000054001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
508
+ 1000066e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
509
+ 1000066001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
510
+ 1000066002: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
511
+ 1000066003: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
512
+ 1000066004: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
513
+ 1000066005: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
514
+ 1000066006: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
515
+ 1000066007: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
516
+ 1000066008: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
517
+ 1000066009: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
518
+ 1000066010: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
519
+ 1000066011: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
520
+ 1000066012: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
521
+ 1000066013: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR
522
+ };
523
+ function mapVkFormatToWebGL(vkFormat) {
524
+ return VULKAN_TO_WEBGL_FORMAT_MAP[vkFormat];
525
+ }
526
+
527
+ // src/lib/parsers/parse-ktx.ts
528
+ var KTX2_ID = [
529
+ 171,
530
+ 75,
531
+ 84,
532
+ 88,
533
+ 32,
534
+ 50,
535
+ 48,
536
+ 187,
537
+ 13,
538
+ 10,
539
+ 26,
540
+ 10
541
+ ];
542
+ function isKTX(data) {
543
+ const id = new Uint8Array(data);
544
+ const notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || id[1] !== KTX2_ID[1] || id[2] !== KTX2_ID[2] || id[3] !== KTX2_ID[3] || id[4] !== KTX2_ID[4] || id[5] !== KTX2_ID[5] || id[6] !== KTX2_ID[6] || id[7] !== KTX2_ID[7] || id[8] !== KTX2_ID[8] || id[9] !== KTX2_ID[9] || id[10] !== KTX2_ID[10] || id[11] !== KTX2_ID[11];
545
+ return !notKTX;
546
+ }
547
+ function parseKTX(arrayBuffer) {
548
+ const uint8Array = new Uint8Array(arrayBuffer);
549
+ const ktx = p(uint8Array);
550
+ const mipMapLevels = Math.max(1, ktx.levels.length);
551
+ const width = ktx.pixelWidth;
552
+ const height = ktx.pixelHeight;
553
+ const internalFormat = mapVkFormatToWebGL(ktx.vkFormat);
554
+ return extractMipmapImages(ktx.levels, {
555
+ mipMapLevels,
556
+ width,
557
+ height,
558
+ sizeFunction: (level) => level.uncompressedByteLength,
559
+ internalFormat
560
+ });
561
+ }
562
+
563
+ // src/lib/parsers/parse-dds.ts
564
+ var DDS_CONSTANTS = {
565
+ MAGIC_NUMBER: 542327876,
566
+ HEADER_LENGTH: 31,
567
+ MAGIC_NUMBER_INDEX: 0,
568
+ HEADER_SIZE_INDEX: 1,
569
+ HEADER_FLAGS_INDEX: 2,
570
+ HEADER_HEIGHT_INDEX: 3,
571
+ HEADER_WIDTH_INDEX: 4,
572
+ MIPMAPCOUNT_INDEX: 7,
573
+ HEADER_PF_FLAGS_INDEX: 20,
574
+ HEADER_PF_FOURCC_INDEX: 21,
575
+ DDSD_MIPMAPCOUNT: 131072,
576
+ DDPF_FOURCC: 4
577
+ };
578
+ var DDS_PIXEL_FORMATS = {
579
+ DXT1: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
580
+ DXT3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
581
+ DXT5: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
582
+ "ATC ": GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,
583
+ ATCA: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
584
+ ATCI: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
585
+ };
586
+ var getATCLevelSize = getDxt1LevelSize;
587
+ var getATCALevelSize = getDxtXLevelSize;
588
+ var getATCILevelSize = getDxtXLevelSize;
589
+ var DDS_SIZE_FUNCTIONS = {
590
+ DXT1: getDxt1LevelSize,
591
+ DXT3: getDxtXLevelSize,
592
+ DXT5: getDxtXLevelSize,
593
+ "ATC ": getATCLevelSize,
594
+ ATCA: getATCALevelSize,
595
+ ATCI: getATCILevelSize
596
+ };
597
+ function isDDS(data) {
598
+ const header = new Uint32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
599
+ const magic = header[DDS_CONSTANTS.MAGIC_NUMBER_INDEX];
600
+ return magic === DDS_CONSTANTS.MAGIC_NUMBER;
601
+ }
602
+ function parseDDS(data) {
603
+ const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
604
+ const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];
605
+ assert(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), "DDS: Unsupported format, must contain a FourCC code");
606
+ const fourCC = int32ToFourCC(pixelFormatNumber);
607
+ const internalFormat = DDS_PIXEL_FORMATS[fourCC];
608
+ const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
609
+ assert(internalFormat && sizeFunction, `DDS: Unknown pixel format ${pixelFormatNumber}`);
610
+ let mipMapLevels = 1;
611
+ if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {
612
+ mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);
613
+ }
614
+ const width = header[DDS_CONSTANTS.HEADER_WIDTH_INDEX];
615
+ const height = header[DDS_CONSTANTS.HEADER_HEIGHT_INDEX];
616
+ const dataOffset = header[DDS_CONSTANTS.HEADER_SIZE_INDEX] + 4;
617
+ const image = new Uint8Array(data, dataOffset);
618
+ return extractMipmapImages(image, {
619
+ mipMapLevels,
620
+ width,
621
+ height,
622
+ sizeFunction,
623
+ internalFormat
624
+ });
625
+ }
626
+ function getDxt1LevelSize(width, height) {
627
+ return (width + 3 >> 2) * (height + 3 >> 2) * 8;
628
+ }
629
+ function getDxtXLevelSize(width, height) {
630
+ return (width + 3 >> 2) * (height + 3 >> 2) * 16;
631
+ }
632
+ function int32ToFourCC(value) {
633
+ return String.fromCharCode(value & 255, value >> 8 & 255, value >> 16 & 255, value >> 24 & 255);
634
+ }
635
+
636
+ // src/lib/parsers/parse-pvr.ts
637
+ var PVR_CONSTANTS = {
638
+ MAGIC_NUMBER: 55727696,
639
+ MAGIC_NUMBER_EXTRA: 1347834371,
640
+ HEADER_LENGTH: 13,
641
+ HEADER_SIZE: 52,
642
+ MAGIC_NUMBER_INDEX: 0,
643
+ PIXEL_FORMAT_INDEX: 2,
644
+ COLOUR_SPACE_INDEX: 4,
645
+ HEIGHT_INDEX: 6,
646
+ WIDTH_INDEX: 7,
647
+ MIPMAPCOUNT_INDEX: 11,
648
+ METADATA_SIZE_INDEX: 12
649
+ };
650
+ var PVR_PIXEL_FORMATS = {
651
+ 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
652
+ 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
653
+ 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
654
+ 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
655
+ 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],
656
+ 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],
657
+ 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],
658
+ 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],
659
+ 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],
660
+ 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],
661
+ 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
662
+ 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
663
+ 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
664
+ 27: [
665
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,
666
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR
667
+ ],
668
+ 28: [
669
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,
670
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR
671
+ ],
672
+ 29: [
673
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,
674
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR
675
+ ],
676
+ 30: [
677
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,
678
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR
679
+ ],
680
+ 31: [
681
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,
682
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR
683
+ ],
684
+ 32: [
685
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,
686
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR
687
+ ],
688
+ 33: [
689
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,
690
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR
691
+ ],
692
+ 34: [
693
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,
694
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR
695
+ ],
696
+ 35: [
697
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,
698
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR
699
+ ],
700
+ 36: [
701
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,
702
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR
703
+ ],
704
+ 37: [
705
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,
706
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR
707
+ ],
708
+ 38: [
709
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,
710
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR
711
+ ],
712
+ 39: [
713
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,
714
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR
715
+ ],
716
+ 40: [
717
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,
718
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR
719
+ ]
720
+ };
721
+ var PVR_SIZE_FUNCTIONS = {
722
+ 0: pvrtc2bppSize,
723
+ 1: pvrtc2bppSize,
724
+ 2: pvrtc4bppSize,
725
+ 3: pvrtc4bppSize,
726
+ 6: dxtEtcSmallSize,
727
+ 7: dxtEtcSmallSize,
728
+ 9: dxtEtcAstcBigSize,
729
+ 11: dxtEtcAstcBigSize,
730
+ 22: dxtEtcSmallSize,
731
+ 23: dxtEtcAstcBigSize,
732
+ 24: dxtEtcSmallSize,
733
+ 25: dxtEtcSmallSize,
734
+ 26: dxtEtcAstcBigSize,
735
+ 27: dxtEtcAstcBigSize,
736
+ 28: atc5x4Size,
737
+ 29: atc5x5Size,
738
+ 30: atc6x5Size,
739
+ 31: atc6x6Size,
740
+ 32: atc8x5Size,
741
+ 33: atc8x6Size,
742
+ 34: atc8x8Size,
743
+ 35: atc10x5Size,
744
+ 36: atc10x6Size,
745
+ 37: atc10x8Size,
746
+ 38: atc10x10Size,
747
+ 39: atc12x10Size,
748
+ 40: atc12x12Size
749
+ };
750
+ function isPVR(data) {
751
+ const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
752
+ const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];
753
+ return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;
754
+ }
755
+ function parsePVR(data) {
756
+ const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
757
+ const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];
758
+ const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];
759
+ const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];
760
+ const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];
761
+ const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];
762
+ const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];
763
+ const width = header[PVR_CONSTANTS.WIDTH_INDEX];
764
+ const height = header[PVR_CONSTANTS.HEIGHT_INDEX];
765
+ const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];
766
+ const image = new Uint8Array(data, dataOffset);
767
+ return extractMipmapImages(image, {
768
+ mipMapLevels,
769
+ width,
770
+ height,
771
+ sizeFunction,
772
+ internalFormat
773
+ });
774
+ }
775
+ function pvrtc2bppSize(width, height) {
776
+ width = Math.max(width, 16);
777
+ height = Math.max(height, 8);
778
+ return width * height / 4;
779
+ }
780
+ function pvrtc4bppSize(width, height) {
781
+ width = Math.max(width, 8);
782
+ height = Math.max(height, 8);
783
+ return width * height / 2;
784
+ }
785
+ function dxtEtcSmallSize(width, height) {
786
+ return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;
787
+ }
788
+ function dxtEtcAstcBigSize(width, height) {
789
+ return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;
790
+ }
791
+ function atc5x4Size(width, height) {
792
+ return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;
793
+ }
794
+ function atc5x5Size(width, height) {
795
+ return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;
796
+ }
797
+ function atc6x5Size(width, height) {
798
+ return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;
799
+ }
800
+ function atc6x6Size(width, height) {
801
+ return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;
802
+ }
803
+ function atc8x5Size(width, height) {
804
+ return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;
805
+ }
806
+ function atc8x6Size(width, height) {
807
+ return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;
808
+ }
809
+ function atc8x8Size(width, height) {
810
+ return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;
811
+ }
812
+ function atc10x5Size(width, height) {
813
+ return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;
814
+ }
815
+ function atc10x6Size(width, height) {
816
+ return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;
817
+ }
818
+ function atc10x8Size(width, height) {
819
+ return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;
820
+ }
821
+ function atc10x10Size(width, height) {
822
+ return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;
823
+ }
824
+ function atc12x10Size(width, height) {
825
+ return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;
826
+ }
827
+ function atc12x12Size(width, height) {
828
+ return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;
829
+ }
830
+
831
+ // src/lib/parsers/parse-compressed-texture.ts
832
+ function parseCompressedTexture(data) {
833
+ if (isKTX(data)) {
834
+ return parseKTX(data);
835
+ }
836
+ if (isDDS(data)) {
837
+ return parseDDS(data);
838
+ }
839
+ if (isPVR(data)) {
840
+ return parsePVR(data);
841
+ }
842
+ throw new Error("Texture container format not recognized");
843
+ }
844
+
845
+ // src/lib/parsers/basis-module-loader.ts
846
+ var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
847
+ var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
848
+ var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
849
+ var loadBasisTranscoderPromise;
850
+ async function loadBasisTrascoderModule(options) {
851
+ const modules = options.modules || {};
852
+ if (modules.basis) {
853
+ return modules.basis;
854
+ }
855
+ loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);
856
+ return await loadBasisTranscoderPromise;
857
+ }
858
+ async function loadBasisTrascoder(options) {
859
+ let BASIS = null;
860
+ let wasmBinary = null;
861
+ [BASIS, wasmBinary] = await Promise.all([
862
+ await loadLibrary("basis_transcoder.js", "textures", options),
863
+ await loadLibrary("basis_transcoder.wasm", "textures", options)
864
+ ]);
865
+ BASIS = BASIS || globalThis.BASIS;
866
+ return await initializeBasisTrascoderModule(BASIS, wasmBinary);
867
+ }
868
+ function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
869
+ const options = {};
870
+ if (wasmBinary) {
871
+ options.wasmBinary = wasmBinary;
872
+ }
873
+ return new Promise((resolve) => {
874
+ BasisModule(options).then((module) => {
875
+ const { BasisFile, initializeBasis } = module;
876
+ initializeBasis();
877
+ resolve({ BasisFile });
878
+ });
879
+ });
880
+ }
881
+ var loadBasisEncoderPromise;
882
+ async function loadBasisEncoderModule(options) {
883
+ const modules = options.modules || {};
884
+ if (modules.basisEncoder) {
885
+ return modules.basisEncoder;
886
+ }
887
+ loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);
888
+ return await loadBasisEncoderPromise;
889
+ }
890
+ async function loadBasisEncoder(options) {
891
+ let BASIS_ENCODER = null;
892
+ let wasmBinary = null;
893
+ [BASIS_ENCODER, wasmBinary] = await Promise.all([
894
+ await loadLibrary(BASIS_CDN_ENCODER_JS, "textures", options),
895
+ await loadLibrary(BASIS_CDN_ENCODER_WASM, "textures", options)
896
+ ]);
897
+ BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
898
+ return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
899
+ }
900
+ function initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {
901
+ const options = {};
902
+ if (wasmBinary) {
903
+ options.wasmBinary = wasmBinary;
904
+ }
905
+ return new Promise((resolve) => {
906
+ BasisEncoderModule(options).then((module) => {
907
+ const { BasisFile, KTX2File, initializeBasis, BasisEncoder } = module;
908
+ initializeBasis();
909
+ resolve({ BasisFile, KTX2File, BasisEncoder });
910
+ });
911
+ });
912
+ }
913
+
914
+ // src/lib/utils/texture-formats.ts
915
+ var BROWSER_PREFIXES = ["", "WEBKIT_", "MOZ_"];
916
+ var WEBGL_EXTENSIONS = {
917
+ WEBGL_compressed_texture_s3tc: "dxt",
918
+ WEBGL_compressed_texture_s3tc_srgb: "dxt-srgb",
919
+ WEBGL_compressed_texture_etc1: "etc1",
920
+ WEBGL_compressed_texture_etc: "etc2",
921
+ WEBGL_compressed_texture_pvrtc: "pvrtc",
922
+ WEBGL_compressed_texture_atc: "atc",
923
+ WEBGL_compressed_texture_astc: "astc",
924
+ EXT_texture_compression_rgtc: "rgtc"
925
+ };
926
+ var formats = null;
927
+ function getSupportedGPUTextureFormats(gl) {
928
+ if (!formats) {
929
+ gl = gl || getWebGLContext() || void 0;
930
+ formats = new Set();
931
+ for (const prefix of BROWSER_PREFIXES) {
932
+ for (const extension in WEBGL_EXTENSIONS) {
933
+ if (gl && gl.getExtension(`${prefix}${extension}`)) {
934
+ const gpuTextureFormat = WEBGL_EXTENSIONS[extension];
935
+ formats.add(gpuTextureFormat);
936
+ }
937
+ }
938
+ }
939
+ }
940
+ return formats;
941
+ }
942
+ function getWebGLContext() {
943
+ try {
944
+ const canvas = document.createElement("canvas");
945
+ return canvas.getContext("webgl");
946
+ } catch (error) {
947
+ return null;
948
+ }
949
+ }
950
+
951
+ // src/lib/parsers/parse-basis.js
952
+ var OutputFormat = {
953
+ etc1: {
954
+ basisFormat: 0,
955
+ compressed: true,
956
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
957
+ },
958
+ etc2: { basisFormat: 1, compressed: true },
959
+ bc1: {
960
+ basisFormat: 2,
961
+ compressed: true,
962
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT
963
+ },
964
+ bc3: {
965
+ basisFormat: 3,
966
+ compressed: true,
967
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
968
+ },
969
+ bc4: { basisFormat: 4, compressed: true },
970
+ bc5: { basisFormat: 5, compressed: true },
971
+ "bc7-m6-opaque-only": { basisFormat: 6, compressed: true },
972
+ "bc7-m5": { basisFormat: 7, compressed: true },
973
+ "pvrtc1-4-rgb": {
974
+ basisFormat: 8,
975
+ compressed: true,
976
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
977
+ },
978
+ "pvrtc1-4-rgba": {
979
+ basisFormat: 9,
980
+ compressed: true,
981
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
982
+ },
983
+ "astc-4x4": {
984
+ basisFormat: 10,
985
+ compressed: true,
986
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
987
+ },
988
+ "atc-rgb": { basisFormat: 11, compressed: true },
989
+ "atc-rgba-interpolated-alpha": { basisFormat: 12, compressed: true },
990
+ rgba32: { basisFormat: 13, compressed: false },
991
+ rgb565: { basisFormat: 14, compressed: false },
992
+ bgr565: { basisFormat: 15, compressed: false },
993
+ rgba4444: { basisFormat: 16, compressed: false }
994
+ };
995
+ async function parseBasis(data, options) {
996
+ if (options.basis.containerFormat === "auto") {
997
+ if (isKTX(data)) {
998
+ const fileConstructors = await loadBasisEncoderModule(options);
999
+ return parseKTX2File(fileConstructors.KTX2File, data, options);
1000
+ }
1001
+ const { BasisFile } = await loadBasisTrascoderModule(options);
1002
+ return parseBasisFile(BasisFile, data, options);
1003
+ }
1004
+ switch (options.basis.module) {
1005
+ case "encoder":
1006
+ const fileConstructors = await loadBasisEncoderModule(options);
1007
+ switch (options.basis.containerFormat) {
1008
+ case "ktx2":
1009
+ return parseKTX2File(fileConstructors.KTX2File, data, options);
1010
+ case "basis":
1011
+ default:
1012
+ return parseBasisFile(fileConstructors.BasisFile, data, options);
1013
+ }
1014
+ case "transcoder":
1015
+ default:
1016
+ const { BasisFile } = await loadBasisTrascoderModule(options);
1017
+ return parseBasisFile(BasisFile, data, options);
1018
+ }
1019
+ }
1020
+ function parseBasisFile(BasisFile, data, options) {
1021
+ const basisFile = new BasisFile(new Uint8Array(data));
1022
+ try {
1023
+ if (!basisFile.startTranscoding()) {
1024
+ return null;
1025
+ }
1026
+ const imageCount = basisFile.getNumImages();
1027
+ const images = [];
1028
+ for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {
1029
+ const levelsCount = basisFile.getNumLevels(imageIndex);
1030
+ const levels = [];
1031
+ for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
1032
+ levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));
1033
+ }
1034
+ images.push(levels);
1035
+ }
1036
+ return images;
1037
+ } finally {
1038
+ basisFile.close();
1039
+ basisFile.delete();
1040
+ }
1041
+ }
1042
+ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
1043
+ const width = basisFile.getImageWidth(imageIndex, levelIndex);
1044
+ const height = basisFile.getImageHeight(imageIndex, levelIndex);
1045
+ const hasAlpha = basisFile.getHasAlpha();
1046
+ const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);
1047
+ const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
1048
+ const decodedData = new Uint8Array(decodedSize);
1049
+ if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
1050
+ return null;
1051
+ }
1052
+ return {
1053
+ width,
1054
+ height,
1055
+ data: decodedData,
1056
+ compressed,
1057
+ hasAlpha,
1058
+ format
1059
+ };
1060
+ }
1061
+ function parseKTX2File(KTX2File, data, options) {
1062
+ const ktx2File = new KTX2File(new Uint8Array(data));
1063
+ try {
1064
+ if (!ktx2File.startTranscoding()) {
1065
+ return null;
1066
+ }
1067
+ const levelsCount = ktx2File.getLevels();
1068
+ const levels = [];
1069
+ for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
1070
+ levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
1071
+ break;
1072
+ }
1073
+ return levels;
1074
+ } finally {
1075
+ ktx2File.close();
1076
+ ktx2File.delete();
1077
+ }
1078
+ }
1079
+ function transcodeKTX2Image(ktx2File, levelIndex, options) {
1080
+ const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
1081
+ const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);
1082
+ const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
1083
+ const decodedData = new Uint8Array(decodedSize);
1084
+ if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
1085
+ return null;
1086
+ }
1087
+ return {
1088
+ width,
1089
+ height,
1090
+ data: decodedData,
1091
+ compressed,
1092
+ alphaFlag,
1093
+ format
1094
+ };
1095
+ }
1096
+ function getBasisOptions(options, hasAlpha) {
1097
+ let format = options && options.basis && options.basis.format;
1098
+ if (format === "auto") {
1099
+ format = selectSupportedBasisFormat();
1100
+ }
1101
+ if (typeof format === "object") {
1102
+ format = hasAlpha ? format.alpha : format.noAlpha;
1103
+ }
1104
+ format = format.toLowerCase();
1105
+ return OutputFormat[format];
1106
+ }
1107
+ function selectSupportedBasisFormat() {
1108
+ const supportedFormats = getSupportedGPUTextureFormats();
1109
+ if (supportedFormats.has("astc")) {
1110
+ return "astc-4x4";
1111
+ } else if (supportedFormats.has("dxt")) {
1112
+ return {
1113
+ alpha: "bc3",
1114
+ noAlpha: "bc1"
1115
+ };
1116
+ } else if (supportedFormats.has("pvrtc")) {
1117
+ return {
1118
+ alpha: "pvrtc1-4-rgba",
1119
+ noAlpha: "pvrtc1-4-rgb"
1120
+ };
1121
+ } else if (supportedFormats.has("etc1")) {
1122
+ return "etc1";
1123
+ } else if (supportedFormats.has("etc2")) {
1124
+ return "etc2";
1125
+ }
1126
+ return "rgb565";
1127
+ }
1128
+
1129
+ // src/compressed-texture-loader.ts
1130
+ var DEFAULT_TEXTURE_LOADER_OPTIONS = {
1131
+ "compressed-texture": {
1132
+ libraryPath: "libs/",
1133
+ useBasis: false
1134
+ }
1135
+ };
1136
+ var CompressedTextureWorkerLoader = {
1137
+ name: "Texture Containers",
1138
+ id: "compressed-texture",
1139
+ module: "textures",
1140
+ version: VERSION3,
1141
+ worker: true,
1142
+ extensions: [
1143
+ "ktx",
1144
+ "ktx2",
1145
+ "dds",
1146
+ "pvr"
1147
+ ],
1148
+ mimeTypes: [
1149
+ "image/ktx2",
1150
+ "image/ktx",
1151
+ "image/vnd-ms.dds",
1152
+ "image/x-dds",
1153
+ "application/octet-stream"
1154
+ ],
1155
+ binary: true,
1156
+ options: DEFAULT_TEXTURE_LOADER_OPTIONS
1157
+ };
1158
+ var CompressedTextureLoader = {
1159
+ ...CompressedTextureWorkerLoader,
1160
+ parse: async (arrayBuffer, options) => {
1161
+ if (options["compressed-texture"].useBasis) {
1162
+ options.basis = {
1163
+ format: {
1164
+ alpha: "BC3",
1165
+ noAlpha: "BC1"
1166
+ },
1167
+ ...options.basis,
1168
+ containerFormat: "ktx2",
1169
+ module: "encoder"
1170
+ };
1171
+ return await parseBasis(arrayBuffer, options);
1172
+ }
1173
+ return parseCompressedTexture(arrayBuffer);
1174
+ }
1175
+ };
1176
+
1177
+ // src/workers/compressed-texture-worker.ts
1178
+ createLoaderWorker(CompressedTextureLoader);
1179
+ })();