shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$text_bitmap$BitmapFontManager = function(global, require, module, exports) {
  var tinyLru = require("module$node_modules$tiny_lru$dist$tiny_lru_cjs"), Cache = require("module$node_modules$pixi_DOT_js$lib$assets$cache$Cache"), deprecation = require("module$node_modules$pixi_DOT_js$lib$utils$logging$deprecation"), warn = require("module$node_modules$pixi_DOT_js$lib$utils$logging$warn"), CanvasTextMetrics = require("module$node_modules$pixi_DOT_js$lib$scene$text$canvas$CanvasTextMetrics"), TextStyle = require("module$node_modules$pixi_DOT_js$lib$scene$text$TextStyle"), DynamicBitmapFont = 
  require("module$node_modules$pixi_DOT_js$lib$scene$text_bitmap$DynamicBitmapFont"), getBitmapTextLayout = require("module$node_modules$pixi_DOT_js$lib$scene$text_bitmap$utils$getBitmapTextLayout"), resolveCharacters = require("module$node_modules$pixi_DOT_js$lib$scene$text_bitmap$utils$resolveCharacters");
  "use strict";
  let fontCount = 0;
  class BitmapFontManagerClass {
    constructor() {
      this.ALPHA = [["a", "z"], ["A", "Z"], " "];
      this.NUMERIC = [["0", "9"]];
      this.ALPHANUMERIC = [["a", "z"], ["A", "Z"], ["0", "9"], " "];
      this.ASCII = [[" ", "~"]];
      this.defaultOptions = {chars:this.ALPHANUMERIC, resolution:1, padding:4, skipKerning:!1, textureStyle:null};
      this.measureCache = tinyLru.lru(1e3);
    }
    getFont(text, style) {
      let fontFamilyKey = `${style.fontFamily}-bitmap`;
      var overrideFill = !0;
      if (Cache.Cache.has(fontFamilyKey)) {
        return overrideFill = Cache.Cache.get(fontFamilyKey), overrideFill.ensureCharacters?.(text), overrideFill;
      }
      if (style._fill.fill && !style._stroke) {
        fontFamilyKey += style._fill.fill.styleKey, overrideFill = !1;
      } else if (style._stroke || style.dropShadow) {
        fontFamilyKey = `${style.styleKey}-bitmap`, overrideFill = !1;
      }
      fontFamilyKey += `-${style.fontStyle}`;
      fontFamilyKey += `-${style.fontVariant}`;
      fontFamilyKey += `-${style.fontWeight}`;
      Cache.Cache.has(fontFamilyKey) || (style = Object.create(style), style._lineHeight = 0, overrideFill = new DynamicBitmapFont.DynamicBitmapFont({style, overrideFill, overrideSize:!0, ...this.defaultOptions}), fontCount++, 50 < fontCount && warn.warn("BitmapText", `You have dynamically created ${fontCount} bitmap fonts, this can be inefficient. Try pre installing your font styles using \`BitmapFont.install({name:"style1", style})\``), overrideFill.once("destroy", () => {
        fontCount--;
        Cache.Cache.remove(fontFamilyKey);
      }), Cache.Cache.set(fontFamilyKey, overrideFill));
      overrideFill = Cache.Cache.get(fontFamilyKey);
      overrideFill.ensureCharacters?.(text);
      return overrideFill;
    }
    getLayout(text, style, trimEnd = !0) {
      const bitmapFont = this.getFont(text, style), id = `${text}-${style.styleKey}-${trimEnd}`;
      if (this.measureCache.has(id)) {
        return this.measureCache.get(id);
      }
      text = CanvasTextMetrics.CanvasTextMetrics.graphemeSegmenter(text);
      style = getBitmapTextLayout.getBitmapTextLayout(text, style, bitmapFont, trimEnd);
      this.measureCache.set(id, style);
      return style;
    }
    measureText(text, style, trimEnd = !0) {
      return this.getLayout(text, style, trimEnd);
    }
    install(...args) {
      var options = args[0];
      "string" === typeof options && (options = {name:options, style:args[1], chars:args[2]?.chars, resolution:args[2]?.resolution, padding:args[2]?.padding, skipKerning:args[2]?.skipKerning}, deprecation.deprecation(deprecation.v8_0_0, "BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})"));
      const name = options?.name;
      if (!name) {
        throw Error("[BitmapFontManager] Property `name` is required.");
      }
      options = {...this.defaultOptions, ...options};
      args = options.style;
      args = args instanceof TextStyle.TextStyle ? args : new TextStyle.TextStyle(args);
      const overrideFill = options.dynamicFill ?? this._canUseTintForStyle(args);
      args = new DynamicBitmapFont.DynamicBitmapFont({style:args, overrideFill, skipKerning:options.skipKerning, padding:options.padding, resolution:options.resolution, overrideSize:!1, textureStyle:options.textureStyle});
      options = resolveCharacters.resolveCharacters(options.chars);
      args.ensureCharacters(options.join(""));
      Cache.Cache.set(`${name}-bitmap`, args);
      args.once("destroy", () => Cache.Cache.remove(`${name}-bitmap`));
      return args;
    }
    uninstall(name) {
      (name = Cache.Cache.get(`${name}-bitmap`)) && name.destroy();
    }
    _canUseTintForStyle(style) {
      return !style._stroke && (!style.dropShadow || 0 === style.dropShadow.color) && !style._fill.fill && 16777215 === style._fill.color;
    }
  }
  global = new BitmapFontManagerClass();
  exports.BitmapFontManager = global;
};

//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$text_bitmap$BitmapFontManager.js.map
