shadow$provide.module$node_modules$pixi_DOT_js$lib$dom$CanvasObserver = function(global, require, module, exports) {
  var _const = require("module$node_modules$pixi_DOT_js$lib$ticker$const"), Ticker = require("module$node_modules$pixi_DOT_js$lib$ticker$Ticker");
  "use strict";
  class CanvasObserver {
    constructor(options) {
      this._lastTransform = "";
      this._observer = null;
      this._tickerAttached = !1;
      this.updateTranslation = () => {
        if (this._canvas) {
          var rect = this._canvas.getBoundingClientRect();
          rect = `translate(${rect.left}px, ${rect.top}px) scale(${rect.width / this._canvas.width * this._renderer.resolution}, ${rect.height / this._canvas.height * this._renderer.resolution})`;
          rect !== this._lastTransform && (this._lastTransform = this._domElement.style.transform = rect);
        }
      };
      this._domElement = options.domElement;
      this._renderer = options.renderer;
      globalThis.OffscreenCanvas && this._renderer.canvas instanceof OffscreenCanvas || (this._canvas = this._renderer.canvas, this._attachObserver());
    }
    get canvas() {
      return this._canvas;
    }
    ensureAttached() {
      !this._domElement.parentNode && this._canvas.parentNode && (this._canvas.parentNode.appendChild(this._domElement), this.updateTranslation());
    }
    _attachObserver() {
      "ResizeObserver" in globalThis ? (this._observer && (this._observer.disconnect(), this._observer = null), this._observer = new ResizeObserver(entries => {
        for (const entry of entries) {
          if (entry.target !== this._canvas) {
            continue;
          }
          entries = entry.contentRect.width / this.canvas.width * this._renderer.resolution;
          const sy = entry.contentRect.height / this.canvas.height * this._renderer.resolution;
          if (this._lastScaleX !== entries || this._lastScaleY !== sy) {
            this.updateTranslation(), this._lastScaleX = entries, this._lastScaleY = sy;
          }
        }
      }), this._observer.observe(this._canvas)) : this._tickerAttached || Ticker.Ticker.shared.add(this.updateTranslation, this, _const.UPDATE_PRIORITY.HIGH);
    }
    destroy() {
      this._observer ? (this._observer.disconnect(), this._observer = null) : this._tickerAttached && Ticker.Ticker.shared.remove(this.updateTranslation);
      this._canvas = this._renderer = this._domElement = null;
      this._tickerAttached = !1;
      this._lastTransform = "";
      this._lastScaleY = this._lastScaleX = null;
    }
  }
  exports.CanvasObserver = CanvasObserver;
};

//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$dom$CanvasObserver.js.map
