@loaders.gl/textures 4.4.0-alpha.9 → 4.4.0

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 (164) hide show
  1. package/README.md +197 -1
  2. package/dist/basis-loader.d.ts +15 -10
  3. package/dist/basis-loader.d.ts.map +1 -1
  4. package/dist/basis-loader.js +0 -1
  5. package/dist/basis-loader.js.map +1 -1
  6. package/dist/basis-worker-node.js +797 -9971
  7. package/dist/basis-worker.js +300 -145
  8. package/dist/compressed-texture-loader.d.ts +0 -4
  9. package/dist/compressed-texture-loader.d.ts.map +1 -1
  10. package/dist/compressed-texture-loader.js +0 -1
  11. package/dist/compressed-texture-loader.js.map +1 -1
  12. package/dist/compressed-texture-worker.js +1110 -358
  13. package/dist/crunch-loader.d.ts +1 -5
  14. package/dist/crunch-loader.d.ts.map +1 -1
  15. package/dist/crunch-loader.js +1 -3
  16. package/dist/crunch-loader.js.map +1 -1
  17. package/dist/crunch-worker.js +168 -87
  18. package/dist/dist.dev.js +2647 -670
  19. package/dist/dist.min.js +1 -2
  20. package/dist/index.cjs +1642 -428
  21. package/dist/index.cjs.map +4 -4
  22. package/dist/index.d.ts +13 -4
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +6 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/ktx2-basis-writer-worker-node.js +444 -9763
  27. package/dist/ktx2-basis-writer-worker.js +13 -3
  28. package/dist/lib/composite-image/image-texture-cube.d.ts +47 -0
  29. package/dist/lib/composite-image/image-texture-cube.d.ts.map +1 -0
  30. package/dist/lib/composite-image/image-texture-cube.js +42 -0
  31. package/dist/lib/composite-image/image-texture-cube.js.map +1 -0
  32. package/dist/lib/composite-image/parse-composite-image.d.ts +43 -0
  33. package/dist/lib/composite-image/parse-composite-image.d.ts.map +1 -0
  34. package/dist/lib/composite-image/parse-composite-image.js +437 -0
  35. package/dist/lib/composite-image/parse-composite-image.js.map +1 -0
  36. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -1
  37. package/dist/lib/encoders/encode-ktx2-basis-texture.js +2 -1
  38. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  39. package/dist/lib/gl-extensions.d.ts +166 -58
  40. package/dist/lib/gl-extensions.d.ts.map +1 -1
  41. package/dist/lib/gl-extensions.js +177 -66
  42. package/dist/lib/gl-extensions.js.map +1 -1
  43. package/dist/lib/gl-types.d.ts +4 -0
  44. package/dist/lib/gl-types.d.ts.map +1 -0
  45. package/dist/lib/gl-types.js +5 -0
  46. package/dist/lib/gl-types.js.map +1 -0
  47. package/dist/lib/parsers/crunch-module-loader.d.ts +2 -2
  48. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -1
  49. package/dist/lib/parsers/crunch-module-loader.js.map +1 -1
  50. package/dist/lib/parsers/parse-basis.d.ts +24 -2
  51. package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
  52. package/dist/lib/parsers/parse-basis.js +262 -64
  53. package/dist/lib/parsers/parse-basis.js.map +1 -1
  54. package/dist/lib/parsers/parse-crunch.d.ts.map +1 -1
  55. package/dist/lib/parsers/parse-crunch.js +6 -6
  56. package/dist/lib/parsers/parse-crunch.js.map +1 -1
  57. package/dist/lib/parsers/parse-dds.d.ts.map +1 -1
  58. package/dist/lib/parsers/parse-dds.js +10 -11
  59. package/dist/lib/parsers/parse-dds.js.map +1 -1
  60. package/dist/lib/parsers/parse-hdr.d.ts +21 -0
  61. package/dist/lib/parsers/parse-hdr.d.ts.map +1 -0
  62. package/dist/lib/parsers/parse-hdr.js +305 -0
  63. package/dist/lib/parsers/parse-hdr.js.map +1 -0
  64. package/dist/lib/parsers/parse-ktx.d.ts.map +1 -1
  65. package/dist/lib/parsers/parse-ktx.js +10 -3
  66. package/dist/lib/parsers/parse-ktx.js.map +1 -1
  67. package/dist/lib/parsers/parse-pvr.d.ts.map +1 -1
  68. package/dist/lib/parsers/parse-pvr.js +31 -74
  69. package/dist/lib/parsers/parse-pvr.js.map +1 -1
  70. package/dist/lib/texture-api/generate-url.d.ts.map +1 -1
  71. package/dist/lib/texture-api/generate-url.js +2 -10
  72. package/dist/lib/texture-api/generate-url.js.map +1 -1
  73. package/dist/lib/texture-api/load-image-array.d.ts +6 -3
  74. package/dist/lib/texture-api/load-image-array.d.ts.map +1 -1
  75. package/dist/lib/texture-api/load-image-array.js +5 -3
  76. package/dist/lib/texture-api/load-image-array.js.map +1 -1
  77. package/dist/lib/texture-api/load-image-cube.d.ts +7 -11
  78. package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -1
  79. package/dist/lib/texture-api/load-image-cube.js +8 -20
  80. package/dist/lib/texture-api/load-image-cube.js.map +1 -1
  81. package/dist/lib/texture-api/load-image.d.ts +6 -3
  82. package/dist/lib/texture-api/load-image.d.ts.map +1 -1
  83. package/dist/lib/texture-api/load-image.js +8 -4
  84. package/dist/lib/texture-api/load-image.js.map +1 -1
  85. package/dist/lib/texture-api/texture-api-types.d.ts +13 -0
  86. package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -1
  87. package/dist/lib/utils/detect-supported-texture-formats.d.ts +14 -0
  88. package/dist/lib/utils/detect-supported-texture-formats.d.ts.map +1 -0
  89. package/dist/lib/utils/detect-supported-texture-formats.js +197 -0
  90. package/dist/lib/utils/detect-supported-texture-formats.js.map +1 -0
  91. package/dist/lib/utils/extract-mipmap-images.d.ts +6 -2
  92. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
  93. package/dist/lib/utils/extract-mipmap-images.js +13 -2
  94. package/dist/lib/utils/extract-mipmap-images.js.map +1 -1
  95. package/dist/lib/utils/ktx-format-helper.d.ts +9 -1
  96. package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -1
  97. package/dist/lib/utils/ktx-format-helper.js +76 -109
  98. package/dist/lib/utils/ktx-format-helper.js.map +1 -1
  99. package/dist/lib/utils/texture-format-map.d.ts +10 -0
  100. package/dist/lib/utils/texture-format-map.d.ts.map +1 -0
  101. package/dist/lib/utils/texture-format-map.js +87 -0
  102. package/dist/lib/utils/texture-format-map.js.map +1 -0
  103. package/dist/lib/utils/version.js +1 -1
  104. package/dist/lib/utils/version.js.map +1 -1
  105. package/dist/npy-loader.d.ts +2 -2
  106. package/dist/npy-worker.js +1 -1
  107. package/dist/radiance-hdr-loader.d.ts +25 -0
  108. package/dist/radiance-hdr-loader.d.ts.map +1 -0
  109. package/dist/radiance-hdr-loader.js +23 -0
  110. package/dist/radiance-hdr-loader.js.map +1 -0
  111. package/dist/texture-array-loader.d.ts +25 -0
  112. package/dist/texture-array-loader.d.ts.map +1 -0
  113. package/dist/texture-array-loader.js +24 -0
  114. package/dist/texture-array-loader.js.map +1 -0
  115. package/dist/texture-cube-array-loader.d.ts +25 -0
  116. package/dist/texture-cube-array-loader.d.ts.map +1 -0
  117. package/dist/texture-cube-array-loader.js +24 -0
  118. package/dist/texture-cube-array-loader.js.map +1 -0
  119. package/dist/texture-cube-loader.d.ts +25 -0
  120. package/dist/texture-cube-loader.d.ts.map +1 -0
  121. package/dist/texture-cube-loader.js +24 -0
  122. package/dist/texture-cube-loader.js.map +1 -0
  123. package/dist/texture-loader.d.ts +25 -0
  124. package/dist/texture-loader.d.ts.map +1 -0
  125. package/dist/texture-loader.js +24 -0
  126. package/dist/texture-loader.js.map +1 -0
  127. package/dist/workers/crunch-worker.d.ts +1 -3
  128. package/dist/workers/crunch-worker.d.ts.map +1 -1
  129. package/package.json +6 -6
  130. package/src/basis-loader.ts +19 -9
  131. package/src/compressed-texture-loader.ts +0 -3
  132. package/src/crunch-loader.ts +1 -5
  133. package/src/index.ts +21 -4
  134. package/src/lib/composite-image/image-texture-cube.ts +49 -0
  135. package/src/lib/composite-image/parse-composite-image.ts +699 -0
  136. package/src/lib/encoders/encode-ktx2-basis-texture.ts +2 -1
  137. package/src/lib/gl-extensions.ts +188 -81
  138. package/src/lib/gl-types.ts +136 -0
  139. package/src/lib/parsers/crunch-module-loader.ts +4 -4
  140. package/src/lib/parsers/parse-basis.ts +326 -62
  141. package/src/lib/parsers/parse-crunch.ts +11 -8
  142. package/src/lib/parsers/parse-dds.ts +11 -12
  143. package/src/lib/parsers/parse-hdr.ts +426 -0
  144. package/src/lib/parsers/parse-ktx.ts +13 -3
  145. package/src/lib/parsers/parse-pvr.ts +33 -75
  146. package/src/lib/texture-api/generate-url.ts +2 -12
  147. package/src/lib/texture-api/load-image-array.ts +15 -6
  148. package/src/lib/texture-api/load-image-cube.ts +20 -34
  149. package/src/lib/texture-api/load-image.ts +19 -8
  150. package/src/lib/texture-api/texture-api-types.ts +15 -0
  151. package/src/lib/utils/detect-supported-texture-formats.ts +210 -0
  152. package/src/lib/utils/extract-mipmap-images.ts +23 -4
  153. package/src/lib/utils/ktx-format-helper.ts +135 -111
  154. package/src/lib/utils/texture-format-map.ts +162 -0
  155. package/src/radiance-hdr-loader.ts +36 -0
  156. package/src/texture-array-loader.ts +46 -0
  157. package/src/texture-cube-array-loader.ts +49 -0
  158. package/src/texture-cube-loader.ts +46 -0
  159. package/src/texture-loader.ts +49 -0
  160. package/dist/lib/utils/texture-formats.d.ts +0 -8
  161. package/dist/lib/utils/texture-formats.d.ts.map +0 -1
  162. package/dist/lib/utils/texture-formats.js +0 -51
  163. package/dist/lib/utils/texture-formats.js.map +0 -1
  164. package/src/lib/utils/texture-formats.ts +0 -59
