pixi.js 7.3.1 → 7.3.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.
package/dist/pixi.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * pixi.js - v7.3.1
3
- * Compiled Fri, 22 Sep 2023 18:50:32 UTC
2
+ * pixi.js - v7.3.3
3
+ * Compiled Mon, 01 Jan 2024 14:18:14 UTC
4
4
  *
5
5
  * pixi.js is licensed under the MIT License.
6
6
  * http://www.opensource.org/licenses/mit-license
@@ -1077,7 +1077,7 @@ const path = {
1077
1077
  joined = arg;
1078
1078
  else {
1079
1079
  const prevArg = (_a2 = segments[i2 - 1]) != null ? _a2 : "";
1080
- this.extname(prevArg) ? joined += `/../${arg}` : joined += `/${arg}`;
1080
+ this.joinExtensions.includes(this.extname(prevArg).toLowerCase()) ? joined += `/../${arg}` : joined += `/${arg}`;
1081
1081
  }
1082
1082
  }
1083
1083
  return joined === void 0 ? "." : this.normalize(joined);
@@ -1203,7 +1203,8 @@ const path = {
1203
1203
  return startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1 ? end !== -1 && (startPart === 0 && isAbsolute ? ret.base = ret.name = path2.slice(1, end) : ret.base = ret.name = path2.slice(startPart, end)) : (startPart === 0 && isAbsolute ? (ret.name = path2.slice(1, startDot), ret.base = path2.slice(1, end)) : (ret.name = path2.slice(startPart, startDot), ret.base = path2.slice(startPart, end)), ret.ext = path2.slice(startDot, end)), ret.dir = this.dirname(path2), protocol && (ret.dir = protocol + ret.dir), ret;
1204
1204
  },
1205
1205
  sep: "/",
1206
- delimiter: ":"
1206
+ delimiter: ":",
1207
+ joinExtensions: [".html"]
1207
1208
  };
1208
1209
  let promise;
1209
1210
  async function detectVideoAlphaMode() {
@@ -4588,7 +4589,10 @@ function getMaxFragmentPrecision() {
4588
4589
  if (!maxFragmentPrecision) {
4589
4590
  maxFragmentPrecision = PRECISION.MEDIUM;
4590
4591
  const gl = getTestContext();
4591
- gl && gl.getShaderPrecisionFormat && (maxFragmentPrecision = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision ? PRECISION.HIGH : PRECISION.MEDIUM);
4592
+ if (gl && gl.getShaderPrecisionFormat) {
4593
+ const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);
4594
+ shaderFragment && (maxFragmentPrecision = shaderFragment.precision ? PRECISION.HIGH : PRECISION.MEDIUM);
4595
+ }
4592
4596
  }
4593
4597
  return maxFragmentPrecision;
4594
4598
  }
