shadow$provide.module$node_modules$pixi_DOT_js$lib$spritesheet$Spritesheet = function(global, require, module, exports) {
  var Rectangle = require("module$node_modules$pixi_DOT_js$lib$maths$shapes$Rectangle"), TextureSource = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$sources$TextureSource"), Texture = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$Texture");
  "use strict";
  const node_modules$pixi_DOT_js$lib$spritesheet$Spritesheet$classdecl$var6 = class {
    constructor(optionsOrTexture, arg1) {
      this.linkedSheets = [];
      let options = optionsOrTexture;
      optionsOrTexture?.source instanceof TextureSource.TextureSource && (options = {texture:optionsOrTexture, data:arg1});
      const {texture, data, cachePrefix = ""} = options;
      this.cachePrefix = cachePrefix;
      this._texture = texture instanceof Texture.Texture ? texture : null;
      this.textureSource = texture.source;
      this.textures = {};
      this.animations = {};
      this.data = data;
      (optionsOrTexture = parseFloat(data.meta.scale)) ? (this.resolution = optionsOrTexture, texture.source.resolution = this.resolution) : this.resolution = texture.source._resolution;
      this._frames = this.data.frames;
      this._frameKeys = Object.keys(this._frames);
      this._batchIndex = 0;
      this._callback = null;
    }
    parse() {
      return new Promise(resolve => {
        this._callback = resolve;
        this._batchIndex = 0;
        this._frameKeys.length <= node_modules$pixi_DOT_js$lib$spritesheet$Spritesheet$classdecl$var6.BATCH_SIZE ? (this._processFrames(0), this._processAnimations(), this._parseComplete()) : this._nextBatch();
      });
    }
    parseSync() {
      this._processFrames(0, !0);
      this._processAnimations();
      return this.textures;
    }
    _processFrames(initialFrameIndex, processAll = !1) {
      let frameIndex = initialFrameIndex;
      for (processAll = processAll ? Infinity : node_modules$pixi_DOT_js$lib$spritesheet$Spritesheet$classdecl$var6.BATCH_SIZE; frameIndex - initialFrameIndex < processAll && frameIndex < this._frameKeys.length;) {
        const i = this._frameKeys[frameIndex], data = this._frames[i], rect = data.frame;
        if (rect) {
          var frame = void 0;
          let trim = null;
          frame = !1 !== data.trimmed && data.sourceSize ? data.sourceSize : data.frame;
          const orig = new Rectangle.Rectangle(0, 0, Math.floor(frame.w) / this.resolution, Math.floor(frame.h) / this.resolution);
          frame = data.rotated ? new Rectangle.Rectangle(Math.floor(rect.x) / this.resolution, Math.floor(rect.y) / this.resolution, Math.floor(rect.h) / this.resolution, Math.floor(rect.w) / this.resolution) : new Rectangle.Rectangle(Math.floor(rect.x) / this.resolution, Math.floor(rect.y) / this.resolution, Math.floor(rect.w) / this.resolution, Math.floor(rect.h) / this.resolution);
          !1 !== data.trimmed && data.spriteSourceSize && (trim = new Rectangle.Rectangle(Math.floor(data.spriteSourceSize.x) / this.resolution, Math.floor(data.spriteSourceSize.y) / this.resolution, Math.floor(rect.w) / this.resolution, Math.floor(rect.h) / this.resolution));
          this.textures[i] = new Texture.Texture({source:this.textureSource, frame, orig, trim, rotate:data.rotated ? 2 : 0, defaultAnchor:data.anchor, defaultBorders:data.borders, label:i.toString()});
        }
        frameIndex++;
      }
    }
    _processAnimations() {
      const animations = this.data.animations || {};
      for (const animName in animations) {
        this.animations[animName] = [];
        for (let i = 0; i < animations[animName].length; i++) {
          this.animations[animName].push(this.textures[animations[animName][i]]);
        }
      }
    }
    _parseComplete() {
      const callback = this._callback;
      this._callback = null;
      this._batchIndex = 0;
      callback.call(this, this.textures);
    }
    _nextBatch() {
      this._processFrames(this._batchIndex * node_modules$pixi_DOT_js$lib$spritesheet$Spritesheet$classdecl$var6.BATCH_SIZE);
      this._batchIndex++;
      setTimeout(() => {
        this._batchIndex * node_modules$pixi_DOT_js$lib$spritesheet$Spritesheet$classdecl$var6.BATCH_SIZE < this._frameKeys.length ? this._nextBatch() : (this._processAnimations(), this._parseComplete());
      }, 0);
    }
    destroy(destroyBase = !1) {
      for (const i in this.textures) {
        this.textures[i].destroy();
      }
      this.textures = this.data = this._frameKeys = this._frames = null;
      destroyBase && (this._texture?.destroy(), this.textureSource.destroy());
      this.textureSource = this._texture = null;
      this.linkedSheets = [];
    }
  };
  global = node_modules$pixi_DOT_js$lib$spritesheet$Spritesheet$classdecl$var6;
  global.BATCH_SIZE = 1e3;
  exports.Spritesheet = global;
};

//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$spritesheet$Spritesheet.js.map