@@ -22,7 +22,7 @@
22
22
  globalThis._loadersgl_.version = NPM_TAG;
23
23
  warningIssued = true;
24
24
  } else {
25
- globalThis._loadersgl_.version = "4.4.0-alpha.9";
25
+ globalThis._loadersgl_.version = "4.4.0";
26
26
  }
27
27
  }
28
28
  return globalThis._loadersgl_.version;
@@ -176,6 +176,16 @@
176
176
 
177
177
  // ../worker-utils/src/lib/library-utils/library-utils.ts
178
178
  var loadLibraryPromises = {};
179
+ function extractLoadLibraryOptions(options = {}) {
180
+ const useLocalLibraries = options.useLocalLibraries ?? options.core?.useLocalLibraries;
181
+ const CDN = options.CDN ?? options.core?.CDN;
182
+ const modules = options.modules;
183
+ return {
184
+ ...useLocalLibraries !== void 0 ? { useLocalLibraries } : {},
185
+ ...CDN !== void 0 ? { CDN } : {},
186
+ ...modules !== void 0 ? { modules } : {}
187
+ };
188
+ }
179
189
  async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
180
190
  if (moduleName) {
181
191
  libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
@@ -372,7 +382,7 @@
372
382
  }
373
383
 
374
384
  // src/lib/utils/version.ts