@@ -8273,7 +8277,7 @@ class StartupSystem {
8273
8277
  */
8274
8278
  run(options) {
8275
8279
  const { renderer } = this;
8276
- renderer.runners.init.emit(renderer.options), options.hello && console.log(`PixiJS 7.3.1 - ${renderer.rendererLogId} - https://pixijs.com`), renderer.resize(renderer.screen.width, renderer.screen.height);
8280
+ renderer.runners.init.emit(renderer.options), options.hello && console.log(`PixiJS 7.3.3 - ${renderer.rendererLogId} - https://pixijs.com`), renderer.resize(renderer.screen.width, renderer.screen.height);
8277
8281
  }
8278
8282
  destroy() {
8279
8283
  }
@@ -10653,7 +10657,7 @@ const _VideoResource = class _VideoResource2 extends BaseImageResource {
10653
10657
  */
10654
10658
  _isSourcePlaying() {
10655
10659
  const source = this.source;
10656
- return !source.paused && !source.ended && this._isSourceReady();
10660
+ return !source.paused && !source.ended;
10657
10661
  }
10658
10662
  /**
10659
10663
  * Returns true if the underlying source is ready for playing.
@@ -10756,7 +10760,7 @@ class TransformFeedback {
10756
10760
  this.disposeRunner.emit(this, !1);
10757
10761
  }
10758
10762
  }
10759
- const VERSION = "7.3.1";
10763
+ const VERSION = "7.3.3";
10760
10764
  class Bounds {
10761
10765
  constructor() {
10762
10766
  this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, this.rect = null, this.updateID = -1;
@@ -11237,7 +11241,7 @@ class DisplayObject extends EventEmitter {
11237
11241
  return this._zIndex;
11238
11242
  }
11239
11243
  set zIndex(value) {
11240
- this._zIndex = value, this.parent && (this.parent.sortDirty = !0);
11244
+ this._zIndex !== value && (this._zIndex = value, this.parent && (this.parent.sortDirty = !0));
11241
11245
  }
11242
11246
  /**
11243
11247
  * Indicates if the object is globally visible.
@@ -13412,7 +13416,7 @@ class EventsTickerClass {
13412
13416
  }));
13413
13417
  }
13414
13418
  /**
13415
- * Updates the state of interactive objects if at least {@link interactionFrequency}
13419
+ * Updates the state of interactive objects if at least {@link PIXI.EventsTicker#interactionFrequency}
13416
13420
  * milliseconds have passed since the last invocation.
13417
13421
  *
13418
13422
  * Invoked by a throttled ticker update from {@link PIXI.Ticker.system}.
@@ -13775,7 +13779,7 @@ class EventBoundary {
13775
13779
  }
13776
13780
  }
13777
13781
  const isInteractiveMode = this._isInteractive(eventMode), isInteractiveTarget = currentTarget.isInteractive();
13778
- return isInteractiveTarget && isInteractiveTarget && this._allInteractiveElements.push(currentTarget), ignore || this._hitElements.length > 0 ? null : shouldReturn ? this._hitElements : isInteractiveMode && !pruneFn(currentTarget, location) && testFn(currentTarget, location) ? isInteractiveTarget ? [currentTarget] : [] : null;
13782
+ return isInteractiveMode && isInteractiveTarget && this._allInteractiveElements.push(currentTarget), ignore || this._hitElements.length > 0 ? null : shouldReturn ? this._hitElements : isInteractiveMode && !pruneFn(currentTarget, location) && testFn(currentTarget, location) ? isInteractiveTarget ? [currentTarget] : [] : null;
13779
13783
  }
13780
13784
  /**
13781
13785
  * Recursive implementation for {@link PIXI.EventBoundary.hitTest hitTest}.
@@ -15734,6 +15738,10 @@ function getFontFamilyName(url2) {
15734
15738
  let fontFamilyName = nameTokens.join(" ");
15735
15739
  return valid || (fontFamilyName = `"${fontFamilyName.replace(/[\\"]/g, "\\$&")}"`), fontFamilyName;
15736
15740
  }
15741
+ const validURICharactersRegex = /^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;
15742
+ function encodeURIWhenNeeded(uri) {
15743
+ return validURICharactersRegex.test(uri) ? uri : encodeURI(uri);
15744
+ }
15737
15745
  const loadWebFont = {
15738
15746
  extension: {
15739
15747
  type: ExtensionType.LoadParser,
@@ -15749,7 +15757,7 @@ const loadWebFont = {
15749
15757
  if (fonts) {
15750
15758
  const fontFaces = [], name = (_b = (_a2 = options.data) == null ? void 0 : _a2.family) != null ? _b : getFontFamilyName(url2), weights = (_e = (_d = (_c = options.data) == null ? void 0 : _c.weights) == null ? void 0 : _d.filter((weight) => validWeights.includes(weight))) != null ? _e : ["normal"], data = (_f = options.data) != null ? _f : {};
15751
15759
  for (let i2 = 0; i2 < weights.length; i2++) {
15752
- const weight = weights[i2], font = new FontFace(name, `url(${encodeURI(url2)})`, __spreadProps$2(__spreadValues$8({}, data), {
15760
+ const weight = weights[i2], font = new FontFace(name, `url(${encodeURIWhenNeeded(url2)})`, __spreadProps$2(__spreadValues$8({}, data), {
15753
15761
  weight
15754
15762
  }));
15755
15763
  await font.load(), fonts.add(font), fontFaces.push(font);
@@ -16248,38 +16256,6 @@ class Resolver {
16248
16256
  assetNames.push(...aliases);
16249
16257
  }), this._bundles[bundleId] = assetNames;
16250
16258
  }
16251
- /**
16252
- * Tells the resolver what keys are associated with witch asset.
16253
- * The most important thing the resolver does
16254
- * @example
16255
- * // Single key, single asset:
16256
- * resolver.add({alias: 'foo', src: 'bar.png');
16257
- * resolver.resolveUrl('foo') // => 'bar.png'
16258
- *
16259
- * // Multiple keys, single asset:
16260
- * resolver.add({alias: ['foo', 'boo'], src: 'bar.png'});
16261
- * resolver.resolveUrl('foo') // => 'bar.png'
16262
- * resolver.resolveUrl('boo') // => 'bar.png'
16263
- *
16264
- * // Multiple keys, multiple assets:
16265
- * resolver.add({alias: ['foo', 'boo'], src: ['bar.png', 'bar.webp']});
16266
- * resolver.resolveUrl('foo') // => 'bar.png'
16267
- *
16268
- * // Add custom data attached to the resolver
16269
- * Resolver.add({
16270
- * alias: 'bunnyBooBooSmooth',
16271
- * src: 'bunny{png,webp}',
16272
- * data: { scaleMode:SCALE_MODES.NEAREST }, // Base texture options
16273
- * });
16274
- *
16275
- * resolver.resolve('bunnyBooBooSmooth') // => { src: 'bunny.png', data: { scaleMode: SCALE_MODES.NEAREST } }
16276
- * @param aliases - the key or keys that you will reference when loading this asset
16277
- * @param srcs - the asset or assets that will be chosen from when loading via the specified key
16278
- * @param data - asset-specific data that will be passed to the loaders
16279
- * - Useful if you want to initiate loaded objects with specific data
16280
- * @param format - the format of the asset
16281
- * @param loadParser - the name of the load parser to use
16282
- */
16283
16259
  add(aliases, srcs, data, format2, loadParser) {
16284
16260
  const assets = [];
16285
16261
  typeof aliases == "string" || Array.isArray(aliases) && typeof aliases[0] == "string" ? (deprecation("7.2.0", `Assets.add now uses an object instead of individual parameters.
@@ -16334,12 +16310,12 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16334
16310
  * name: 'load-screen',
16335
16311
  * assets: [
16336
16312
  * {
16337
- * name: 'background',
16338
- * srcs: 'sunset.png',
16313
+ * alias: 'background',
16314
+ * src: 'sunset.png',
16339
16315
  * },
16340
16316
  * {
16341
- * name: 'bar',
16342
- * srcs: 'load-bar.{png,webp}',
16317
+ * alias: 'bar',
16318
+ * src: 'load-bar.{png,webp}',
16343
16319
  * },
16344
16320
  * ],
16345
16321
  * },
@@ -16347,12 +16323,12 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16347
16323
  * name: 'game-screen',
16348
16324
  * assets: [
16349
16325
  * {
16350
- * name: 'character',
16351
- * srcs: 'robot.png',
16326
+ * alias: 'character',
16327
+ * src: 'robot.png',
16352
16328
  * },
16353
16329
  * {
16354
- * name: 'enemy',
16355
- * srcs: 'bad-guy.png',
16330
+ * alias: 'enemy',
16331
+ * src: 'bad-guy.png',
16356
16332
  * },
16357
16333
  * ],
16358
16334
  * },
@@ -16459,7 +16435,7 @@ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`), asse
16459
16435
  buildResolvedAsset(formattedAsset, data) {
16460
16436
  var _a2;
16461
16437
  const { aliases, data: assetData, loadParser, format: format2 } = data;
16462
- return (this._basePath || this._rootPath) && (formattedAsset.src = path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath)), formattedAsset.alias = (_a2 = aliases != null ? aliases : formattedAsset.alias) != null ? _a2 : [formattedAsset.src], formattedAsset.src = this._appendDefaultSearchParams(formattedAsset.src), formattedAsset.data = __spreadValues$4(__spreadValues$4({}, assetData || {}), formattedAsset.data), formattedAsset.loadParser = loadParser != null ? loadParser : formattedAsset.loadParser, formattedAsset.format = format2 != null ? format2 : formattedAsset.src.split(".").pop(), formattedAsset.srcs = formattedAsset.src, formattedAsset.name = formattedAsset.alias, formattedAsset;
16438
+ return (this._basePath || this._rootPath) && (formattedAsset.src = path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath)), formattedAsset.alias = (_a2 = aliases != null ? aliases : formattedAsset.alias) != null ? _a2 : [formattedAsset.src], formattedAsset.src = this._appendDefaultSearchParams(formattedAsset.src), formattedAsset.data = __spreadValues$4(__spreadValues$4({}, assetData || {}), formattedAsset.data), formattedAsset.loadParser = loadParser != null ? loadParser : formattedAsset.loadParser, formattedAsset.format = format2 != null ? format2 : path.extname(formattedAsset.src).slice(1), formattedAsset.srcs = formattedAsset.src, formattedAsset.name = formattedAsset.alias, formattedAsset;
16463
16439
  }
16464
16440
  }
16465
16441
  class AssetsClass {
@@ -16476,7 +16452,7 @@ class AssetsClass {
16476
16452
  async init(options = {}) {
16477
16453
  var _a2, _b, _c;
16478
16454
  if (this._initialized) {
16479
- console.warn("[Assets]AssetManager already initialized, did you load before calling this Asset.init()?");
16455
+ console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");
16480
16456
  return;
16481
16457
  }
16482
16458
  if (this._initialized = !0, options.defaultSearchParams && this.resolver.setDefaultSearchParams(options.defaultSearchParams), options.basePath && (this.resolver.basePath = options.basePath), options.bundleIdentifier && this.resolver.setBundleIdentifier(options.bundleIdentifier), options.manifest) {
@@ -16495,51 +16471,6 @@ class AssetsClass {
16495
16471
  }
16496
16472
  }), options.preferences && this.setPreferences(options.preferences);
16497
16473
  }
16498
- /**
16499
- * Allows you to specify how to resolve any assets load requests.
16500
- * There are a few ways to add things here as shown below:
16501
- * @example
16502
- * import { Assets } from 'pixi.js';
16503
- *
16504
- * // Simple
16505
- * Assets.add({alias: 'bunnyBooBoo', src: 'bunny.png'});
16506
- * const bunny = await Assets.load('bunnyBooBoo');
16507
- *
16508
- * // Multiple keys:
16509
- * Assets.add({alias: ['burger', 'chicken'], src: 'bunny.png'});
16510
- *
16511
- * const bunny = await Assets.load('burger');
16512
- * const bunny2 = await Assets.load('chicken');
16513
- *
16514
- * // passing options to to the object
16515
- * Assets.add({
16516
- * alias: 'bunnyBooBooSmooth',
16517
- * src: 'bunny{png,webp}',
16518
- * data: { scaleMode: SCALE_MODES.NEAREST }, // Base texture options
16519
- * });
16520
- *
16521
- * // Multiple assets
16522
- *
16523
- * // The following all do the same thing:
16524
- *
16525
- * Assets.add({alias: 'bunnyBooBoo', src: 'bunny{png,webp}'});
16526
- *
16527
- * Assets.add({
16528
- * alias: 'bunnyBooBoo',
16529
- * src: [
16530
- * 'bunny.png',
16531
- * 'bunny.webp',
16532
- * ],
16533
- * });
16534
- *
16535
- * const bunny = await Assets.load('bunnyBooBoo'); // Will try to load WebP if available
16536
- * @param aliases - the key or keys that you will reference when loading this asset
16537
- * @param srcs - the asset or assets that will be chosen from when loading via the specified key
16538
- * @param data - asset-specific data that will be passed to the loaders
16539
- * - Useful if you want to initiate loaded objects with specific data
16540
- * @param format - the format of the asset
16541
- * @param loadParser - the name of the load parser to use
16542
- */
16543
16474
  add(aliases, srcs, data, format2, loadParser) {
16544
16475
  this.resolver.add(aliases, srcs, data, format2, loadParser);
16545
16476
  }
@@ -16587,12 +16518,12 @@ class AssetsClass {
16587
16518
  * name: 'load-screen',
16588
16519
  * assets: [
16589
16520
  * {
16590
- * name: 'background',
16591
- * srcs: 'sunset.png',
16521
+ * alias: 'background',
16522
+ * src: 'sunset.png',
16592
16523
  * },
16593
16524
  * {
16594
- * name: 'bar',
16595
- * srcs: 'load-bar.{png,webp}',
16525
+ * alias: 'bar',
16526
+ * src: 'load-bar.{png,webp}',
16596
16527
  * },
16597
16528
  * ],
16598
16529
  * },
@@ -16600,19 +16531,19 @@ class AssetsClass {
16600
16531
  * name: 'game-screen',
16601
16532
  * assets: [
16602
16533
  * {
16603
- * name: 'character',
16604
- * srcs: 'robot.png',
16534
+ * alias: 'character',
16535
+ * src: 'robot.png',
16605
16536
  * },
16606
16537
  * {
16607
- * name: 'enemy',
16608
- * srcs: 'bad-guy.png',
16538
+ * alias: 'enemy',
16539
+ * src: 'bad-guy.png',
16609
16540
  * },
16610
16541
  * ],
16611
16542
  * },
16612
16543
  * ]
16613
16544
  * };
16614
16545
  *
16615
- * await Asset.init({ manifest });
16546
+ * await Assets.init({ manifest });
16616
16547
  *
16617
16548
  * // Load a bundle...
16618
16549
  * loadScreenAssets = await Assets.loadBundle('load-screen');
@@ -16842,22 +16773,36 @@ const cacheTextureArray = {
16842
16773
  }
16843
16774
  };
16844
16775
  extensions$1.add(cacheTextureArray);
16845
- const detectAvif = {
16846
- extension: {
16847
- type: ExtensionType.DetectionParser,
16848
- priority: 1
16849
- },
16850
- test: async () => {
16851
- const avifData = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=";
16776
+ async function testImageFormat(imageData) {
16777
+ if ("Image" in globalThis)
16852
16778
  return new Promise((resolve2) => {
16853
- const avif = new Image();
16854
- avif.onload = () => {
16779
+ const image = new Image();
16780
+ image.onload = () => {
16855
16781
  resolve2(!0);
16856
- }, avif.onerror = () => {
16782
+ }, image.onerror = () => {
16857
16783
  resolve2(!1);
16858
- }, avif.src = avifData;
16784
+ }, image.src = imageData;
16859
16785
  });
16786
+ if ("createImageBitmap" in globalThis && "fetch" in globalThis) {
16787
+ try {
16788
+ const blob = await (await fetch(imageData)).blob();
16789
+ await createImageBitmap(blob);
16790
+ } catch (e2) {
16791
+ return !1;
16792
+ }
16793
+ return !0;
16794
+ }
16795
+ return !1;
16796
+ }
16797
+ const detectAvif = {
16798
+ extension: {
16799
+ type: ExtensionType.DetectionParser,
16800
+ priority: 1
16860
16801
  },
16802
+ test: async () => testImageFormat(
16803
+ // eslint-disable-next-line max-len
16804
+ "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="
16805
+ ),
16861
16806
  add: async (formats2) => [...formats2, "avif"],
16862
16807
  remove: async (formats2) => formats2.filter((f2) => f2 !== "avif")
16863
16808
  };
@@ -16867,17 +16812,9 @@ const detectWebp = {
16867
16812
  type: ExtensionType.DetectionParser,
16868
16813
  priority: 0
16869
16814
  },
16870
- test: async () => {
16871
- const webpData = "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=";
16872
- return new Promise((resolve2) => {
16873
- const webp = new Image();
16874
- webp.onload = () => {
16875
- resolve2(!0);
16876
- }, webp.onerror = () => {
16877
- resolve2(!1);
16878
- }, webp.src = webpData;
16879
- });
16880
- },
16815
+ test: async () => testImageFormat(
16816
+ "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="
16817
+ ),
16881
16818
  add: async (formats2) => [...formats2, "webp"],
16882
16819
  remove: async (formats2) => formats2.filter((f2) => f2 !== "webp")
16883
16820
  };
@@ -16933,13 +16870,13 @@ const resolveTextureUrl = {
16933
16870
  var _a2, _b;
16934
16871
  return {
16935
16872
  resolution: parseFloat((_b = (_a2 = settings.RETINA_PREFIX.exec(value)) == null ? void 0 : _a2[1]) != null ? _b : "1"),
16936
- format: value.split(".").pop(),
16873
+ format: path.extname(value).slice(1),
16937
16874
  src: value
16938
16875
  };
16939
16876
  }
16940
16877
  };