375
- var VERSION2 = true ? "4.4.0-alpha.9" : "latest";
385
+ var VERSION2 = true ? "4.4.0" : "latest";
376
386
 
377
387
  // src/lib/parsers/basis-module-loader.ts
378
388
  var BASIS_EXTERNAL_LIBRARIES = {
@@ -452,104 +462,117 @@
452
462
  }
453
463
 
454
464
  // src/lib/gl-extensions.ts
455
- var GL_EXTENSIONS_CONSTANTS = {
456
- // WEBGL_compressed_texture_s3tc
457
- COMPRESSED_RGB_S3TC_DXT1_EXT: 33776,
458
- COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777,
459
- COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778,
460
- COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779,
461
- // WEBGL_compressed_texture_es3
462
- COMPRESSED_R11_EAC: 37488,
463
- COMPRESSED_SIGNED_R11_EAC: 37489,
464
- COMPRESSED_RG11_EAC: 37490,
465
- COMPRESSED_SIGNED_RG11_EAC: 37491,
466
- COMPRESSED_RGB8_ETC2: 37492,
467
- COMPRESSED_RGBA8_ETC2_EAC: 37493,
468
- COMPRESSED_SRGB8_ETC2: 37494,
469
- COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37495,
470
- COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37496,
471
- COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37497,
472
- // WEBGL_compressed_texture_pvrtc
473
- COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840,
474
- COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842,
475
- COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841,
476
- COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843,
477
- // WEBGL_compressed_texture_etc1
478
- COMPRESSED_RGB_ETC1_WEBGL: 36196,
479
- // WEBGL_compressed_texture_atc
480
- COMPRESSED_RGB_ATC_WEBGL: 35986,
481
- COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 35987,
482
- COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 34798,
483
- // WEBGL_compressed_texture_astc
484
- COMPRESSED_RGBA_ASTC_4X4_KHR: 37808,
485
- COMPRESSED_RGBA_ASTC_5X4_KHR: 37809,
486
- COMPRESSED_RGBA_ASTC_5X5_KHR: 37810,
487
- COMPRESSED_RGBA_ASTC_6X5_KHR: 37811,
488
- COMPRESSED_RGBA_ASTC_6X6_KHR: 37812,
489
- COMPRESSED_RGBA_ASTC_8X5_KHR: 37813,
490
- COMPRESSED_RGBA_ASTC_8X6_KHR: 37814,
491
- COMPRESSED_RGBA_ASTC_8X8_KHR: 37815,
492
- COMPRESSED_RGBA_ASTC_10X5_KHR: 37816,
493
- COMPRESSED_RGBA_ASTC_10X6_KHR: 37817,
494
- COMPRESSED_RGBA_ASTC_10X8_KHR: 37818,
495
- COMPRESSED_RGBA_ASTC_10X10_KHR: 37819,
496
- COMPRESSED_RGBA_ASTC_12X10_KHR: 37820,
497
- COMPRESSED_RGBA_ASTC_12X12_KHR: 37821,
498
- COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: 37840,
499
- COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: 37841,
500
- COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: 37842,
501
- COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: 37843,
502
- COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: 37844,
503
- COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: 37845,
504
- COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: 37846,
505
- COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: 37847,
506
- COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: 37848,
507
- COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: 37849,
508
- COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: 37850,
509
- COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 37851,
510
- COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 37852,
511
- COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 37853,
512
- // EXT_texture_compression_rgtc
513
- COMPRESSED_RED_RGTC1_EXT: 36283,
514
- COMPRESSED_SIGNED_RED_RGTC1_EXT: 36284,
515
- COMPRESSED_RED_GREEN_RGTC2_EXT: 36285,
516
- COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 36286,
517
- // WEBGL_compressed_texture_s3tc_srgb
518
- COMPRESSED_SRGB_S3TC_DXT1_EXT: 35916,
519
- COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 35917,
520
- COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 35918,
521
- COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 35919
522
- };
465
+ var GL_RGBA4 = 32854;
466
+ var GL_RGBA8 = 32856;
467
+ var GL_RGB565 = 36194;
468
+ var GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 33776;
469
+ var GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779;
470
+ var GL_COMPRESSED_RGBA8_ETC2_EAC = 37493;
471
+ var GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840;
472
+ var GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842;
473
+ var GL_COMPRESSED_RGB_ETC1_WEBGL = 36196;
474
+ var GL_COMPRESSED_RGB_ATC_WEBGL = 35986;
475
+ var GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798;
476
+ var GL_COMPRESSED_RGBA_ASTC_4x4_KHR = 37808;
477
+ var GL_COMPRESSED_RED_RGTC1_EXT = 36283;
478
+ var GL_COMPRESSED_RED_GREEN_RGTC2_EXT = 36285;
479
+ var GL_COMPRESSED_RGBA_BPTC_UNORM_EXT = 36492;
523
480
 