16941
16878
  extensions$1.add(resolveTextureUrl);
16942
- var INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => (INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_R11_EAC = 37488] = "COMPRESSED_R11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_R11_EAC = 37489] = "COMPRESSED_SIGNED_R11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RG11_EAC = 37490] = "COMPRESSED_RG11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_RG11_EAC = 37491] = "COMPRESSED_SIGNED_RG11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_ETC2 = 37492] = "COMPRESSED_RGB8_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA8_ETC2_EAC = 37496] = "COMPRESSED_RGBA8_ETC2_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ETC2 = 37493] = "COMPRESSED_SRGB8_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ETC1_WEBGL = 36196] = "COMPRESSED_RGB_ETC1_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ATC_WEBGL = 35986] = "COMPRESSED_RGB_ATC_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35986] = "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798] = "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ASTC_4x4_KHR = 37808] = "COMPRESSED_RGBA_ASTC_4x4_KHR", INTERNAL_FORMATS2))(INTERNAL_FORMATS || {});
16879
+ var INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => (INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_R11_EAC = 37488] = "COMPRESSED_R11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_R11_EAC = 37489] = "COMPRESSED_SIGNED_R11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RG11_EAC = 37490] = "COMPRESSED_RG11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_RG11_EAC = 37491] = "COMPRESSED_SIGNED_RG11_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_ETC2 = 37492] = "COMPRESSED_RGB8_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA8_ETC2_EAC = 37496] = "COMPRESSED_RGBA8_ETC2_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ETC2 = 37493] = "COMPRESSED_SRGB8_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ETC1_WEBGL = 36196] = "COMPRESSED_RGB_ETC1_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ATC_WEBGL = 35986] = "COMPRESSED_RGB_ATC_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987] = "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798] = "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ASTC_4x4_KHR = 37808] = "COMPRESSED_RGBA_ASTC_4x4_KHR", INTERNAL_FORMATS2))(INTERNAL_FORMATS || {});
16943
16880
  const INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = {
16944
16881
  // WEBGL_compressed_texture_s3tc
16945
16882
  33776: 0.5,
@@ -16974,7 +16911,7 @@ const INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = {
16974
16911
  // @see https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_ATC_texture.txt
16975
16912
  // WEBGL_compressed_texture_atc
16976
16913
  35986: 0.5,
16977
- 35986: 1,
16914
+ 35987: 1,
16978
16915
  34798: 1,
16979
16916
  // @see https://registry.khronos.org/OpenGL/extensions/KHR/KHR_texture_compression_astc_hdr.txt
16980
16917
  // WEBGL_compressed_texture_astc
@@ -17454,12 +17391,13 @@ extensions$1.add(loadKTX);
17454
17391
  const resolveCompressedTextureUrl = {
17455
17392
  extension: ExtensionType.ResolveParser,
17456
17393
  test: (value) => {
17457
- const extension = value.split("?")[0].split(".").pop();
17394
+ const extension = path.extname(value).slice(1);
17458
17395
  return ["basis", "ktx", "dds"].includes(extension);
17459
17396
  },
17460
17397
  parse: (value) => {
17461
17398
  var _a2, _b, _c, _d;
17462
- if (value.split("?")[0].split(".").pop() === "ktx") {
17399
+ const extension = path.extname(value).slice(1);
17400
+ if (extension === "ktx") {
17463
17401
  const extensions2 = [
17464
17402
  ".s3tc.ktx",
17465
17403
  ".s3tc_sRGB.ktx",
@@ -17478,7 +17416,7 @@ const resolveCompressedTextureUrl = {
17478
17416
  }
17479
17417
  return {
17480
17418
  resolution: parseFloat((_d = (_c = settings.RETINA_PREFIX.exec(value)) == null ? void 0 : _c[1]) != null ? _d : "1"),
17481
- format: value.split(".").pop(),
17419
+ format: extension,
17482
17420
  src: value
17483
17421
  };
17484
17422
  }
@@ -21976,7 +21914,7 @@ const _Spritesheet = class _Spritesheet2 {
21976
21914
  _updateResolution(resolutionFilename = null) {
21977
21915
  const { scale } = this.data.meta;
21978
21916
  let resolution = getResolutionOfUrl(resolutionFilename, null);
21979
- return resolution === null && (resolution = parseFloat(scale != null ? scale : "1")), resolution !== 1 && this.baseTexture.setResolution(resolution), resolution;
21917
+ return resolution === null && (resolution = typeof scale == "number" ? scale : parseFloat(scale != null ? scale : "1")), resolution !== 1 && this.baseTexture.setResolution(resolution), resolution;
21980
21918
  }
21981
21919
  /**
21982
21920
  * Parser spritesheet from loaded data. This is done asynchronously