524
- // src/lib/utils/texture-formats.ts
481
+ // src/lib/utils/detect-supported-texture-formats.ts
525
482
  var BROWSER_PREFIXES = ["", "WEBKIT_", "MOZ_"];
526
- var WEBGL_EXTENSIONS = {
483
+ var WEBGL_TEXTURE_FORMATS = {
527
484
  /* eslint-disable camelcase */
528
- WEBGL_compressed_texture_s3tc: "dxt",
529
- WEBGL_compressed_texture_s3tc_srgb: "dxt-srgb",
530
- WEBGL_compressed_texture_etc1: "etc1",
531
- WEBGL_compressed_texture_etc: "etc2",
532
- WEBGL_compressed_texture_pvrtc: "pvrtc",
533
- WEBGL_compressed_texture_atc: "atc",
534
- WEBGL_compressed_texture_astc: "astc",
535
- EXT_texture_compression_rgtc: "rgtc"
485
+ WEBGL_compressed_texture_s3tc: [
486
+ "bc1-rgb-unorm-webgl",
487
+ "bc1-rgba-unorm",
488
+ "bc2-rgba-unorm",
489
+ "bc3-rgba-unorm"
490
+ ],
491
+ WEBGL_compressed_texture_s3tc_srgb: [
492
+ "bc1-rgb-unorm-srgb-webgl",
493
+ "bc1-rgba-unorm-srgb",
494
+ "bc2-rgba-unorm-srgb",
495
+ "bc3-rgba-unorm-srgb"
496
+ ],
497
+ EXT_texture_compression_rgtc: ["bc4-r-unorm", "bc4-r-snorm", "bc5-rg-unorm", "bc5-rg-snorm"],
498
+ EXT_texture_compression_bptc: [
499
+ "bc6h-rgb-ufloat",
500
+ "bc6h-rgb-float",
501
+ "bc7-rgba-unorm",
502
+ "bc7-rgba-unorm-srgb"
503
+ ],
504
+ WEBGL_compressed_texture_etc1: ["etc1-rgb-unorm-webgl"],
505
+ WEBGL_compressed_texture_etc: [
506
+ "etc2-rgb8unorm",
507
+ "etc2-rgb8unorm-srgb",
508
+ "etc2-rgb8a1unorm",
509
+ "etc2-rgb8a1unorm-srgb",
510
+ "etc2-rgba8unorm",
511
+ "etc2-rgba8unorm-srgb",
512
+ "eac-r11unorm",
513
+ "eac-r11snorm",
514
+ "eac-rg11unorm",
515
+ "eac-rg11snorm"
516
+ ],
517
+ WEBGL_compressed_texture_pvrtc: [
518
+ "pvrtc-rgb4unorm-webgl",
519
+ "pvrtc-rgba4unorm-webgl",
520
+ "pvrtc-rgb2unorm-webgl",
521
+ "pvrtc-rgba2unorm-webgl"
522
+ ],
523
+ WEBGL_compressed_texture_atc: [
524
+ "atc-rgb-unorm-webgl",
525
+ "atc-rgba-unorm-webgl",
526
+ "atc-rgbai-unorm-webgl"
527
+ ],
528
+ WEBGL_compressed_texture_astc: [
529
+ "astc-4x4-unorm",
530
+ "astc-4x4-unorm-srgb",
531
+ "astc-5x4-unorm",
532
+ "astc-5x4-unorm-srgb",
533
+ "astc-5x5-unorm",
534
+ "astc-5x5-unorm-srgb",
535
+ "astc-6x5-unorm",
536
+ "astc-6x5-unorm-srgb",
537
+ "astc-6x6-unorm",
538
+ "astc-6x6-unorm-srgb",
539
+ "astc-8x5-unorm",
540
+ "astc-8x5-unorm-srgb",
541
+ "astc-8x6-unorm",
542
+ "astc-8x6-unorm-srgb",
543
+ "astc-8x8-unorm",
544
+ "astc-8x8-unorm-srgb",
545
+ "astc-10x5-unorm",
546
+ "astc-10x5-unorm-srgb",
547
+ "astc-10x6-unorm",
548
+ "astc-10x6-unorm-srgb",
549
+ "astc-10x8-unorm",
550
+ "astc-10x8-unorm-srgb",
551
+ "astc-10x10-unorm",
552
+ "astc-10x10-unorm-srgb",
553
+ "astc-12x10-unorm",
554
+ "astc-12x10-unorm-srgb",
555
+ "astc-12x12-unorm",
556
+ "astc-12x12-unorm-srgb"
557
+ ]
536
558
  /* eslint-enable camelcase */
537
559
  };
538
- var formats = null;
539
- function getSupportedGPUTextureFormats(gl) {
540
- if (!formats) {
560
+ var textureFormats = null;
561
+ function detectSupportedTextureFormats(gl) {
562
+ if (!textureFormats) {
541
563
  gl = gl || getWebGLContext() || void 0;
542
- formats = /* @__PURE__ */ new Set();
564
+ textureFormats = /* @__PURE__ */ new Set();
543
565
  for (const prefix of BROWSER_PREFIXES) {
544
- for (const extension in WEBGL_EXTENSIONS) {
566
+ for (const extension in WEBGL_TEXTURE_FORMATS) {
545
567
  if (gl && gl.getExtension(`${prefix}${extension}`)) {
546
- const gpuTextureFormat = WEBGL_EXTENSIONS[extension];
547
- formats.add(gpuTextureFormat);
568
+ for (const textureFormat of WEBGL_TEXTURE_FORMATS[extension]) {
569
+ textureFormats.add(textureFormat);
570
+ }
548
571
  }
549
572
  }
550
573
  }
551
574
  }
552
- return formats;
575
+ return textureFormats;
553
576
  }
554
577
  function getWebGLContext() {
555
578
  try {
@@ -594,73 +617,154 @@
594
617
  }
595
618
 
596
619
  // src/lib/parsers/parse-basis.ts
597
- var OutputFormat = {
620
+ var basisTranscodingLock = Promise.resolve();
621
+ var BASIS_FORMAT_TO_OUTPUT_OPTIONS = {
598
622
  etc1: {
599
623
  basisFormat: 0,
600
624
  compressed: true,
601
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
625
+ format: GL_COMPRESSED_RGB_ETC1_WEBGL,
626
+ textureFormat: "etc1-rgb-unorm-webgl"
627
+ },
628
+ etc2: {
629
+ basisFormat: 1,
630
+ compressed: true,
631
+ format: GL_COMPRESSED_RGBA8_ETC2_EAC,
632
+ textureFormat: "etc2-rgba8unorm"
602
633
  },
603
- etc2: { basisFormat: 1, compressed: true },
604
634
  bc1: {
605
635
  basisFormat: 2,
606
636
  compressed: true,
607
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT
637
+ format: GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
638
+ textureFormat: "bc1-rgb-unorm-webgl"
608
639
  },
609
640
  bc3: {
610
641
  basisFormat: 3,
611
642
  compressed: true,
612
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
643
+ format: GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
644
+ textureFormat: "bc3-rgba-unorm"
645
+ },
646
+ bc4: {
647
+ basisFormat: 4,
648
+ compressed: true,
649
+ format: GL_COMPRESSED_RED_RGTC1_EXT,
650
+ textureFormat: "bc4-r-unorm"
651
+ },
652
+ bc5: {
653
+ basisFormat: 5,
654
+ compressed: true,
655
+ format: GL_COMPRESSED_RED_GREEN_RGTC2_EXT,
656
+ textureFormat: "bc5-rg-unorm"
657
+ },
658
+ "bc7-m6-opaque-only": {
659
+ basisFormat: 6,
660
+ compressed: true,
661
+ format: GL_COMPRESSED_RGBA_BPTC_UNORM_EXT,
662
+ textureFormat: "bc7-rgba-unorm"
663
+ },
664
+ "bc7-m5": {
665
+ basisFormat: 7,
666
+ compressed: true,
667
+ format: GL_COMPRESSED_RGBA_BPTC_UNORM_EXT,
668
+ textureFormat: "bc7-rgba-unorm"
613
669
  },
614
- bc4: { basisFormat: 4, compressed: true },
615
- bc5: { basisFormat: 5, compressed: true },
616
- "bc7-m6-opaque-only": { basisFormat: 6, compressed: true },
617
- "bc7-m5": { basisFormat: 7, compressed: true },
618
670
  "pvrtc1-4-rgb": {
619
671
  basisFormat: 8,
620
672
  compressed: true,
621
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
673
+ format: GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
674
+ textureFormat: "pvrtc-rgb4unorm-webgl"
622
675
  },
623
676
  "pvrtc1-4-rgba": {
624
677
  basisFormat: 9,
625
678
  compressed: true,
626
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
679
+ format: GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
680
+ textureFormat: "pvrtc-rgba4unorm-webgl"
627
681
  },
628
682
  "astc-4x4": {
629
683
  basisFormat: 10,
630
684
  compressed: true,
631
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
685
+ format: GL_COMPRESSED_RGBA_ASTC_4x4_KHR,
686
+ textureFormat: "astc-4x4-unorm"
687
+ },
688
+ "atc-rgb": {
689
+ basisFormat: 11,
690
+ compressed: true,
691
+ format: GL_COMPRESSED_RGB_ATC_WEBGL,
692
+ textureFormat: "atc-rgb-unorm-webgl"
693
+ },
694
+ "atc-rgba-interpolated-alpha": {
695
+ basisFormat: 12,
696
+ compressed: true,
697
+ format: GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL,
698
+ textureFormat: "atc-rgbai-unorm-webgl"
632
699
  },
633
- "atc-rgb": { basisFormat: 11, compressed: true },
634
- "atc-rgba-interpolated-alpha": { basisFormat: 12, compressed: true },
635
- rgba32: { basisFormat: 13, compressed: false },
636
- rgb565: { basisFormat: 14, compressed: false },
637
- bgr565: { basisFormat: 15, compressed: false },
638
- rgba4444: { basisFormat: 16, compressed: false }
700
+ rgba32: {
701
+ basisFormat: 13,
702
+ compressed: false,
703
+ format: GL_RGBA8,
704
+ textureFormat: "rgba8unorm"
705
+ },
706
+ rgb565: {
707
+ basisFormat: 14,
708
+ compressed: false,
709
+ format: GL_RGB565,
710
+ textureFormat: "rgb565unorm-webgl"
711
+ },
712
+ bgr565: {
713
+ basisFormat: 15,
714
+ compressed: false,
715
+ format: GL_RGB565,
716
+ textureFormat: "rgb565unorm-webgl"
717
+ },
718
+ rgba4444: {
719
+ basisFormat: 16,
720
+ compressed: false,
721
+ format: GL_RGBA4,
722
+ textureFormat: "rgba4unorm-webgl"
723
+ }
639
724
  };
725
+ var BASIS_FORMATS = Object.freeze(
726
+ Object.keys(BASIS_FORMAT_TO_OUTPUT_OPTIONS)
727
+ );
728
+ async function withBasisTranscodingLock(transcode) {
729
+ const previousLock = basisTranscodingLock;
730
+ let releaseLock;
731
+ basisTranscodingLock = new Promise((resolve) => {
732
+ releaseLock = resolve;
733
+ });
734
+ await previousLock;
735
+ try {
736
+ return await transcode();
737
+ } finally {
738
+ releaseLock();
739
+ }
740
+ }
640
741
  async function parseBasis(data, options = {}) {
641
- if (!options.basis?.containerFormat || options.basis.containerFormat === "auto") {
642
- if (isKTX(data)) {
643
- const fileConstructors = await loadBasisEncoderModule(options?.core || {});
644
- return parseKTX2File(fileConstructors.KTX2File, data, options);
645
- }
646
- const { BasisFile } = await loadBasisTranscoderModule(options?.core || {});
647
- return parseBasisFile(BasisFile, data, options);
648
- }
649
- switch (options.basis.module) {
650
- case "encoder":
651
- const fileConstructors = await loadBasisEncoderModule(options?.core || {});
652
- switch (options.basis.containerFormat) {
653
- case "ktx2":
654
- return parseKTX2File(fileConstructors.KTX2File, data, options);
655
- case "basis":
656
- default:
657
- return parseBasisFile(fileConstructors.BasisFile, data, options);
742
+ const loadLibraryOptions = extractLoadLibraryOptions(options);
743
+ return await withBasisTranscodingLock(async () => {
744
+ if (!options.basis?.containerFormat || options.basis.containerFormat === "auto") {
745
+ if (isKTX(data)) {
746
+ const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
747
+ return parseKTX2File(fileConstructors.KTX2File, data, options);
658
748
  }
659
- case "transcoder":
660
- default:
661
- const { BasisFile } = await loadBasisTranscoderModule(options.core || {});
749
+ const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
662
750
  return parseBasisFile(BasisFile, data, options);
663
- }
751
+ }
752
+ switch (options.basis.module) {
753
+ case "encoder":
754
+ const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
755
+ switch (options.basis.containerFormat) {
756
+ case "ktx2":
757
+ return parseKTX2File(fileConstructors.KTX2File, data, options);
758
+ case "basis":
759
+ default:
760
+ return parseBasisFile(fileConstructors.BasisFile, data, options);
761
+ }
762
+ case "transcoder":
763
+ default:
764
+ const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
765
+ return parseBasisFile(BasisFile, data, options);
766
+ }
767
+ });
664
768
  }
665
769
  function parseBasisFile(BasisFile, data, options) {
666
770
  const basisFile = new BasisFile(new Uint8Array(data));
@@ -690,7 +794,7 @@
690
794
  const hasAlpha = basisFile.getHasAlpha(
691
795
  /* imageIndex, levelIndex */
692
796
  );
693
- const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);
797
+ const { compressed, format, basisFormat, textureFormat } = getBasisOptions(options, hasAlpha);
694
798
  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
695
799
  const decodedData = new Uint8Array(decodedSize);
696
800
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
@@ -698,11 +802,13 @@
698
802
  }
699
803
  return {
700
804
  // standard loaders.gl image category payload
805
+ shape: "texture-level",
701
806
  width,
702
807
  height,
703
808
  data: decodedData,
704
809
  compressed,
705
- format,
810
+ ...format !== void 0 ? { format } : {},
811
+ ...textureFormat !== void 0 ? { textureFormat } : {},
706
812
  // Additional fields
707
813
  // Add levelSize field.
708
814
  hasAlpha
@@ -727,7 +833,7 @@
727
833
  }
728
834
  function transcodeKTX2Image(ktx2File, levelIndex, options) {
729
835
  const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
730
- const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);
836
+ const { compressed, format, basisFormat, textureFormat } = getBasisOptions(options, alphaFlag);
731
837
  const decodedSize = ktx2File.getImageTranscodedSizeInBytes(
732
838
  levelIndex,
733
839
  0,
@@ -750,48 +856,98 @@
750
856
  }
751
857
  return {
752
858
  // standard loaders.gl image category payload
859
+ shape: "texture-level",
753
860
  width,
754
861
  height,
755
862
  data: decodedData,
756
863
  compressed,
864
+ ...format !== void 0 ? { format } : {},
865
+ ...textureFormat !== void 0 ? { textureFormat } : {},
757
866
  // Additional fields
758
867
  levelSize: decodedSize,
759
- hasAlpha: alphaFlag,
760
- format
868
+ hasAlpha: alphaFlag
761
869
  };
762
870
  }
763
871
  function getBasisOptions(options, hasAlpha) {
764
- let format = options.basis?.format;
872
+ let format = options.basis?.format || "auto";
765
873
  if (format === "auto") {
766
- format = selectSupportedBasisFormat();
874
+ format = options.basis?.supportedTextureFormats ? selectSupportedBasisFormat(options.basis.supportedTextureFormats) : selectSupportedBasisFormat();
767
875
  }
768
876
  if (typeof format === "object") {
769
877
  format = hasAlpha ? format.alpha : format.noAlpha;
770
878
  }
771
- format = format.toLowerCase();
772
- return OutputFormat[format];
879
+ const normalizedFormat = format.toLowerCase();
880
+ const basisOutputOptions = BASIS_FORMAT_TO_OUTPUT_OPTIONS[normalizedFormat];
881
+ if (!basisOutputOptions) {
882
+ throw new Error(`Unknown Basis format ${format}`);
883
+ }
884
+ return basisOutputOptions;
773
885
  }
774
- function selectSupportedBasisFormat() {
775
- const supportedFormats = getSupportedGPUTextureFormats();
776
- if (supportedFormats.has("astc")) {
886
+ function selectSupportedBasisFormat(supportedTextureFormats = detectSupportedTextureFormats()) {
887
+ const textureFormats2 = new Set(supportedTextureFormats);
888
+ if (hasSupportedTextureFormat(textureFormats2, ["astc-4x4-unorm", "astc-4x4-unorm-srgb"])) {
777
889
  return "astc-4x4";
778
- } else if (supportedFormats.has("dxt")) {
890
+ } else if (hasSupportedTextureFormat(textureFormats2, ["bc7-rgba-unorm", "bc7-rgba-unorm-srgb"])) {
891
+ return {
892
+ alpha: "bc7-m5",
893
+ noAlpha: "bc7-m6-opaque-only"
894
+ };
895
+ } else if (hasSupportedTextureFormat(textureFormats2, [
896
+ "bc1-rgb-unorm-webgl",
897
+ "bc1-rgb-unorm-srgb-webgl",
898
+ "bc1-rgba-unorm",
899
+ "bc1-rgba-unorm-srgb",
900
+ "bc2-rgba-unorm",
901
+ "bc2-rgba-unorm-srgb",
902
+ "bc3-rgba-unorm",
903
+ "bc3-rgba-unorm-srgb"
904
+ ])) {
779
905
  return {
780
906
  alpha: "bc3",
781
907
  noAlpha: "bc1"
782
908
  };
783
- } else if (supportedFormats.has("pvrtc")) {
909
+ } else if (hasSupportedTextureFormat(textureFormats2, [
910
+ "pvrtc-rgb4unorm-webgl",
911
+ "pvrtc-rgba4unorm-webgl",
912
+ "pvrtc-rgb2unorm-webgl",
913
+ "pvrtc-rgba2unorm-webgl"
914
+ ])) {
784
915
  return {
785
916
  alpha: "pvrtc1-4-rgba",
786
917
  noAlpha: "pvrtc1-4-rgb"
787
918
  };
788
- } else if (supportedFormats.has("etc1")) {
789
- return "etc1";
790
- } else if (supportedFormats.has("etc2")) {
919
+ } else if (hasSupportedTextureFormat(textureFormats2, [
920
+ "etc2-rgb8unorm",
921
+ "etc2-rgb8unorm-srgb",
922
+ "etc2-rgb8a1unorm",
923
+ "etc2-rgb8a1unorm-srgb",
924
+ "etc2-rgba8unorm",
925
+ "etc2-rgba8unorm-srgb",
926
+ "eac-r11unorm",
927
+ "eac-r11snorm",
928
+ "eac-rg11unorm",
929
+ "eac-rg11snorm"
930
+ ])) {
791
931
  return "etc2";
932
+ } else if (textureFormats2.has("etc1-rgb-unorm-webgl")) {
933
+ return "etc1";
934
+ } else if (hasSupportedTextureFormat(textureFormats2, [
935
+ "atc-rgb-unorm-webgl",
936
+ "atc-rgba-unorm-webgl",
937
+ "atc-rgbai-unorm-webgl"
938
+ ])) {
939
+ return {
940
+ alpha: "atc-rgba-interpolated-alpha",
941
+ noAlpha: "atc-rgb"
942
+ };
792
943
  }
793
944
  return "rgb565";
794
945
  }
946
+ function hasSupportedTextureFormat(supportedTextureFormats, candidateTextureFormats) {
947
+ return candidateTextureFormats.some(
948
+ (textureFormat) => supportedTextureFormats.has(textureFormat)
949
+ );
950
+ }
795
951
 
796
952
  // src/basis-loader.ts
797
953
  var BasisWorkerLoader = {
@@ -809,7 +965,6 @@
809
965
  options: {
810
966
  basis: {
811
967
  format: "auto",
812
- libraryPath: "libs/",
813
968
  containerFormat: "auto",
814
969
  module: "transcoder"
815
970
  }
@@ -2,8 +2,6 @@ import type { StrictLoaderOptions } from '@loaders.gl/loader-utils';
2
2
  /** Options for the CompressedTextureLoader */
3
3
  export type CompressedTextureLoaderOptions = StrictLoaderOptions & {
4
4
  'compressed-texture'?: {
5
- /** @deprecated Specify path to libraries */
6
- libraryPath?: string;
7
5
  /** Whether to use Basis decoding */
8
6
  useBasis?: boolean;
9
7
  /** Override the URL to the worker bundle (by default loads from unpkg.com) */
@@ -26,7 +24,6 @@ export declare const CompressedTextureWorkerLoader: {
26
24
  readonly binary: true;
27
25
  readonly options: {
28
26
  readonly 'compressed-texture': {
29
- readonly libraryPath: "libs/";
30
27
  readonly useBasis: false;
31
28
  };
32
29
  };
@@ -48,7 +45,6 @@ export declare const CompressedTextureLoader: {
48
45
  readonly binary: true;
49
46
  readonly options: {
50
47
  readonly 'compressed-texture': {
51
- readonly libraryPath: "libs/";
52
48
  readonly useBasis: false;
53
49
  };
54
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"compressed-texture-loader.d.ts","sourceRoot":"","sources":["../src/compressed-texture-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA2B,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAK5F,8CAA8C;AAC9C,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,GAAG;IACjE,oBAAoB,CAAC,EAAE;QACrB,4CAA4C;QAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,oCAAoC;QACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B;uBACX,GAAG;wBACb,KAAK;;;;;;;;;;;;;;;CA2B6C,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,uBAAuB;kCAEP,WAAW,YAAY,8BAA8B;uBAnCnD,GAAG;wBACb,KAAK;;;;;;;;;;;;;;;CAmDuD,CAAC"}
1
+ {"version":3,"file":"compressed-texture-loader.d.ts","sourceRoot":"","sources":["../src/compressed-texture-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA2B,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAK5F,8CAA8C;AAC9C,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,GAAG;IACjE,oBAAoB,CAAC,EAAE;QACrB,oCAAoC;QACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B;uBACX,GAAG;wBACb,KAAK;;;;;;;;;;;;;;CA0B6C,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,uBAAuB;kCAEP,WAAW,YAAY,8BAA8B;uBAlCnD,GAAG;wBACb,KAAK;;;;;;;;;;;;;;CAkDuD,CAAC"}
@@ -31,7 +31,6 @@ export const CompressedTextureWorkerLoader = {
31
31
  binary: true,
32
32
  options: {
33
33
  'compressed-texture': {
34
- libraryPath: 'libs/',
35
34
  useBasis: false
36
35
  }
37
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compressed-texture-loader.js","sourceRoot":"","sources":["../src/compressed-texture-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,OAAO,EAAC,+BAA4B;AAC5C,OAAO,EAAC,sBAAsB,EAAC,kDAA+C;AAC9E,OAAO,EAAC,UAAU,EAAC,qCAAkC;AAcrD;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,QAAQ,EAAE,IAAsB;IAChC,SAAS,EAAE,IAAa;IAExB,IAAI,EAAE,oBAAoB;IAC1B,EAAE,EAAE,oBAAoB;IACxB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE;QACV,KAAK;QACL,MAAM;QACN,KAAK,EAAE,8DAA8D;QACrE,KAAK,CAAC,iCAAiC;KACxC;IACD,SAAS,EAAE;QACT,YAAY;QACZ,WAAW;QACX,kBAAkB;QAClB,aAAa;QACb,0BAA0B;KAC3B;IACD,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE;QACP,oBAAoB,EAAE;YACpB,WAAW,EAAE,OAAO;YACpB,QAAQ,EAAE,KAAK;SAChB;KACF;CACoE,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,GAAG,6BAA6B;IAChC,KAAK,EAAE,KAAK,EAAE,WAAwB,EAAE,OAAwC,EAAE,EAAE;QAClF,OAAO,GAAG,EAAC,GAAG,OAAO,EAAC,CAAC;QACvB,IAAI,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,GAAG;gBACd,MAAM,EAAE;oBACN,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,KAAK;iBACf;gBACD,GAAG,OAAO,CAAC,KAAK;gBAChB,eAAe,EAAE,MAAM;gBACvB,MAAM,EAAE,SAAS;aAClB,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;CAC8E,CAAC"}
1
+ {"version":3,"file":"compressed-texture-loader.js","sourceRoot":"","sources":["../src/compressed-texture-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,OAAO,EAAC,+BAA4B;AAC5C,OAAO,EAAC,sBAAsB,EAAC,kDAA+C;AAC9E,OAAO,EAAC,UAAU,EAAC,qCAAkC;AAYrD;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,QAAQ,EAAE,IAAsB;IAChC,SAAS,EAAE,IAAa;IAExB,IAAI,EAAE,oBAAoB;IAC1B,EAAE,EAAE,oBAAoB;IACxB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE;QACV,KAAK;QACL,MAAM;QACN,KAAK,EAAE,8DAA8D;QACrE,KAAK,CAAC,iCAAiC;KACxC;IACD,SAAS,EAAE;QACT,YAAY;QACZ,WAAW;QACX,kBAAkB;QAClB,aAAa;QACb,0BAA0B;KAC3B;IACD,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE;QACP,oBAAoB,EAAE;YACpB,QAAQ,EAAE,KAAK;SAChB;KACF;CACoE,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,GAAG,6BAA6B;IAChC,KAAK,EAAE,KAAK,EAAE,WAAwB,EAAE,OAAwC,EAAE,EAAE;QAClF,OAAO,GAAG,EAAC,GAAG,OAAO,EAAC,CAAC;QACvB,IAAI,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,GAAG;gBACd,MAAM,EAAE;oBACN,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,KAAK;iBACf;gBACD,GAAG,OAAO,CAAC,KAAK;gBAChB,eAAe,EAAE,MAAM;gBACvB,MAAM,EAAE,SAAS;aAClB,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;CAC8E,CAAC"}