[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/build/routes/font-list/ -> content.js (source)

   1  var __create = Object.create;
   2  var __defProp = Object.defineProperty;
   3  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
   4  var __getOwnPropNames = Object.getOwnPropertyNames;
   5  var __getProtoOf = Object.getPrototypeOf;
   6  var __hasOwnProp = Object.prototype.hasOwnProperty;
   7  var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, {
   8    get: (a2, b2) => (typeof require !== "undefined" ? require : a2)[b2]
   9  }) : x2)(function(x2) {
  10    if (typeof require !== "undefined") return require.apply(this, arguments);
  11    throw Error('Dynamic require of "' + x2 + '" is not supported');
  12  });
  13  var __commonJS = (cb, mod) => function __require4() {
  14    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  15  };
  16  var __copyProps = (to, from, except, desc) => {
  17    if (from && typeof from === "object" || typeof from === "function") {
  18      for (let key of __getOwnPropNames(from))
  19        if (!__hasOwnProp.call(to, key) && key !== except)
  20          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  21    }
  22    return to;
  23  };
  24  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  25    // If the importer is in node compatibility mode or this is not an ESM
  26    // file that has been converted to a CommonJS file using a Babel-
  27    // compatible transform (i.e. "__esModule" has not been set), then set
  28    // "default" to the CommonJS "module.exports" for node compatibility.
  29    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  30    mod
  31  ));
  32  
  33  // package-external:@wordpress/i18n
  34  var require_i18n = __commonJS({
  35    "package-external:@wordpress/i18n"(exports, module) {
  36      module.exports = window.wp.i18n;
  37    }
  38  });
  39  
  40  // package-external:@wordpress/components
  41  var require_components = __commonJS({
  42    "package-external:@wordpress/components"(exports, module) {
  43      module.exports = window.wp.components;
  44    }
  45  });
  46  
  47  // vendor-external:react/jsx-runtime
  48  var require_jsx_runtime = __commonJS({
  49    "vendor-external:react/jsx-runtime"(exports, module) {
  50      module.exports = window.ReactJSXRuntime;
  51    }
  52  });
  53  
  54  // package-external:@wordpress/element
  55  var require_element = __commonJS({
  56    "package-external:@wordpress/element"(exports, module) {
  57      module.exports = window.wp.element;
  58    }
  59  });
  60  
  61  // package-external:@wordpress/editor
  62  var require_editor = __commonJS({
  63    "package-external:@wordpress/editor"(exports, module) {
  64      module.exports = window.wp.editor;
  65    }
  66  });
  67  
  68  // package-external:@wordpress/core-data
  69  var require_core_data = __commonJS({
  70    "package-external:@wordpress/core-data"(exports, module) {
  71      module.exports = window.wp.coreData;
  72    }
  73  });
  74  
  75  // package-external:@wordpress/data
  76  var require_data = __commonJS({
  77    "package-external:@wordpress/data"(exports, module) {
  78      module.exports = window.wp.data;
  79    }
  80  });
  81  
  82  // package-external:@wordpress/blocks
  83  var require_blocks = __commonJS({
  84    "package-external:@wordpress/blocks"(exports, module) {
  85      module.exports = window.wp.blocks;
  86    }
  87  });
  88  
  89  // package-external:@wordpress/block-editor
  90  var require_block_editor = __commonJS({
  91    "package-external:@wordpress/block-editor"(exports, module) {
  92      module.exports = window.wp.blockEditor;
  93    }
  94  });
  95  
  96  // package-external:@wordpress/compose
  97  var require_compose = __commonJS({
  98    "package-external:@wordpress/compose"(exports, module) {
  99      module.exports = window.wp.compose;
 100    }
 101  });
 102  
 103  // package-external:@wordpress/style-engine
 104  var require_style_engine = __commonJS({
 105    "package-external:@wordpress/style-engine"(exports, module) {
 106      module.exports = window.wp.styleEngine;
 107    }
 108  });
 109  
 110  // node_modules/fast-deep-equal/es6/index.js
 111  var require_es6 = __commonJS({
 112    "node_modules/fast-deep-equal/es6/index.js"(exports, module) {
 113      "use strict";
 114      module.exports = function equal(a2, b2) {
 115        if (a2 === b2) return true;
 116        if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") {
 117          if (a2.constructor !== b2.constructor) return false;
 118          var length, i2, keys;
 119          if (Array.isArray(a2)) {
 120            length = a2.length;
 121            if (length != b2.length) return false;
 122            for (i2 = length; i2-- !== 0; )
 123              if (!equal(a2[i2], b2[i2])) return false;
 124            return true;
 125          }
 126          if (a2 instanceof Map && b2 instanceof Map) {
 127            if (a2.size !== b2.size) return false;
 128            for (i2 of a2.entries())
 129              if (!b2.has(i2[0])) return false;
 130            for (i2 of a2.entries())
 131              if (!equal(i2[1], b2.get(i2[0]))) return false;
 132            return true;
 133          }
 134          if (a2 instanceof Set && b2 instanceof Set) {
 135            if (a2.size !== b2.size) return false;
 136            for (i2 of a2.entries())
 137              if (!b2.has(i2[0])) return false;
 138            return true;
 139          }
 140          if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) {
 141            length = a2.length;
 142            if (length != b2.length) return false;
 143            for (i2 = length; i2-- !== 0; )
 144              if (a2[i2] !== b2[i2]) return false;
 145            return true;
 146          }
 147          if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags;
 148          if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf();
 149          if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString();
 150          keys = Object.keys(a2);
 151          length = keys.length;
 152          if (length !== Object.keys(b2).length) return false;
 153          for (i2 = length; i2-- !== 0; )
 154            if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false;
 155          for (i2 = length; i2-- !== 0; ) {
 156            var key = keys[i2];
 157            if (!equal(a2[key], b2[key])) return false;
 158          }
 159          return true;
 160        }
 161        return a2 !== a2 && b2 !== b2;
 162      };
 163    }
 164  });
 165  
 166  // node_modules/deepmerge/dist/cjs.js
 167  var require_cjs = __commonJS({
 168    "node_modules/deepmerge/dist/cjs.js"(exports, module) {
 169      "use strict";
 170      var isMergeableObject = function isMergeableObject2(value) {
 171        return isNonNullObject(value) && !isSpecial(value);
 172      };
 173      function isNonNullObject(value) {
 174        return !!value && typeof value === "object";
 175      }
 176      function isSpecial(value) {
 177        var stringValue = Object.prototype.toString.call(value);
 178        return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value);
 179      }
 180      var canUseSymbol = typeof Symbol === "function" && Symbol.for;
 181      var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103;
 182      function isReactElement(value) {
 183        return value.$$typeof === REACT_ELEMENT_TYPE;
 184      }
 185      function emptyTarget(val) {
 186        return Array.isArray(val) ? [] : {};
 187      }
 188      function cloneUnlessOtherwiseSpecified(value, options) {
 189        return options.clone !== false && options.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options) : value;
 190      }
 191      function defaultArrayMerge(target, source, options) {
 192        return target.concat(source).map(function(element) {
 193          return cloneUnlessOtherwiseSpecified(element, options);
 194        });
 195      }
 196      function getMergeFunction(key, options) {
 197        if (!options.customMerge) {
 198          return deepmerge2;
 199        }
 200        var customMerge = options.customMerge(key);
 201        return typeof customMerge === "function" ? customMerge : deepmerge2;
 202      }
 203      function getEnumerableOwnPropertySymbols(target) {
 204        return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
 205          return Object.propertyIsEnumerable.call(target, symbol);
 206        }) : [];
 207      }
 208      function getKeys(target) {
 209        return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));
 210      }
 211      function propertyIsOnObject(object, property) {
 212        try {
 213          return property in object;
 214        } catch (_) {
 215          return false;
 216        }
 217      }
 218      function propertyIsUnsafe(target, key) {
 219        return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key));
 220      }
 221      function mergeObject(target, source, options) {
 222        var destination = {};
 223        if (options.isMergeableObject(target)) {
 224          getKeys(target).forEach(function(key) {
 225            destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
 226          });
 227        }
 228        getKeys(source).forEach(function(key) {
 229          if (propertyIsUnsafe(target, key)) {
 230            return;
 231          }
 232          if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
 233            destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
 234          } else {
 235            destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
 236          }
 237        });
 238        return destination;
 239      }
 240      function deepmerge2(target, source, options) {
 241        options = options || {};
 242        options.arrayMerge = options.arrayMerge || defaultArrayMerge;
 243        options.isMergeableObject = options.isMergeableObject || isMergeableObject;
 244        options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
 245        var sourceIsArray = Array.isArray(source);
 246        var targetIsArray = Array.isArray(target);
 247        var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
 248        if (!sourceAndTargetTypesMatch) {
 249          return cloneUnlessOtherwiseSpecified(source, options);
 250        } else if (sourceIsArray) {
 251          return options.arrayMerge(target, source, options);
 252        } else {
 253          return mergeObject(target, source, options);
 254        }
 255      }
 256      deepmerge2.all = function deepmergeAll(array, options) {
 257        if (!Array.isArray(array)) {
 258          throw new Error("first argument should be an array");
 259        }
 260        return array.reduce(function(prev, next) {
 261          return deepmerge2(prev, next, options);
 262        }, {});
 263      };
 264      var deepmerge_1 = deepmerge2;
 265      module.exports = deepmerge_1;
 266    }
 267  });
 268  
 269  // package-external:@wordpress/primitives
 270  var require_primitives = __commonJS({
 271    "package-external:@wordpress/primitives"(exports, module) {
 272      module.exports = window.wp.primitives;
 273    }
 274  });
 275  
 276  // package-external:@wordpress/private-apis
 277  var require_private_apis = __commonJS({
 278    "package-external:@wordpress/private-apis"(exports, module) {
 279      module.exports = window.wp.privateApis;
 280    }
 281  });
 282  
 283  // package-external:@wordpress/keycodes
 284  var require_keycodes = __commonJS({
 285    "package-external:@wordpress/keycodes"(exports, module) {
 286      module.exports = window.wp.keycodes;
 287    }
 288  });
 289  
 290  // package-external:@wordpress/api-fetch
 291  var require_api_fetch = __commonJS({
 292    "package-external:@wordpress/api-fetch"(exports, module) {
 293      module.exports = window.wp.apiFetch;
 294    }
 295  });
 296  
 297  // package-external:@wordpress/date
 298  var require_date = __commonJS({
 299    "package-external:@wordpress/date"(exports, module) {
 300      module.exports = window.wp.date;
 301    }
 302  });
 303  
 304  // node_modules/clsx/dist/clsx.mjs
 305  function r(e2) {
 306    var t3, f2, n2 = "";
 307    if ("string" == typeof e2 || "number" == typeof e2) n2 += e2;
 308    else if ("object" == typeof e2) if (Array.isArray(e2)) {
 309      var o3 = e2.length;
 310      for (t3 = 0; t3 < o3; t3++) e2[t3] && (f2 = r(e2[t3])) && (n2 && (n2 += " "), n2 += f2);
 311    } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2);
 312    return n2;
 313  }
 314  function clsx() {
 315    for (var e2, t3, f2 = 0, n2 = "", o3 = arguments.length; f2 < o3; f2++) (e2 = arguments[f2]) && (t3 = r(e2)) && (n2 && (n2 += " "), n2 += t3);
 316    return n2;
 317  }
 318  var clsx_default = clsx;
 319  
 320  // packages/admin-ui/build-module/navigable-region/index.js
 321  var import_element = __toESM(require_element());
 322  var import_jsx_runtime = __toESM(require_jsx_runtime());
 323  var NavigableRegion = (0, import_element.forwardRef)(
 324    ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => {
 325      return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
 326        Tag,
 327        {
 328          ref,
 329          className: clsx_default("admin-ui-navigable-region", className),
 330          "aria-label": ariaLabel,
 331          role: "region",
 332          tabIndex: "-1",
 333          ...props,
 334          children
 335        }
 336      );
 337    }
 338  );
 339  NavigableRegion.displayName = "NavigableRegion";
 340  var navigable_region_default = NavigableRegion;
 341  
 342  // packages/admin-ui/build-module/page/header.js
 343  var import_components2 = __toESM(require_components());
 344  
 345  // packages/admin-ui/build-module/page/sidebar-toggle-slot.js
 346  var import_components = __toESM(require_components());
 347  var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle");
 348  
 349  // packages/admin-ui/build-module/page/header.js
 350  var import_jsx_runtime2 = __toESM(require_jsx_runtime());
 351  function Header({
 352    breadcrumbs,
 353    badges,
 354    title,
 355    subTitle,
 356    actions,
 357    showSidebarToggle = true
 358  }) {
 359    return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_components2.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [
 360      /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_components2.__experimentalHStack, { justify: "space-between", spacing: 2, children: [
 361        /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_components2.__experimentalHStack, { spacing: 2, justify: "left", children: [
 362          showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
 363            SidebarToggleSlot,
 364            {
 365              bubblesVirtually: true,
 366              className: "admin-ui-page__sidebar-toggle-slot"
 367            }
 368          ),
 369          title && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_components2.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }),
 370          breadcrumbs,
 371          badges
 372        ] }),
 373        /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
 374          import_components2.__experimentalHStack,
 375          {
 376            style: { width: "auto", flexShrink: 0 },
 377            spacing: 2,
 378            className: "admin-ui-page__header-actions",
 379            children: actions
 380          }
 381        )
 382      ] }),
 383      subTitle && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle })
 384    ] });
 385  }
 386  
 387  // packages/admin-ui/build-module/page/index.js
 388  var import_jsx_runtime3 = __toESM(require_jsx_runtime());
 389  function Page({
 390    breadcrumbs,
 391    badges,
 392    title,
 393    subTitle,
 394    children,
 395    className,
 396    actions,
 397    hasPadding = false,
 398    showSidebarToggle = true
 399  }) {
 400    const classes = clsx_default("admin-ui-page", className);
 401    return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [
 402      (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
 403        Header,
 404        {
 405          breadcrumbs,
 406          badges,
 407          title,
 408          subTitle,
 409          actions,
 410          showSidebarToggle
 411        }
 412      ),
 413      hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children
 414    ] });
 415  }
 416  Page.SidebarToggleFill = SidebarToggleFill;
 417  var page_default = Page;
 418  
 419  // routes/font-list/stage.tsx
 420  var import_i18n46 = __toESM(require_i18n());
 421  var import_components63 = __toESM(require_components());
 422  var import_editor = __toESM(require_editor());
 423  var import_core_data12 = __toESM(require_core_data());
 424  var import_data13 = __toESM(require_data());
 425  var import_element34 = __toESM(require_element());
 426  
 427  // packages/global-styles-ui/build-module/global-styles-ui.js
 428  var import_components62 = __toESM(require_components());
 429  var import_blocks5 = __toESM(require_blocks());
 430  var import_data12 = __toESM(require_data());
 431  var import_block_editor13 = __toESM(require_block_editor());
 432  var import_element33 = __toESM(require_element());
 433  var import_compose6 = __toESM(require_compose());
 434  
 435  // packages/global-styles-engine/build-module/utils/object.js
 436  function setImmutably(object, path, value) {
 437    path = Array.isArray(path) ? [...path] : [path];
 438    object = Array.isArray(object) ? [...object] : { ...object };
 439    const leaf = path.pop();
 440    let prev = object;
 441    for (const key of path) {
 442      const lvl = prev[key];
 443      prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl };
 444    }
 445    prev[leaf] = value;
 446    return object;
 447  }
 448  var getValueFromObjectPath = (object, path, defaultValue) => {
 449    const arrayPath = Array.isArray(path) ? path : path.split(".");
 450    let value = object;
 451    arrayPath.forEach((fieldName) => {
 452      value = value?.[fieldName];
 453    });
 454    return value ?? defaultValue;
 455  };
 456  
 457  // packages/global-styles-engine/build-module/settings/get-setting.js
 458  var VALID_SETTINGS = [
 459    "appearanceTools",
 460    "useRootPaddingAwareAlignments",
 461    "background.backgroundImage",
 462    "background.backgroundRepeat",
 463    "background.backgroundSize",
 464    "background.backgroundPosition",
 465    "border.color",
 466    "border.radius",
 467    "border.radiusSizes",
 468    "border.style",
 469    "border.width",
 470    "shadow.presets",
 471    "shadow.defaultPresets",
 472    "color.background",
 473    "color.button",
 474    "color.caption",
 475    "color.custom",
 476    "color.customDuotone",
 477    "color.customGradient",
 478    "color.defaultDuotone",
 479    "color.defaultGradients",
 480    "color.defaultPalette",
 481    "color.duotone",
 482    "color.gradients",
 483    "color.heading",
 484    "color.link",
 485    "color.palette",
 486    "color.text",
 487    "custom",
 488    "dimensions.aspectRatio",
 489    "dimensions.height",
 490    "dimensions.minHeight",
 491    "dimensions.width",
 492    "dimensions.dimensionSizes",
 493    "layout.contentSize",
 494    "layout.definitions",
 495    "layout.wideSize",
 496    "lightbox.enabled",
 497    "lightbox.allowEditing",
 498    "position.fixed",
 499    "position.sticky",
 500    "spacing.customSpacingSize",
 501    "spacing.defaultSpacingSizes",
 502    "spacing.spacingSizes",
 503    "spacing.spacingScale",
 504    "spacing.blockGap",
 505    "spacing.margin",
 506    "spacing.padding",
 507    "spacing.units",
 508    "typography.fluid",
 509    "typography.customFontSize",
 510    "typography.defaultFontSizes",
 511    "typography.dropCap",
 512    "typography.fontFamilies",
 513    "typography.fontSizes",
 514    "typography.fontStyle",
 515    "typography.fontWeight",
 516    "typography.letterSpacing",
 517    "typography.lineHeight",
 518    "typography.textAlign",
 519    "typography.textColumns",
 520    "typography.textDecoration",
 521    "typography.textTransform",
 522    "typography.writingMode"
 523  ];
 524  function getSetting(globalStyles, path, blockName) {
 525    const appendedBlockPath = blockName ? ".blocks." + blockName : "";
 526    const appendedPropertyPath = path ? "." + path : "";
 527    const contextualPath = `settings$appendedBlockPath}$appendedPropertyPath}`;
 528    const globalPath = `settings$appendedPropertyPath}`;
 529    if (path) {
 530      return getValueFromObjectPath(globalStyles, contextualPath) ?? getValueFromObjectPath(globalStyles, globalPath);
 531    }
 532    let result = {};
 533    VALID_SETTINGS.forEach((setting) => {
 534      const value = getValueFromObjectPath(
 535        globalStyles,
 536        `settings$appendedBlockPath}.$setting}`
 537      ) ?? getValueFromObjectPath(globalStyles, `settings.$setting}`);
 538      if (value !== void 0) {
 539        result = setImmutably(result, setting.split("."), value);
 540      }
 541    });
 542    return result;
 543  }
 544  
 545  // packages/global-styles-engine/build-module/settings/set-setting.js
 546  function setSetting(globalStyles, path, newValue, blockName) {
 547    const appendedBlockPath = blockName ? ".blocks." + blockName : "";
 548    const appendedPropertyPath = path ? "." + path : "";
 549    const finalPath = `settings$appendedBlockPath}$appendedPropertyPath}`;
 550    return setImmutably(
 551      globalStyles,
 552      finalPath.split("."),
 553      newValue
 554    );
 555  }
 556  
 557  // packages/global-styles-engine/build-module/utils/common.js
 558  var import_style_engine = __toESM(require_style_engine());
 559  
 560  // packages/global-styles-engine/build-module/utils/fluid.js
 561  var DEFAULT_MAXIMUM_VIEWPORT_WIDTH = "1600px";
 562  var DEFAULT_MINIMUM_VIEWPORT_WIDTH = "320px";
 563  var DEFAULT_SCALE_FACTOR = 1;
 564  var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN = 0.25;
 565  var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX = 0.75;
 566  var DEFAULT_MINIMUM_FONT_SIZE_LIMIT = "14px";
 567  function getComputedFluidTypographyValue({
 568    minimumFontSize,
 569    maximumFontSize,
 570    fontSize,
 571    minimumViewportWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH,
 572    maximumViewportWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH,
 573    scaleFactor = DEFAULT_SCALE_FACTOR,
 574    minimumFontSizeLimit
 575  }) {
 576    minimumFontSizeLimit = !!getTypographyValueAndUnit(minimumFontSizeLimit) ? minimumFontSizeLimit : DEFAULT_MINIMUM_FONT_SIZE_LIMIT;
 577    if (fontSize) {
 578      const fontSizeParsed = getTypographyValueAndUnit(fontSize);
 579      if (!fontSizeParsed?.unit || !fontSizeParsed?.value) {
 580        return null;
 581      }
 582      const minimumFontSizeLimitParsed = getTypographyValueAndUnit(
 583        minimumFontSizeLimit,
 584        {
 585          coerceTo: fontSizeParsed.unit
 586        }
 587      );
 588      if (!!minimumFontSizeLimitParsed?.value && !minimumFontSize && !maximumFontSize) {
 589        if (fontSizeParsed?.value <= minimumFontSizeLimitParsed?.value) {
 590          return null;
 591        }
 592      }
 593      if (!maximumFontSize) {
 594        maximumFontSize = `$fontSizeParsed.value}$fontSizeParsed.unit}`;
 595      }
 596      if (!minimumFontSize) {
 597        const fontSizeValueInPx = fontSizeParsed.unit === "px" ? fontSizeParsed.value : fontSizeParsed.value * 16;
 598        const minimumFontSizeFactor = Math.min(
 599          Math.max(
 600            1 - 0.075 * Math.log2(fontSizeValueInPx),
 601            DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN
 602          ),
 603          DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX
 604        );
 605        const calculatedMinimumFontSize = roundToPrecision(
 606          fontSizeParsed.value * minimumFontSizeFactor,
 607          3
 608        );
 609        if (!!minimumFontSizeLimitParsed?.value && calculatedMinimumFontSize < minimumFontSizeLimitParsed?.value) {
 610          minimumFontSize = `$minimumFontSizeLimitParsed.value}$minimumFontSizeLimitParsed.unit}`;
 611        } else {
 612          minimumFontSize = `$calculatedMinimumFontSize}$fontSizeParsed.unit}`;
 613        }
 614      }
 615    }
 616    const minimumFontSizeParsed = getTypographyValueAndUnit(minimumFontSize);
 617    const fontSizeUnit = minimumFontSizeParsed?.unit || "rem";
 618    const maximumFontSizeParsed = getTypographyValueAndUnit(maximumFontSize, {
 619      coerceTo: fontSizeUnit
 620    });
 621    if (!minimumFontSizeParsed || !maximumFontSizeParsed) {
 622      return null;
 623    }
 624    const minimumFontSizeRem = getTypographyValueAndUnit(minimumFontSize, {
 625      coerceTo: "rem"
 626    });
 627    const maximumViewportWidthParsed = getTypographyValueAndUnit(
 628      maximumViewportWidth,
 629      { coerceTo: fontSizeUnit }
 630    );
 631    const minimumViewportWidthParsed = getTypographyValueAndUnit(
 632      minimumViewportWidth,
 633      { coerceTo: fontSizeUnit }
 634    );
 635    if (!maximumViewportWidthParsed || !minimumViewportWidthParsed || !minimumFontSizeRem) {
 636      return null;
 637    }
 638    const linearDenominator = maximumViewportWidthParsed.value - minimumViewportWidthParsed.value;
 639    if (!linearDenominator) {
 640      return null;
 641    }
 642    const minViewportWidthOffsetValue = roundToPrecision(
 643      minimumViewportWidthParsed.value / 100,
 644      3
 645    );
 646    const viewportWidthOffset = roundToPrecision(minViewportWidthOffsetValue, 3) + fontSizeUnit;
 647    const linearFactor = 100 * ((maximumFontSizeParsed.value - minimumFontSizeParsed.value) / linearDenominator);
 648    const linearFactorScaled = roundToPrecision(
 649      (linearFactor || 1) * scaleFactor,
 650      3
 651    );
 652    const fluidTargetFontSize = `$minimumFontSizeRem.value}$minimumFontSizeRem.unit} + ((1vw - $viewportWidthOffset}) * $linearFactorScaled})`;
 653    return `clamp($minimumFontSize}, $fluidTargetFontSize}, $maximumFontSize})`;
 654  }
 655  function getTypographyValueAndUnit(rawValue, options = {}) {
 656    if (typeof rawValue !== "string" && typeof rawValue !== "number") {
 657      return null;
 658    }
 659    if (isFinite(rawValue)) {
 660      rawValue = `$rawValue}px`;
 661    }
 662    const { coerceTo, rootSizeValue, acceptableUnits } = {
 663      coerceTo: "",
 664      // Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( "html" ) ).fontSize`.
 665      rootSizeValue: 16,
 666      acceptableUnits: ["rem", "px", "em"],
 667      ...options
 668    };
 669    const acceptableUnitsGroup = acceptableUnits?.join("|");
 670    const regexUnits = new RegExp(
 671      `^(\\d*\\.?\\d+)($acceptableUnitsGroup}){1,1}$`
 672    );
 673    const matches = rawValue.toString().match(regexUnits);
 674    if (!matches || matches.length < 3) {
 675      return null;
 676    }
 677    let [, value, unit] = matches;
 678    let returnValue = parseFloat(value);
 679    if ("px" === coerceTo && ("em" === unit || "rem" === unit)) {
 680      returnValue = returnValue * rootSizeValue;
 681      unit = coerceTo;
 682    }
 683    if ("px" === unit && ("em" === coerceTo || "rem" === coerceTo)) {
 684      returnValue = returnValue / rootSizeValue;
 685      unit = coerceTo;
 686    }
 687    if (("em" === coerceTo || "rem" === coerceTo) && ("em" === unit || "rem" === unit)) {
 688      unit = coerceTo;
 689    }
 690    if (!unit) {
 691      return null;
 692    }
 693    return {
 694      value: roundToPrecision(returnValue, 3),
 695      unit
 696    };
 697  }
 698  function roundToPrecision(value, digits = 3) {
 699    const base = Math.pow(10, digits);
 700    return Math.round(value * base) / base;
 701  }
 702  
 703  // packages/global-styles-engine/build-module/utils/typography.js
 704  function isFluidTypographyEnabled(typographySettings) {
 705    const fluidSettings = typographySettings?.fluid;
 706    return true === fluidSettings || fluidSettings && typeof fluidSettings === "object" && Object.keys(fluidSettings).length > 0;
 707  }
 708  function getFluidTypographyOptionsFromSettings(settings) {
 709    const typographySettings = settings?.typography ?? {};
 710    const layoutSettings = settings?.layout;
 711    const defaultMaxViewportWidth = getTypographyValueAndUnit(
 712      layoutSettings?.wideSize
 713    ) ? layoutSettings?.wideSize : null;
 714    return isFluidTypographyEnabled(typographySettings) && defaultMaxViewportWidth ? {
 715      fluid: {
 716        maxViewportWidth: defaultMaxViewportWidth,
 717        ...typeof typographySettings.fluid === "object" ? typographySettings.fluid : {}
 718      }
 719    } : {
 720      fluid: typographySettings?.fluid
 721    };
 722  }
 723  function getTypographyFontSizeValue(preset, settings) {
 724    const { size: defaultSize } = preset;
 725    if (!defaultSize || "0" === defaultSize || false === preset?.fluid) {
 726      return defaultSize;
 727    }
 728    if (!isFluidTypographyEnabled(settings?.typography) && !isFluidTypographyEnabled(preset)) {
 729      return defaultSize;
 730    }
 731    const fluidTypographySettings = getFluidTypographyOptionsFromSettings(settings)?.fluid ?? {};
 732    const fluidFontSizeValue = getComputedFluidTypographyValue({
 733      minimumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.min,
 734      maximumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.max,
 735      fontSize: defaultSize,
 736      minimumFontSizeLimit: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minFontSize : void 0,
 737      maximumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.maxViewportWidth : void 0,
 738      minimumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minViewportWidth : void 0
 739    });
 740    if (!!fluidFontSizeValue) {
 741      return fluidFontSizeValue;
 742    }
 743    return defaultSize;
 744  }
 745  
 746  // packages/global-styles-engine/build-module/utils/common.js
 747  var PRESET_METADATA = [
 748    {
 749      path: ["color", "palette"],
 750      valueKey: "color",
 751      cssVarInfix: "color",
 752      classes: [
 753        { classSuffix: "color", propertyName: "color" },
 754        {
 755          classSuffix: "background-color",
 756          propertyName: "background-color"
 757        },
 758        {
 759          classSuffix: "border-color",
 760          propertyName: "border-color"
 761        }
 762      ]
 763    },
 764    {
 765      path: ["color", "gradients"],
 766      valueKey: "gradient",
 767      cssVarInfix: "gradient",
 768      classes: [
 769        {
 770          classSuffix: "gradient-background",
 771          propertyName: "background"
 772        }
 773      ]
 774    },
 775    {
 776      path: ["color", "duotone"],
 777      valueKey: "colors",
 778      cssVarInfix: "duotone",
 779      valueFunc: ({ slug }) => `url( '#wp-duotone-$slug}' )`,
 780      classes: []
 781    },
 782    {
 783      path: ["shadow", "presets"],
 784      valueKey: "shadow",
 785      cssVarInfix: "shadow",
 786      classes: []
 787    },
 788    {
 789      path: ["typography", "fontSizes"],
 790      valueFunc: (preset, settings) => getTypographyFontSizeValue(preset, settings),
 791      valueKey: "size",
 792      cssVarInfix: "font-size",
 793      classes: [{ classSuffix: "font-size", propertyName: "font-size" }]
 794    },
 795    {
 796      path: ["typography", "fontFamilies"],
 797      valueKey: "fontFamily",
 798      cssVarInfix: "font-family",
 799      classes: [
 800        { classSuffix: "font-family", propertyName: "font-family" }
 801      ]
 802    },
 803    {
 804      path: ["spacing", "spacingSizes"],
 805      valueKey: "size",
 806      cssVarInfix: "spacing",
 807      valueFunc: ({ size }) => size,
 808      classes: []
 809    },
 810    {
 811      path: ["border", "radiusSizes"],
 812      valueKey: "size",
 813      cssVarInfix: "border-radius",
 814      classes: []
 815    },
 816    {
 817      path: ["dimensions", "dimensionSizes"],
 818      valueKey: "size",
 819      cssVarInfix: "dimension",
 820      classes: []
 821    }
 822  ];
 823  function findInPresetsBy(settings, blockName, presetPath = [], presetProperty = "slug", presetValueValue) {
 824    const orderedPresetsByOrigin = [
 825      blockName ? getValueFromObjectPath(settings, [
 826        "blocks",
 827        blockName,
 828        ...presetPath
 829      ]) : void 0,
 830      getValueFromObjectPath(settings, presetPath)
 831    ].filter(Boolean);
 832    for (const presetByOrigin of orderedPresetsByOrigin) {
 833      if (presetByOrigin) {
 834        const origins = ["custom", "theme", "default"];
 835        for (const origin of origins) {
 836          const presets = presetByOrigin[origin];
 837          if (presets) {
 838            const presetObject = presets.find(
 839              (preset) => preset[presetProperty] === presetValueValue
 840            );
 841            if (presetObject) {
 842              if (presetProperty === "slug") {
 843                return presetObject;
 844              }
 845              const highestPresetObjectWithSameSlug = findInPresetsBy(
 846                settings,
 847                blockName,
 848                presetPath,
 849                "slug",
 850                presetObject.slug
 851              );
 852              if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) {
 853                return presetObject;
 854              }
 855              return void 0;
 856            }
 857          }
 858        }
 859      }
 860    }
 861  }
 862  function getValueFromPresetVariable(features, blockName, variable, [presetType, slug] = []) {
 863    const metadata = PRESET_METADATA.find(
 864      (data) => data.cssVarInfix === presetType
 865    );
 866    if (!metadata || !features.settings) {
 867      return variable;
 868    }
 869    const presetObject = findInPresetsBy(
 870      features.settings,
 871      blockName,
 872      metadata.path,
 873      "slug",
 874      slug
 875    );
 876    if (presetObject) {
 877      const { valueKey } = metadata;
 878      const result = presetObject[valueKey];
 879      return getValueFromVariable(features, blockName, result);
 880    }
 881    return variable;
 882  }
 883  function getValueFromCustomVariable(features, blockName, variable, path = []) {
 884    const result = (blockName ? getValueFromObjectPath(features?.settings ?? {}, [
 885      "blocks",
 886      blockName,
 887      "custom",
 888      ...path
 889    ]) : void 0) ?? getValueFromObjectPath(features?.settings ?? {}, [
 890      "custom",
 891      ...path
 892    ]);
 893    if (!result) {
 894      return variable;
 895    }
 896    return getValueFromVariable(features, blockName, result);
 897  }
 898  function getValueFromVariable(features, blockName, variable) {
 899    if (!variable || typeof variable !== "string") {
 900      if (typeof variable === "object" && variable !== null && "ref" in variable && typeof variable.ref === "string") {
 901        const resolvedVariable = getValueFromObjectPath(
 902          features,
 903          variable.ref
 904        );
 905        if (!resolvedVariable || typeof resolvedVariable === "object" && "ref" in resolvedVariable) {
 906          return resolvedVariable;
 907        }
 908        variable = resolvedVariable;
 909      } else {
 910        return variable;
 911      }
 912    }
 913    const USER_VALUE_PREFIX = "var:";
 914    const THEME_VALUE_PREFIX = "var(--wp--";
 915    const THEME_VALUE_SUFFIX = ")";
 916    let parsedVar;
 917    if (variable.startsWith(USER_VALUE_PREFIX)) {
 918      parsedVar = variable.slice(USER_VALUE_PREFIX.length).split("|");
 919    } else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) {
 920      parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split("--");
 921    } else {
 922      return variable;
 923    }
 924    const [type, ...path] = parsedVar;
 925    if (type === "preset") {
 926      return getValueFromPresetVariable(
 927        features,
 928        blockName,
 929        variable,
 930        path
 931      );
 932    }
 933    if (type === "custom") {
 934      return getValueFromCustomVariable(
 935        features,
 936        blockName,
 937        variable,
 938        path
 939      );
 940    }
 941    return variable;
 942  }
 943  
 944  // packages/global-styles-engine/build-module/settings/get-style.js
 945  function getStyle(globalStyles, path, blockName, shouldDecodeEncode = true) {
 946    const appendedPath = path ? "." + path : "";
 947    const finalPath = !blockName ? `styles$appendedPath}` : `styles.blocks.$blockName}$appendedPath}`;
 948    if (!globalStyles) {
 949      return void 0;
 950    }
 951    const rawResult = getValueFromObjectPath(globalStyles, finalPath);
 952    const result = shouldDecodeEncode ? getValueFromVariable(globalStyles, blockName, rawResult) : rawResult;
 953    return result;
 954  }
 955  
 956  // packages/global-styles-engine/build-module/settings/set-style.js
 957  function setStyle(globalStyles, path, newValue, blockName) {
 958    const appendedPath = path ? "." + path : "";
 959    const finalPath = !blockName ? `styles$appendedPath}` : `styles.blocks.$blockName}$appendedPath}`;
 960    return setImmutably(
 961      globalStyles,
 962      finalPath.split("."),
 963      newValue
 964    );
 965  }
 966  
 967  // packages/global-styles-engine/build-module/core/equal.js
 968  var import_es6 = __toESM(require_es6());
 969  function areGlobalStylesEqual(original, variation) {
 970    if (typeof original !== "object" || typeof variation !== "object") {
 971      return original === variation;
 972    }
 973    return (0, import_es6.default)(original?.styles, variation?.styles) && (0, import_es6.default)(original?.settings, variation?.settings);
 974  }
 975  
 976  // packages/global-styles-engine/build-module/core/merge.js
 977  var import_deepmerge = __toESM(require_cjs());
 978  
 979  // node_modules/is-plain-object/dist/is-plain-object.mjs
 980  function isObject(o3) {
 981    return Object.prototype.toString.call(o3) === "[object Object]";
 982  }
 983  function isPlainObject(o3) {
 984    var ctor, prot;
 985    if (isObject(o3) === false) return false;
 986    ctor = o3.constructor;
 987    if (ctor === void 0) return true;
 988    prot = ctor.prototype;
 989    if (isObject(prot) === false) return false;
 990    if (prot.hasOwnProperty("isPrototypeOf") === false) {
 991      return false;
 992    }
 993    return true;
 994  }
 995  
 996  // packages/global-styles-engine/build-module/core/merge.js
 997  function mergeGlobalStyles(base, user) {
 998    return (0, import_deepmerge.default)(base, user, {
 999      /*
1000       * We only pass as arrays the presets,
1001       * in which case we want the new array of values
1002       * to override the old array (no merging).
1003       */
1004      isMergeableObject: isPlainObject,
1005      /*
1006       * Exceptions to the above rule.
1007       * Background images should be replaced, not merged,
1008       * as they themselves are specific object definitions for the style.
1009       */
1010      customMerge: (key) => {
1011        if (key === "backgroundImage") {
1012          return (baseConfig, userConfig) => userConfig ?? baseConfig;
1013        }
1014        return void 0;
1015      }
1016    });
1017  }
1018  
1019  // node_modules/colord/index.mjs
1020  var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) };
1021  var t = function(r3) {
1022    return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3;
1023  };
1024  var n = function(r3, t3, n2) {
1025    return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = Math.pow(10, t3)), Math.round(n2 * r3) / n2 + 0;
1026  };
1027  var e = function(r3, t3, n2) {
1028    return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t3 ? r3 : t3;
1029  };
1030  var u = function(r3) {
1031    return (r3 = isFinite(r3) ? r3 % 360 : 0) > 0 ? r3 : r3 + 360;
1032  };
1033  var a = function(r3) {
1034    return { r: e(r3.r, 0, 255), g: e(r3.g, 0, 255), b: e(r3.b, 0, 255), a: e(r3.a) };
1035  };
1036  var o = function(r3) {
1037    return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) };
1038  };
1039  var i = /^#([0-9a-f]{3,8})$/i;
1040  var s = function(r3) {
1041    var t3 = r3.toString(16);
1042    return t3.length < 2 ? "0" + t3 : t3;
1043  };
1044  var h = function(r3) {
1045    var t3 = r3.r, n2 = r3.g, e2 = r3.b, u2 = r3.a, a2 = Math.max(t3, n2, e2), o3 = a2 - Math.min(t3, n2, e2), i2 = o3 ? a2 === t3 ? (n2 - e2) / o3 : a2 === n2 ? 2 + (e2 - t3) / o3 : 4 + (t3 - n2) / o3 : 0;
1046    return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o3 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 };
1047  };
1048  var b = function(r3) {
1049    var t3 = r3.h, n2 = r3.s, e2 = r3.v, u2 = r3.a;
1050    t3 = t3 / 360 * 6, n2 /= 100, e2 /= 100;
1051    var a2 = Math.floor(t3), o3 = e2 * (1 - n2), i2 = e2 * (1 - (t3 - a2) * n2), s2 = e2 * (1 - (1 - t3 + a2) * n2), h2 = a2 % 6;
1052    return { r: 255 * [e2, i2, o3, o3, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o3, o3][h2], b: 255 * [o3, o3, s2, e2, e2, i2][h2], a: u2 };
1053  };
1054  var g = function(r3) {
1055    return { h: u(r3.h), s: e(r3.s, 0, 100), l: e(r3.l, 0, 100), a: e(r3.a) };
1056  };
1057  var d = function(r3) {
1058    return { h: n(r3.h), s: n(r3.s), l: n(r3.l), a: n(r3.a, 3) };
1059  };
1060  var f = function(r3) {
1061    return b((n2 = (t3 = r3).s, { h: t3.h, s: (n2 *= ((e2 = t3.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t3.a }));
1062    var t3, n2, e2;
1063  };
1064  var c = function(r3) {
1065    return { h: (t3 = h(r3)).h, s: (u2 = (200 - (n2 = t3.s)) * (e2 = t3.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t3.a };
1066    var t3, n2, e2, u2;
1067  };
1068  var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
1069  var p2 = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
1070  var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
1071  var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
1072  var y = { string: [[function(r3) {
1073    var t3 = i.exec(r3);
1074    return t3 ? (r3 = t3[1]).length <= 4 ? { r: parseInt(r3[0] + r3[0], 16), g: parseInt(r3[1] + r3[1], 16), b: parseInt(r3[2] + r3[2], 16), a: 4 === r3.length ? n(parseInt(r3[3] + r3[3], 16) / 255, 2) : 1 } : 6 === r3.length || 8 === r3.length ? { r: parseInt(r3.substr(0, 2), 16), g: parseInt(r3.substr(2, 2), 16), b: parseInt(r3.substr(4, 2), 16), a: 8 === r3.length ? n(parseInt(r3.substr(6, 2), 16) / 255, 2) : 1 } : null : null;
1075  }, "hex"], [function(r3) {
1076    var t3 = v.exec(r3) || m.exec(r3);
1077    return t3 ? t3[2] !== t3[4] || t3[4] !== t3[6] ? null : a({ r: Number(t3[1]) / (t3[2] ? 100 / 255 : 1), g: Number(t3[3]) / (t3[4] ? 100 / 255 : 1), b: Number(t3[5]) / (t3[6] ? 100 / 255 : 1), a: void 0 === t3[7] ? 1 : Number(t3[7]) / (t3[8] ? 100 : 1) }) : null;
1078  }, "rgb"], [function(t3) {
1079    var n2 = l.exec(t3) || p2.exec(t3);
1080    if (!n2) return null;
1081    var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r2[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) });
1082    return f(a2);
1083  }, "hsl"]], object: [[function(r3) {
1084    var n2 = r3.r, e2 = r3.g, u2 = r3.b, o3 = r3.a, i2 = void 0 === o3 ? 1 : o3;
1085    return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null;
1086  }, "rgb"], [function(r3) {
1087    var n2 = r3.h, e2 = r3.s, u2 = r3.l, a2 = r3.a, o3 = void 0 === a2 ? 1 : a2;
1088    if (!t(n2) || !t(e2) || !t(u2)) return null;
1089    var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o3) });
1090    return f(i2);
1091  }, "hsl"], [function(r3) {
1092    var n2 = r3.h, a2 = r3.s, o3 = r3.v, i2 = r3.a, s2 = void 0 === i2 ? 1 : i2;
1093    if (!t(n2) || !t(a2) || !t(o3)) return null;
1094    var h2 = (function(r4) {
1095      return { h: u(r4.h), s: e(r4.s, 0, 100), v: e(r4.v, 0, 100), a: e(r4.a) };
1096    })({ h: Number(n2), s: Number(a2), v: Number(o3), a: Number(s2) });
1097    return b(h2);
1098  }, "hsv"]] };
1099  var N = function(r3, t3) {
1100    for (var n2 = 0; n2 < t3.length; n2++) {
1101      var e2 = t3[n2][0](r3);
1102      if (e2) return [e2, t3[n2][1]];
1103    }
1104    return [null, void 0];
1105  };
1106  var x = function(r3) {
1107    return "string" == typeof r3 ? N(r3.trim(), y.string) : "object" == typeof r3 && null !== r3 ? N(r3, y.object) : [null, void 0];
1108  };
1109  var M = function(r3, t3) {
1110    var n2 = c(r3);
1111    return { h: n2.h, s: e(n2.s + 100 * t3, 0, 100), l: n2.l, a: n2.a };
1112  };
1113  var H = function(r3) {
1114    return (299 * r3.r + 587 * r3.g + 114 * r3.b) / 1e3 / 255;
1115  };
1116  var $ = function(r3, t3) {
1117    var n2 = c(r3);
1118    return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t3, 0, 100), a: n2.a };
1119  };
1120  var j = (function() {
1121    function r3(r4) {
1122      this.parsed = x(r4)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
1123    }
1124    return r3.prototype.isValid = function() {
1125      return null !== this.parsed;
1126    }, r3.prototype.brightness = function() {
1127      return n(H(this.rgba), 2);
1128    }, r3.prototype.isDark = function() {
1129      return H(this.rgba) < 0.5;
1130    }, r3.prototype.isLight = function() {
1131      return H(this.rgba) >= 0.5;
1132    }, r3.prototype.toHex = function() {
1133      return r4 = o(this.rgba), t3 = r4.r, e2 = r4.g, u2 = r4.b, i2 = (a2 = r4.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t3) + s(e2) + s(u2) + i2;
1134      var r4, t3, e2, u2, a2, i2;
1135    }, r3.prototype.toRgb = function() {
1136      return o(this.rgba);
1137    }, r3.prototype.toRgbString = function() {
1138      return r4 = o(this.rgba), t3 = r4.r, n2 = r4.g, e2 = r4.b, (u2 = r4.a) < 1 ? "rgba(" + t3 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t3 + ", " + n2 + ", " + e2 + ")";
1139      var r4, t3, n2, e2, u2;
1140    }, r3.prototype.toHsl = function() {
1141      return d(c(this.rgba));
1142    }, r3.prototype.toHslString = function() {
1143      return r4 = d(c(this.rgba)), t3 = r4.h, n2 = r4.s, e2 = r4.l, (u2 = r4.a) < 1 ? "hsla(" + t3 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t3 + ", " + n2 + "%, " + e2 + "%)";
1144      var r4, t3, n2, e2, u2;
1145    }, r3.prototype.toHsv = function() {
1146      return r4 = h(this.rgba), { h: n(r4.h), s: n(r4.s), v: n(r4.v), a: n(r4.a, 3) };
1147      var r4;
1148    }, r3.prototype.invert = function() {
1149      return w({ r: 255 - (r4 = this.rgba).r, g: 255 - r4.g, b: 255 - r4.b, a: r4.a });
1150      var r4;
1151    }, r3.prototype.saturate = function(r4) {
1152      return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, r4));
1153    }, r3.prototype.desaturate = function(r4) {
1154      return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, -r4));
1155    }, r3.prototype.grayscale = function() {
1156      return w(M(this.rgba, -1));
1157    }, r3.prototype.lighten = function(r4) {
1158      return void 0 === r4 && (r4 = 0.1), w($(this.rgba, r4));
1159    }, r3.prototype.darken = function(r4) {
1160      return void 0 === r4 && (r4 = 0.1), w($(this.rgba, -r4));
1161    }, r3.prototype.rotate = function(r4) {
1162      return void 0 === r4 && (r4 = 15), this.hue(this.hue() + r4);
1163    }, r3.prototype.alpha = function(r4) {
1164      return "number" == typeof r4 ? w({ r: (t3 = this.rgba).r, g: t3.g, b: t3.b, a: r4 }) : n(this.rgba.a, 3);
1165      var t3;
1166    }, r3.prototype.hue = function(r4) {
1167      var t3 = c(this.rgba);
1168      return "number" == typeof r4 ? w({ h: r4, s: t3.s, l: t3.l, a: t3.a }) : n(t3.h);
1169    }, r3.prototype.isEqual = function(r4) {
1170      return this.toHex() === w(r4).toHex();
1171    }, r3;
1172  })();
1173  var w = function(r3) {
1174    return r3 instanceof j ? r3 : new j(r3);
1175  };
1176  var S = [];
1177  var k = function(r3) {
1178    r3.forEach(function(r4) {
1179      S.indexOf(r4) < 0 && (r4(j, y), S.push(r4));
1180    });
1181  };
1182  
1183  // packages/global-styles-ui/build-module/provider.js
1184  var import_element3 = __toESM(require_element());
1185  
1186  // packages/global-styles-ui/build-module/context.js
1187  var import_element2 = __toESM(require_element());
1188  var GlobalStylesContext = (0, import_element2.createContext)({
1189    user: { styles: {}, settings: {} },
1190    base: { styles: {}, settings: {} },
1191    merged: { styles: {}, settings: {} },
1192    onChange: () => {
1193    },
1194    fontLibraryEnabled: false
1195  });
1196  
1197  // packages/global-styles-ui/build-module/provider.js
1198  var import_jsx_runtime4 = __toESM(require_jsx_runtime());
1199  function GlobalStylesProvider({
1200    children,
1201    value,
1202    baseValue,
1203    onChange,
1204    fontLibraryEnabled
1205  }) {
1206    const merged = (0, import_element3.useMemo)(() => {
1207      return mergeGlobalStyles(baseValue, value);
1208    }, [baseValue, value]);
1209    const contextValue = (0, import_element3.useMemo)(
1210      () => ({
1211        user: value,
1212        base: baseValue,
1213        merged,
1214        onChange,
1215        fontLibraryEnabled
1216      }),
1217      [value, baseValue, merged, onChange, fontLibraryEnabled]
1218    );
1219    return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(GlobalStylesContext.Provider, { value: contextValue, children });
1220  }
1221  
1222  // packages/global-styles-ui/build-module/screen-root.js
1223  var import_components9 = __toESM(require_components());
1224  var import_i18n4 = __toESM(require_i18n());
1225  
1226  // packages/icons/build-module/icon/index.js
1227  var import_element4 = __toESM(require_element());
1228  var icon_default = (0, import_element4.forwardRef)(
1229    ({ icon, size = 24, ...props }, ref) => {
1230      return (0, import_element4.cloneElement)(icon, {
1231        width: size,
1232        height: size,
1233        ...props,
1234        ref
1235      });
1236    }
1237  );
1238  
1239  // packages/icons/build-module/library/chevron-left.js
1240  var import_primitives = __toESM(require_primitives());
1241  var import_jsx_runtime5 = __toESM(require_jsx_runtime());
1242  var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) });
1243  
1244  // packages/icons/build-module/library/chevron-right.js
1245  var import_primitives2 = __toESM(require_primitives());
1246  var import_jsx_runtime6 = __toESM(require_jsx_runtime());
1247  var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives2.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) });
1248  
1249  // packages/icons/build-module/library/more-vertical.js
1250  var import_primitives3 = __toESM(require_primitives());
1251  var import_jsx_runtime7 = __toESM(require_jsx_runtime());
1252  var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives3.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) });
1253  
1254  // packages/icons/build-module/library/next.js
1255  var import_primitives4 = __toESM(require_primitives());
1256  var import_jsx_runtime8 = __toESM(require_jsx_runtime());
1257  var next_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives4.Path, { d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z" }) });
1258  
1259  // packages/icons/build-module/library/previous.js
1260  var import_primitives5 = __toESM(require_primitives());
1261  var import_jsx_runtime9 = __toESM(require_jsx_runtime());
1262  var previous_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives5.Path, { d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z" }) });
1263  
1264  // packages/global-styles-ui/build-module/screen-root.js
1265  var import_data2 = __toESM(require_data());
1266  var import_core_data2 = __toESM(require_core_data());
1267  
1268  // packages/global-styles-ui/build-module/icon-with-current-color.js
1269  var import_jsx_runtime10 = __toESM(require_jsx_runtime());
1270  function IconWithCurrentColor({
1271    className,
1272    ...props
1273  }) {
1274    return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1275      icon_default,
1276      {
1277        className: clsx_default(
1278          className,
1279          "global-styles-ui-icon-with-current-color"
1280        ),
1281        ...props
1282      }
1283    );
1284  }
1285  
1286  // packages/global-styles-ui/build-module/navigation-button.js
1287  var import_components3 = __toESM(require_components());
1288  var import_jsx_runtime11 = __toESM(require_jsx_runtime());
1289  function GenericNavigationButton({
1290    icon,
1291    children,
1292    ...props
1293  }) {
1294    return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_components3.__experimentalItem, { ...props, children: [
1295      icon && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_components3.__experimentalHStack, { justify: "flex-start", children: [
1296        /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(IconWithCurrentColor, { icon, size: 24 }),
1297        /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components3.FlexItem, { children })
1298      ] }),
1299      !icon && children
1300    ] });
1301  }
1302  function NavigationButtonAsItem(props) {
1303    return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components3.Navigator.Button, { as: GenericNavigationButton, ...props });
1304  }
1305  
1306  // packages/global-styles-ui/build-module/root-menu.js
1307  var import_components4 = __toESM(require_components());
1308  var import_i18n2 = __toESM(require_i18n());
1309  var import_block_editor = __toESM(require_block_editor());
1310  
1311  // node_modules/colord/plugins/a11y.mjs
1312  var o2 = function(o3) {
1313    var t3 = o3 / 255;
1314    return t3 < 0.04045 ? t3 / 12.92 : Math.pow((t3 + 0.055) / 1.055, 2.4);
1315  };
1316  var t2 = function(t3) {
1317    return 0.2126 * o2(t3.r) + 0.7152 * o2(t3.g) + 0.0722 * o2(t3.b);
1318  };
1319  function a11y_default(o3) {
1320    o3.prototype.luminance = function() {
1321      return o4 = t2(this.rgba), void 0 === (r3 = 2) && (r3 = 0), void 0 === n2 && (n2 = Math.pow(10, r3)), Math.round(n2 * o4) / n2 + 0;
1322      var o4, r3, n2;
1323    }, o3.prototype.contrast = function(r3) {
1324      void 0 === r3 && (r3 = "#FFF");
1325      var n2, a2, i2, e2, v2, u2, d2, c2 = r3 instanceof o3 ? r3 : new o3(r3);
1326      return e2 = this.rgba, v2 = c2.toRgb(), u2 = t2(e2), d2 = t2(v2), n2 = u2 > d2 ? (u2 + 0.05) / (d2 + 0.05) : (d2 + 0.05) / (u2 + 0.05), void 0 === (a2 = 2) && (a2 = 0), void 0 === i2 && (i2 = Math.pow(10, a2)), Math.floor(i2 * n2) / i2 + 0;
1327    }, o3.prototype.isReadable = function(o4, t3) {
1328      return void 0 === o4 && (o4 = "#FFF"), void 0 === t3 && (t3 = {}), this.contrast(o4) >= (e2 = void 0 === (i2 = (r3 = t3).size) ? "normal" : i2, "AAA" === (a2 = void 0 === (n2 = r3.level) ? "AA" : n2) && "normal" === e2 ? 7 : "AA" === a2 && "large" === e2 ? 3 : 4.5);
1329      var r3, n2, a2, i2, e2;
1330    };
1331  }
1332  
1333  // packages/global-styles-ui/build-module/hooks.js
1334  var import_element5 = __toESM(require_element());
1335  var import_data = __toESM(require_data());
1336  var import_core_data = __toESM(require_core_data());
1337  var import_i18n = __toESM(require_i18n());
1338  
1339  // packages/global-styles-ui/build-module/utils.js
1340  function removePropertiesFromObject(object, properties) {
1341    if (!properties?.length) {
1342      return object;
1343    }
1344    if (typeof object !== "object" || !object || !Object.keys(object).length) {
1345      return object;
1346    }
1347    for (const key in object) {
1348      if (properties.includes(key)) {
1349        delete object[key];
1350      } else if (typeof object[key] === "object") {
1351        removePropertiesFromObject(object[key], properties);
1352      }
1353    }
1354    return object;
1355  }
1356  var filterObjectByProperties = (object, properties) => {
1357    if (!object || !properties?.length) {
1358      return {};
1359    }
1360    const newObject = {};
1361    Object.keys(object).forEach((key) => {
1362      if (properties.includes(key)) {
1363        newObject[key] = object[key];
1364      } else if (typeof object[key] === "object") {
1365        const newFilter = filterObjectByProperties(
1366          object[key],
1367          properties
1368        );
1369        if (Object.keys(newFilter).length) {
1370          newObject[key] = newFilter;
1371        }
1372      }
1373    });
1374    return newObject;
1375  };
1376  function isVariationWithProperties(variation, properties) {
1377    const variationWithProperties = filterObjectByProperties(
1378      structuredClone(variation),
1379      properties
1380    );
1381    return areGlobalStylesEqual(variationWithProperties, variation);
1382  }
1383  function getFontFamilyFromSetting(fontFamilies, setting) {
1384    if (!Array.isArray(fontFamilies) || !setting) {
1385      return null;
1386    }
1387    const fontFamilyVariable = setting.replace("var(", "").replace(")", "");
1388    const fontFamilySlug = fontFamilyVariable?.split("--").slice(-1)[0];
1389    return fontFamilies.find(
1390      (fontFamily) => fontFamily.slug === fontFamilySlug
1391    );
1392  }
1393  function getFontFamilies(themeJson) {
1394    const themeFontFamilies = themeJson?.settings?.typography?.fontFamilies?.theme;
1395    const customFontFamilies = themeJson?.settings?.typography?.fontFamilies?.custom;
1396    let fontFamilies = [];
1397    if (themeFontFamilies && customFontFamilies) {
1398      fontFamilies = [...themeFontFamilies, ...customFontFamilies];
1399    } else if (themeFontFamilies) {
1400      fontFamilies = themeFontFamilies;
1401    } else if (customFontFamilies) {
1402      fontFamilies = customFontFamilies;
1403    }
1404    const bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily;
1405    const bodyFontFamily = getFontFamilyFromSetting(
1406      fontFamilies,
1407      bodyFontFamilySetting
1408    );
1409    const headingFontFamilySetting = themeJson?.styles?.elements?.heading?.typography?.fontFamily;
1410    let headingFontFamily;
1411    if (!headingFontFamilySetting) {
1412      headingFontFamily = bodyFontFamily;
1413    } else {
1414      headingFontFamily = getFontFamilyFromSetting(
1415        fontFamilies,
1416        themeJson?.styles?.elements?.heading?.typography?.fontFamily
1417      );
1418    }
1419    return [bodyFontFamily, headingFontFamily];
1420  }
1421  
1422  // packages/global-styles-ui/build-module/hooks.js
1423  k([a11y_default]);
1424  function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = true) {
1425    const { user, base, merged, onChange } = (0, import_element5.useContext)(GlobalStylesContext);
1426    let sourceValue = merged;
1427    if (readFrom === "base") {
1428      sourceValue = base;
1429    } else if (readFrom === "user") {
1430      sourceValue = user;
1431    }
1432    const styleValue = (0, import_element5.useMemo)(
1433      () => getStyle(sourceValue, path, blockName, shouldDecodeEncode),
1434      [sourceValue, path, blockName, shouldDecodeEncode]
1435    );
1436    const setStyleValue = (0, import_element5.useCallback)(
1437      (newValue) => {
1438        const newGlobalStyles = setStyle(
1439          user,
1440          path,
1441          newValue,
1442          blockName
1443        );
1444        onChange(newGlobalStyles);
1445      },
1446      [user, onChange, path, blockName]
1447    );
1448    return [styleValue, setStyleValue];
1449  }
1450  function useSetting(path, blockName, readFrom = "merged") {
1451    const { user, base, merged, onChange } = (0, import_element5.useContext)(GlobalStylesContext);
1452    let sourceValue = merged;
1453    if (readFrom === "base") {
1454      sourceValue = base;
1455    } else if (readFrom === "user") {
1456      sourceValue = user;
1457    }
1458    const settingValue = (0, import_element5.useMemo)(
1459      () => getSetting(sourceValue, path, blockName),
1460      [sourceValue, path, blockName]
1461    );
1462    const setSettingValue = (0, import_element5.useCallback)(
1463      (newValue) => {
1464        const newGlobalStyles = setSetting(
1465          user,
1466          path,
1467          newValue,
1468          blockName
1469        );
1470        onChange(newGlobalStyles);
1471      },
1472      [user, onChange, path, blockName]
1473    );
1474    return [settingValue, setSettingValue];
1475  }
1476  var EMPTY_ARRAY = [];
1477  function hasThemeVariation({
1478    title,
1479    settings,
1480    styles
1481  }) {
1482    return title === (0, import_i18n.__)("Default") || Object.keys(settings || {}).length > 0 || Object.keys(styles || {}).length > 0;
1483  }
1484  function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) {
1485    const { variationsFromTheme } = (0, import_data.useSelect)((select) => {
1486      const _variationsFromTheme = select(
1487        import_core_data.store
1488      ).__experimentalGetCurrentThemeGlobalStylesVariations?.();
1489      return {
1490        variationsFromTheme: _variationsFromTheme || EMPTY_ARRAY
1491      };
1492    }, []);
1493    const { user: userVariation } = (0, import_element5.useContext)(GlobalStylesContext);
1494    return (0, import_element5.useMemo)(() => {
1495      const clonedUserVariation = structuredClone(userVariation);
1496      const userVariationWithoutProperties = removePropertiesFromObject(
1497        clonedUserVariation,
1498        properties
1499      );
1500      userVariationWithoutProperties.title = (0, import_i18n.__)("Default");
1501      const variationsWithPropertiesAndBase = variationsFromTheme.filter((variation) => {
1502        return isVariationWithProperties(variation, properties);
1503      }).map((variation) => {
1504        return mergeGlobalStyles(
1505          userVariationWithoutProperties,
1506          variation
1507        );
1508      });
1509      const variationsByProperties = [
1510        userVariationWithoutProperties,
1511        ...variationsWithPropertiesAndBase
1512      ];
1513      return variationsByProperties?.length ? variationsByProperties.filter(hasThemeVariation) : [];
1514    }, [properties, userVariation, variationsFromTheme]);
1515  }
1516  
1517  // packages/global-styles-ui/build-module/lock-unlock.js
1518  var import_private_apis = __toESM(require_private_apis());
1519  var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
1520    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
1521    "@wordpress/global-styles-ui"
1522  );
1523  
1524  // packages/global-styles-ui/build-module/root-menu.js
1525  var import_jsx_runtime12 = __toESM(require_jsx_runtime());
1526  var {
1527    useHasDimensionsPanel,
1528    useHasTypographyPanel,
1529    useHasColorPanel,
1530    useSettingsForBlockElement,
1531    useHasBackgroundPanel
1532  } = unlock(import_block_editor.privateApis);
1533  
1534  // packages/global-styles-ui/build-module/preview-styles.js
1535  var import_components8 = __toESM(require_components());
1536  
1537  // packages/global-styles-ui/build-module/preview-hooks.js
1538  function useStylesPreviewColors() {
1539    const [textColor = "black"] = useStyle("color.text");
1540    const [backgroundColor = "white"] = useStyle("color.background");
1541    const [headingColor = textColor] = useStyle(
1542      "elements.h1.color.text"
1543    );
1544    const [linkColor = headingColor] = useStyle(
1545      "elements.link.color.text"
1546    );
1547    const [buttonBackgroundColor = linkColor] = useStyle(
1548      "elements.button.color.background"
1549    );
1550    const [coreColors] = useSetting("color.palette.core") || [];
1551    const [themeColors] = useSetting("color.palette.theme") || [];
1552    const [customColors] = useSetting("color.palette.custom") || [];
1553    const paletteColors = (themeColors ?? []).concat(customColors ?? []).concat(coreColors ?? []);
1554    const textColorObject = paletteColors.filter(
1555      ({ color }) => color === textColor
1556    );
1557    const buttonBackgroundColorObject = paletteColors.filter(
1558      ({ color }) => color === buttonBackgroundColor
1559    );
1560    const highlightedColors = textColorObject.concat(buttonBackgroundColorObject).concat(paletteColors).filter(
1561      // we exclude these background color because it is already visible in the preview.
1562      ({ color }) => color !== backgroundColor
1563    ).slice(0, 2);
1564    return {
1565      paletteColors,
1566      highlightedColors
1567    };
1568  }
1569  
1570  // packages/global-styles-ui/build-module/typography-example.js
1571  var import_element6 = __toESM(require_element());
1572  var import_components5 = __toESM(require_components());
1573  var import_i18n3 = __toESM(require_i18n());
1574  
1575  // packages/global-styles-ui/build-module/font-library/utils/preview-styles.js
1576  function findNearest(input, numbers) {
1577    if (numbers.length === 0) {
1578      return null;
1579    }
1580    numbers.sort((a2, b2) => Math.abs(input - a2) - Math.abs(input - b2));
1581    return numbers[0];
1582  }
1583  function extractFontWeights(fontFaces) {
1584    const result = [];
1585    fontFaces.forEach((face) => {
1586      const weights = String(face.fontWeight).split(" ");
1587      if (weights.length === 2) {
1588        const start = parseInt(weights[0]);
1589        const end = parseInt(weights[1]);
1590        for (let i2 = start; i2 <= end; i2 += 100) {
1591          result.push(i2);
1592        }
1593      } else if (weights.length === 1) {
1594        result.push(parseInt(weights[0]));
1595      }
1596    });
1597    return result;
1598  }
1599  function formatFontFamily(input) {
1600    const regex = /^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/;
1601    const output = input.trim();
1602    const formatItem = (item) => {
1603      item = item.trim();
1604      if (item.match(regex)) {
1605        item = item.replace(/^["']|["']$/g, "");
1606        return `"$item}"`;
1607      }
1608      return item;
1609    };
1610    if (output.includes(",")) {
1611      return output.split(",").map(formatItem).filter((item) => item !== "").join(", ");
1612    }
1613    return formatItem(output);
1614  }
1615  function formatFontFaceName(input) {
1616    if (!input) {
1617      return "";
1618    }
1619    let output = input.trim();
1620    if (output.includes(",")) {
1621      output = (output.split(",").find((item) => item.trim() !== "") ?? "").trim();
1622    }
1623    output = output.replace(/^["']|["']$/g, "");
1624    if (window.navigator.userAgent.toLowerCase().includes("firefox")) {
1625      output = `"$output}"`;
1626    }
1627    return output;
1628  }
1629  function getFamilyPreviewStyle(family) {
1630    const style = {
1631      fontFamily: formatFontFamily(family.fontFamily)
1632    };
1633    if (!("fontFace" in family) || !Array.isArray(family.fontFace)) {
1634      style.fontWeight = "400";
1635      style.fontStyle = "normal";
1636      return style;
1637    }
1638    if (family.fontFace) {
1639      const normalFaces = family.fontFace.filter(
1640        (face) => face?.fontStyle && face.fontStyle.toLowerCase() === "normal"
1641      );
1642      if (normalFaces.length > 0) {
1643        style.fontStyle = "normal";
1644        const normalWeights = extractFontWeights(normalFaces);
1645        const nearestWeight = findNearest(400, normalWeights);
1646        style.fontWeight = String(nearestWeight) || "400";
1647      } else {
1648        style.fontStyle = family.fontFace.length && family.fontFace[0].fontStyle || "normal";
1649        style.fontWeight = family.fontFace.length && String(family.fontFace[0].fontWeight) || "400";
1650      }
1651    }
1652    return style;
1653  }
1654  function getFacePreviewStyle(face) {
1655    return {
1656      fontFamily: formatFontFamily(face.fontFamily),
1657      fontStyle: face.fontStyle || "normal",
1658      fontWeight: face.fontWeight || "400"
1659    };
1660  }
1661  
1662  // packages/global-styles-ui/build-module/typography-example.js
1663  var import_jsx_runtime13 = __toESM(require_jsx_runtime());
1664  function PreviewTypography({
1665    fontSize,
1666    variation
1667  }) {
1668    const { base } = (0, import_element6.useContext)(GlobalStylesContext);
1669    let config = base;
1670    if (variation) {
1671      config = { ...base, ...variation };
1672    }
1673    const [textColor] = useStyle("color.text");
1674    const [bodyFontFamilies, headingFontFamilies] = getFontFamilies(config);
1675    const bodyPreviewStyle = bodyFontFamilies ? getFamilyPreviewStyle(bodyFontFamilies) : {};
1676    const headingPreviewStyle = headingFontFamilies ? getFamilyPreviewStyle(headingFontFamilies) : {};
1677    if (textColor) {
1678      bodyPreviewStyle.color = textColor;
1679      headingPreviewStyle.color = textColor;
1680    }
1681    if (fontSize) {
1682      bodyPreviewStyle.fontSize = fontSize;
1683      headingPreviewStyle.fontSize = fontSize;
1684    }
1685    return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1686      import_components5.__unstableMotion.div,
1687      {
1688        animate: {
1689          scale: 1,
1690          opacity: 1
1691        },
1692        initial: {
1693          scale: 0.1,
1694          opacity: 0
1695        },
1696        transition: {
1697          delay: 0.3,
1698          type: "tween"
1699        },
1700        style: {
1701          textAlign: "center",
1702          lineHeight: 1
1703        },
1704        children: [
1705          /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: headingPreviewStyle, children: (0, import_i18n3._x)("A", "Uppercase letter A") }),
1706          /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: bodyPreviewStyle, children: (0, import_i18n3._x)("a", "Lowercase letter A") })
1707        ]
1708      }
1709    );
1710  }
1711  
1712  // packages/global-styles-ui/build-module/highlighted-colors.js
1713  var import_components6 = __toESM(require_components());
1714  var import_jsx_runtime14 = __toESM(require_jsx_runtime());
1715  function HighlightedColors({
1716    normalizedColorSwatchSize,
1717    ratio
1718  }) {
1719    const { highlightedColors } = useStylesPreviewColors();
1720    const scaledSwatchSize = normalizedColorSwatchSize * ratio;
1721    return highlightedColors.map(({ slug, color }, index) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1722      import_components6.__unstableMotion.div,
1723      {
1724        style: {
1725          height: scaledSwatchSize,
1726          width: scaledSwatchSize,
1727          background: color,
1728          borderRadius: scaledSwatchSize / 2
1729        },
1730        animate: {
1731          scale: 1,
1732          opacity: 1
1733        },
1734        initial: {
1735          scale: 0.1,
1736          opacity: 0
1737        },
1738        transition: {
1739          delay: index === 1 ? 0.2 : 0.1
1740        }
1741      },
1742      `$slug}-$index}`
1743    ));
1744  }
1745  
1746  // packages/global-styles-ui/build-module/preview-wrapper.js
1747  var import_components7 = __toESM(require_components());
1748  var import_compose = __toESM(require_compose());
1749  var import_element7 = __toESM(require_element());
1750  var import_jsx_runtime15 = __toESM(require_jsx_runtime());
1751  var normalizedWidth = 248;
1752  var normalizedHeight = 152;
1753  var THROTTLE_OPTIONS = {
1754    leading: true,
1755    trailing: true
1756  };
1757  function PreviewWrapper({
1758    children,
1759    label,
1760    isFocused,
1761    withHoverView
1762  }) {
1763    const [backgroundColor = "white"] = useStyle("color.background");
1764    const [gradientValue] = useStyle("color.gradient");
1765    const disableMotion = (0, import_compose.useReducedMotion)();
1766    const [isHovered, setIsHovered] = (0, import_element7.useState)(false);
1767    const [containerResizeListener, { width }] = (0, import_compose.useResizeObserver)();
1768    const [throttledWidth, setThrottledWidthState] = (0, import_element7.useState)(width);
1769    const [ratioState, setRatioState] = (0, import_element7.useState)();
1770    const setThrottledWidth = (0, import_compose.useThrottle)(
1771      setThrottledWidthState,
1772      250,
1773      THROTTLE_OPTIONS
1774    );
1775    (0, import_element7.useLayoutEffect)(() => {
1776      if (width) {
1777        setThrottledWidth(width);
1778      }
1779    }, [width, setThrottledWidth]);
1780    (0, import_element7.useLayoutEffect)(() => {
1781      const newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1;
1782      const ratioDiff = newRatio - (ratioState || 0);
1783      const isRatioDiffBigEnough = Math.abs(ratioDiff) > 0.1;
1784      if (isRatioDiffBigEnough || !ratioState) {
1785        setRatioState(newRatio);
1786      }
1787    }, [throttledWidth, ratioState]);
1788    const fallbackRatio = width ? width / normalizedWidth : 1;
1789    const ratio = ratioState ? ratioState : fallbackRatio;
1790    const isReady = !!width;
1791    return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1792      /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { position: "relative" }, children: containerResizeListener }),
1793      isReady && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1794        "div",
1795        {
1796          className: "global-styles-ui-preview__wrapper",
1797          style: {
1798            height: normalizedHeight * ratio
1799          },
1800          onMouseEnter: () => setIsHovered(true),
1801          onMouseLeave: () => setIsHovered(false),
1802          tabIndex: -1,
1803          children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1804            import_components7.__unstableMotion.div,
1805            {
1806              style: {
1807                height: normalizedHeight * ratio,
1808                width: "100%",
1809                background: gradientValue ?? backgroundColor,
1810                cursor: withHoverView ? "pointer" : void 0
1811              },
1812              initial: "start",
1813              animate: (isHovered || isFocused) && !disableMotion && label ? "hover" : "start",
1814              children: [].concat(children).map(
1815                (child, key) => child({ ratio, key })
1816              )
1817            }
1818          )
1819        }
1820      )
1821    ] });
1822  }
1823  var preview_wrapper_default = PreviewWrapper;
1824  
1825  // packages/global-styles-ui/build-module/preview-styles.js
1826  var import_jsx_runtime16 = __toESM(require_jsx_runtime());
1827  var firstFrameVariants = {
1828    start: {
1829      scale: 1,
1830      opacity: 1
1831    },
1832    hover: {
1833      scale: 0,
1834      opacity: 0
1835    }
1836  };
1837  var midFrameVariants = {
1838    hover: {
1839      opacity: 1
1840    },
1841    start: {
1842      opacity: 0.5
1843    }
1844  };
1845  var secondFrameVariants = {
1846    hover: {
1847      scale: 1,
1848      opacity: 1
1849    },
1850    start: {
1851      scale: 0,
1852      opacity: 0
1853    }
1854  };
1855  function PreviewStyles({
1856    label,
1857    isFocused,
1858    withHoverView,
1859    variation
1860  }) {
1861    const [fontWeight] = useStyle("typography.fontWeight");
1862    const [fontFamily = "serif"] = useStyle(
1863      "typography.fontFamily"
1864    );
1865    const [headingFontFamily = fontFamily] = useStyle(
1866      "elements.h1.typography.fontFamily"
1867    );
1868    const [headingFontWeight = fontWeight] = useStyle(
1869      "elements.h1.typography.fontWeight"
1870    );
1871    const [textColor = "black"] = useStyle("color.text");
1872    const [headingColor = textColor] = useStyle(
1873      "elements.h1.color.text"
1874    );
1875    const { paletteColors } = useStylesPreviewColors();
1876    return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1877      preview_wrapper_default,
1878      {
1879        label,
1880        isFocused,
1881        withHoverView,
1882        children: [
1883          ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1884            import_components8.__unstableMotion.div,
1885            {
1886              variants: firstFrameVariants,
1887              style: {
1888                height: "100%",
1889                overflow: "hidden"
1890              },
1891              children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1892                import_components8.__experimentalHStack,
1893                {
1894                  spacing: 10 * ratio,
1895                  justify: "center",
1896                  style: {
1897                    height: "100%",
1898                    overflow: "hidden"
1899                  },
1900                  children: [
1901                    /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1902                      PreviewTypography,
1903                      {
1904                        fontSize: 65 * ratio,
1905                        variation
1906                      }
1907                    ),
1908                    /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_components8.__experimentalVStack, { spacing: 4 * ratio, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1909                      HighlightedColors,
1910                      {
1911                        normalizedColorSwatchSize: 32,
1912                        ratio
1913                      }
1914                    ) })
1915                  ]
1916                }
1917              )
1918            },
1919            key
1920          ),
1921          ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1922            import_components8.__unstableMotion.div,
1923            {
1924              variants: withHoverView ? midFrameVariants : void 0,
1925              style: {
1926                height: "100%",
1927                width: "100%",
1928                position: "absolute",
1929                top: 0,
1930                overflow: "hidden",
1931                filter: "blur(60px)",
1932                opacity: 0.1
1933              },
1934              children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1935                import_components8.__experimentalHStack,
1936                {
1937                  spacing: 0,
1938                  justify: "flex-start",
1939                  style: {
1940                    height: "100%",
1941                    overflow: "hidden"
1942                  },
1943                  children: paletteColors.slice(0, 4).map(({ color }, index) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1944                    "div",
1945                    {
1946                      style: {
1947                        height: "100%",
1948                        background: color,
1949                        flexGrow: 1
1950                      }
1951                    },
1952                    index
1953                  ))
1954                }
1955              )
1956            },
1957            key
1958          ),
1959          ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1960            import_components8.__unstableMotion.div,
1961            {
1962              variants: secondFrameVariants,
1963              style: {
1964                height: "100%",
1965                width: "100%",
1966                overflow: "hidden",
1967                position: "absolute",
1968                top: 0
1969              },
1970              children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1971                import_components8.__experimentalVStack,
1972                {
1973                  spacing: 3 * ratio,
1974                  justify: "center",
1975                  style: {
1976                    height: "100%",
1977                    overflow: "hidden",
1978                    padding: 10 * ratio,
1979                    boxSizing: "border-box"
1980                  },
1981                  children: label && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1982                    "div",
1983                    {
1984                      style: {
1985                        fontSize: 40 * ratio,
1986                        fontFamily: headingFontFamily,
1987                        color: headingColor,
1988                        fontWeight: headingFontWeight,
1989                        lineHeight: "1em",
1990                        textAlign: "center"
1991                      },
1992                      children: label
1993                    }
1994                  )
1995                }
1996              )
1997            },
1998            key
1999          )
2000        ]
2001      }
2002    );
2003  }
2004  var preview_styles_default = PreviewStyles;
2005  
2006  // packages/global-styles-ui/build-module/screen-root.js
2007  var import_jsx_runtime17 = __toESM(require_jsx_runtime());
2008  
2009  // packages/global-styles-ui/build-module/screen-block-list.js
2010  var import_blocks2 = __toESM(require_blocks());
2011  var import_i18n6 = __toESM(require_i18n());
2012  var import_components12 = __toESM(require_components());
2013  var import_data4 = __toESM(require_data());
2014  var import_element8 = __toESM(require_element());
2015  var import_block_editor2 = __toESM(require_block_editor());
2016  var import_compose2 = __toESM(require_compose());
2017  import { speak } from "@wordpress/a11y";
2018  
2019  // packages/global-styles-ui/build-module/variations/variations-panel.js
2020  var import_blocks = __toESM(require_blocks());
2021  var import_data3 = __toESM(require_data());
2022  var import_components10 = __toESM(require_components());
2023  var import_jsx_runtime18 = __toESM(require_jsx_runtime());
2024  function getFilteredBlockStyles(blockStyles, variations) {
2025    return blockStyles?.filter(
2026      (style) => style.source === "block" || variations.includes(style.name)
2027    ) || [];
2028  }
2029  function useBlockVariations(name2) {
2030    const blockStyles = (0, import_data3.useSelect)(
2031      (select) => {
2032        const { getBlockStyles } = select(import_blocks.store);
2033        return getBlockStyles(name2);
2034      },
2035      [name2]
2036    );
2037    const [variations] = useStyle("variations", name2);
2038    const variationNames = Object.keys(variations ?? {});
2039    return getFilteredBlockStyles(blockStyles, variationNames);
2040  }
2041  
2042  // packages/global-styles-ui/build-module/screen-header.js
2043  var import_components11 = __toESM(require_components());
2044  var import_i18n5 = __toESM(require_i18n());
2045  var import_jsx_runtime19 = __toESM(require_jsx_runtime());
2046  
2047  // packages/global-styles-ui/build-module/screen-block-list.js
2048  var import_jsx_runtime20 = __toESM(require_jsx_runtime());
2049  var {
2050    useHasDimensionsPanel: useHasDimensionsPanel2,
2051    useHasTypographyPanel: useHasTypographyPanel2,
2052    useHasBorderPanel,
2053    useSettingsForBlockElement: useSettingsForBlockElement2,
2054    useHasColorPanel: useHasColorPanel2
2055  } = unlock(import_block_editor2.privateApis);
2056  function useSortedBlockTypes() {
2057    const blockItems = (0, import_data4.useSelect)(
2058      (select) => select(import_blocks2.store).getBlockTypes(),
2059      []
2060    );
2061    const groupByType = (blocks, block) => {
2062      const { core, noncore } = blocks;
2063      const type = block.name.startsWith("core/") ? core : noncore;
2064      type.push(block);
2065      return blocks;
2066    };
2067    const { core: coreItems, noncore: nonCoreItems } = blockItems.reduce(
2068      groupByType,
2069      { core: [], noncore: [] }
2070    );
2071    return [...coreItems, ...nonCoreItems];
2072  }
2073  function useBlockHasGlobalStyles(blockName) {
2074    const [rawSettings] = useSetting("", blockName);
2075    const settings = useSettingsForBlockElement2(rawSettings, blockName);
2076    const hasTypographyPanel = useHasTypographyPanel2(settings);
2077    const hasColorPanel = useHasColorPanel2(settings);
2078    const hasBorderPanel = useHasBorderPanel(settings);
2079    const hasDimensionsPanel = useHasDimensionsPanel2(settings);
2080    const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
2081    const hasVariationsPanel = !!useBlockVariations(blockName)?.length;
2082    const hasGlobalStyles = hasTypographyPanel || hasColorPanel || hasLayoutPanel || hasVariationsPanel;
2083    return hasGlobalStyles;
2084  }
2085  function BlockMenuItem({ block }) {
2086    const hasBlockMenuItem = useBlockHasGlobalStyles(block.name);
2087    if (!hasBlockMenuItem) {
2088      return null;
2089    }
2090    return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2091      NavigationButtonAsItem,
2092      {
2093        path: "/blocks/" + encodeURIComponent(block.name),
2094        children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_components12.__experimentalHStack, { justify: "flex-start", children: [
2095          /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_block_editor2.BlockIcon, { icon: block.icon }),
2096          /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components12.FlexItem, { children: block.title })
2097        ] })
2098      }
2099    );
2100  }
2101  function BlockList({ filterValue }) {
2102    const sortedBlockTypes = useSortedBlockTypes();
2103    const debouncedSpeak = (0, import_compose2.useDebounce)(speak, 500);
2104    const { isMatchingSearchTerm } = (0, import_data4.useSelect)(import_blocks2.store);
2105    const filteredBlockTypes = !filterValue ? sortedBlockTypes : sortedBlockTypes.filter(
2106      (blockType) => isMatchingSearchTerm(blockType, filterValue)
2107    );
2108    const blockTypesListRef = (0, import_element8.useRef)(null);
2109    (0, import_element8.useEffect)(() => {
2110      if (!filterValue) {
2111        return;
2112      }
2113      const count = blockTypesListRef.current?.childElementCount || 0;
2114      const resultsFoundMessage = (0, import_i18n6.sprintf)(
2115        /* translators: %d: number of results. */
2116        (0, import_i18n6._n)("%d result found.", "%d results found.", count),
2117        count
2118      );
2119      debouncedSpeak(resultsFoundMessage, "polite");
2120    }, [filterValue, debouncedSpeak]);
2121    return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2122      "div",
2123      {
2124        ref: blockTypesListRef,
2125        className: "global-styles-ui-block-types-item-list",
2126        role: "list",
2127        children: filteredBlockTypes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components12.__experimentalText, { align: "center", as: "p", children: (0, import_i18n6.__)("No blocks found.") }) : filteredBlockTypes.map((block) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2128          BlockMenuItem,
2129          {
2130            block
2131          },
2132          "menu-itemblock-" + block.name
2133        ))
2134      }
2135    );
2136  }
2137  var MemoizedBlockList = (0, import_element8.memo)(BlockList);
2138  
2139  // packages/global-styles-ui/build-module/screen-block.js
2140  var import_blocks4 = __toESM(require_blocks());
2141  var import_block_editor4 = __toESM(require_block_editor());
2142  var import_element10 = __toESM(require_element());
2143  var import_data5 = __toESM(require_data());
2144  var import_core_data3 = __toESM(require_core_data());
2145  var import_components15 = __toESM(require_components());
2146  var import_i18n7 = __toESM(require_i18n());
2147  
2148  // packages/global-styles-ui/build-module/block-preview-panel.js
2149  var import_block_editor3 = __toESM(require_block_editor());
2150  var import_blocks3 = __toESM(require_blocks());
2151  var import_components13 = __toESM(require_components());
2152  var import_element9 = __toESM(require_element());
2153  var import_jsx_runtime21 = __toESM(require_jsx_runtime());
2154  
2155  // packages/global-styles-ui/build-module/subtitle.js
2156  var import_components14 = __toESM(require_components());
2157  var import_jsx_runtime22 = __toESM(require_jsx_runtime());
2158  function Subtitle({ children, level = 2 }) {
2159    return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_components14.__experimentalHeading, { className: "global-styles-ui-subtitle", level, children });
2160  }
2161  
2162  // packages/global-styles-ui/build-module/screen-block.js
2163  var import_jsx_runtime23 = __toESM(require_jsx_runtime());
2164  var {
2165    useHasDimensionsPanel: useHasDimensionsPanel3,
2166    useHasTypographyPanel: useHasTypographyPanel3,
2167    useHasBorderPanel: useHasBorderPanel2,
2168    useSettingsForBlockElement: useSettingsForBlockElement3,
2169    useHasColorPanel: useHasColorPanel3,
2170    useHasFiltersPanel,
2171    useHasImageSettingsPanel,
2172    useHasBackgroundPanel: useHasBackgroundPanel2,
2173    BackgroundPanel: StylesBackgroundPanel,
2174    BorderPanel: StylesBorderPanel,
2175    ColorPanel: StylesColorPanel,
2176    TypographyPanel: StylesTypographyPanel,
2177    DimensionsPanel: StylesDimensionsPanel,
2178    FiltersPanel: StylesFiltersPanel,
2179    ImageSettingsPanel,
2180    AdvancedPanel: StylesAdvancedPanel
2181  } = unlock(import_block_editor4.privateApis);
2182  
2183  // packages/global-styles-ui/build-module/screen-typography.js
2184  var import_i18n21 = __toESM(require_i18n());
2185  var import_components35 = __toESM(require_components());
2186  var import_element21 = __toESM(require_element());
2187  
2188  // packages/global-styles-ui/build-module/screen-body.js
2189  var import_components16 = __toESM(require_components());
2190  var import_jsx_runtime24 = __toESM(require_jsx_runtime());
2191  
2192  // packages/global-styles-ui/build-module/typography-elements.js
2193  var import_i18n8 = __toESM(require_i18n());
2194  var import_components17 = __toESM(require_components());
2195  var import_jsx_runtime25 = __toESM(require_jsx_runtime());
2196  
2197  // packages/global-styles-ui/build-module/variations/variations-typography.js
2198  var import_components20 = __toESM(require_components());
2199  
2200  // packages/global-styles-ui/build-module/preview-typography.js
2201  var import_components18 = __toESM(require_components());
2202  var import_jsx_runtime26 = __toESM(require_jsx_runtime());
2203  var StylesPreviewTypography = ({
2204    variation,
2205    isFocused,
2206    withHoverView
2207  }) => {
2208    return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2209      preview_wrapper_default,
2210      {
2211        label: variation.title,
2212        isFocused,
2213        withHoverView,
2214        children: ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2215          import_components18.__experimentalHStack,
2216          {
2217            spacing: 10 * ratio,
2218            justify: "center",
2219            style: {
2220              height: "100%",
2221              overflow: "hidden"
2222            },
2223            children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2224              PreviewTypography,
2225              {
2226                variation,
2227                fontSize: 85 * ratio
2228              }
2229            )
2230          },
2231          key
2232        )
2233      }
2234    );
2235  };
2236  var preview_typography_default = StylesPreviewTypography;
2237  
2238  // packages/global-styles-ui/build-module/variations/variation.js
2239  var import_components19 = __toESM(require_components());
2240  var import_element11 = __toESM(require_element());
2241  var import_keycodes = __toESM(require_keycodes());
2242  var import_i18n9 = __toESM(require_i18n());
2243  var import_jsx_runtime27 = __toESM(require_jsx_runtime());
2244  function Variation({
2245    variation,
2246    children,
2247    isPill = false,
2248    properties,
2249    showTooltip = false
2250  }) {
2251    const [isFocused, setIsFocused] = (0, import_element11.useState)(false);
2252    const {
2253      base,
2254      user,
2255      onChange: setUserConfig
2256    } = (0, import_element11.useContext)(GlobalStylesContext);
2257    const context = (0, import_element11.useMemo)(() => {
2258      let merged = mergeGlobalStyles(base, variation);
2259      if (properties) {
2260        merged = filterObjectByProperties(merged, properties);
2261      }
2262      return {
2263        user: variation,
2264        base,
2265        merged,
2266        onChange: () => {
2267        }
2268      };
2269    }, [variation, base, properties]);
2270    const selectVariation = () => setUserConfig(variation);
2271    const selectOnEnter = (event) => {
2272      if (event.keyCode === import_keycodes.ENTER) {
2273        event.preventDefault();
2274        selectVariation();
2275      }
2276    };
2277    const isActive = (0, import_element11.useMemo)(
2278      () => areGlobalStylesEqual(user, variation),
2279      [user, variation]
2280    );
2281    let label = variation?.title;
2282    if (variation?.description) {
2283      label = (0, import_i18n9.sprintf)(
2284        /* translators: 1: variation title. 2: variation description. */
2285        (0, import_i18n9._x)("%1$s (%2$s)", "variation label"),
2286        variation?.title,
2287        variation?.description
2288      );
2289    }
2290    const content = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2291      "div",
2292      {
2293        className: clsx_default("global-styles-ui-variations_item", {
2294          "is-active": isActive
2295        }),
2296        role: "button",
2297        onClick: selectVariation,
2298        onKeyDown: selectOnEnter,
2299        tabIndex: 0,
2300        "aria-label": label,
2301        "aria-current": isActive,
2302        onFocus: () => setIsFocused(true),
2303        onBlur: () => setIsFocused(false),
2304        children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2305          "div",
2306          {
2307            className: clsx_default("global-styles-ui-variations_item-preview", {
2308              "is-pill": isPill
2309            }),
2310            children: children(isFocused)
2311          }
2312        )
2313      }
2314    );
2315    return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(GlobalStylesContext.Provider, { value: context, children: showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components19.Tooltip, { text: variation?.title, children: content }) : content });
2316  }
2317  
2318  // packages/global-styles-ui/build-module/variations/variations-typography.js
2319  var import_jsx_runtime28 = __toESM(require_jsx_runtime());
2320  var propertiesToFilter = ["typography"];
2321  function TypographyVariations({
2322    title,
2323    gap = 2
2324  }) {
2325    const typographyVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter);
2326    if (typographyVariations?.length <= 1) {
2327      return null;
2328    }
2329    return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_components20.__experimentalVStack, { spacing: 3, children: [
2330      title && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Subtitle, { level: 3, children: title }),
2331      /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2332        import_components20.__experimentalGrid,
2333        {
2334          columns: 3,
2335          gap,
2336          className: "global-styles-ui-style-variations-container",
2337          children: typographyVariations.map(
2338            (variation, index) => {
2339              return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2340                Variation,
2341                {
2342                  variation,
2343                  properties: propertiesToFilter,
2344                  showTooltip: true,
2345                  children: () => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2346                    preview_typography_default,
2347                    {
2348                      variation
2349                    }
2350                  )
2351                },
2352                index
2353              );
2354            }
2355          )
2356        }
2357      )
2358    ] });
2359  }
2360  
2361  // packages/global-styles-ui/build-module/font-families.js
2362  var import_i18n19 = __toESM(require_i18n());
2363  var import_components33 = __toESM(require_components());
2364  var import_element20 = __toESM(require_element());
2365  
2366  // packages/global-styles-ui/build-module/font-library/context.js
2367  var import_element12 = __toESM(require_element());
2368  var import_data6 = __toESM(require_data());
2369  var import_core_data5 = __toESM(require_core_data());
2370  var import_i18n11 = __toESM(require_i18n());
2371  
2372  // packages/global-styles-ui/build-module/font-library/api.js
2373  var import_api_fetch = __toESM(require_api_fetch());
2374  var import_core_data4 = __toESM(require_core_data());
2375  var FONT_FAMILIES_URL = "/wp/v2/font-families";
2376  function invalidateFontFamilyCache(registry) {
2377    const { receiveEntityRecords } = registry.dispatch(import_core_data4.store);
2378    receiveEntityRecords(
2379      "postType",
2380      "wp_font_family",
2381      [],
2382      void 0,
2383      true
2384      // invalidateCache
2385    );
2386  }
2387  async function fetchInstallFontFamily(data, registry) {
2388    const config = {
2389      path: FONT_FAMILIES_URL,
2390      method: "POST",
2391      body: data
2392    };
2393    const response = await (0, import_api_fetch.default)(config);
2394    invalidateFontFamilyCache(registry);
2395    return {
2396      id: response.id,
2397      ...response.font_family_settings,
2398      fontFace: []
2399    };
2400  }
2401  async function fetchInstallFontFace(fontFamilyId, data, registry) {
2402    const config = {
2403      path: `$FONT_FAMILIES_URL}/$fontFamilyId}/font-faces`,
2404      method: "POST",
2405      body: data
2406    };
2407    const response = await (0, import_api_fetch.default)(config);
2408    invalidateFontFamilyCache(registry);
2409    return {
2410      id: response.id,
2411      ...response.font_face_settings
2412    };
2413  }
2414  
2415  // packages/global-styles-ui/build-module/font-library/utils/index.js
2416  var import_components21 = __toESM(require_components());
2417  
2418  // packages/global-styles-ui/build-module/font-library/utils/constants.js
2419  var import_i18n10 = __toESM(require_i18n());
2420  var ALLOWED_FILE_EXTENSIONS = ["otf", "ttf", "woff", "woff2"];
2421  var FONT_WEIGHTS = {
2422    100: (0, import_i18n10._x)("Thin", "font weight"),
2423    200: (0, import_i18n10._x)("Extra-light", "font weight"),
2424    300: (0, import_i18n10._x)("Light", "font weight"),
2425    400: (0, import_i18n10._x)("Normal", "font weight"),
2426    500: (0, import_i18n10._x)("Medium", "font weight"),
2427    600: (0, import_i18n10._x)("Semi-bold", "font weight"),
2428    700: (0, import_i18n10._x)("Bold", "font weight"),
2429    800: (0, import_i18n10._x)("Extra-bold", "font weight"),
2430    900: (0, import_i18n10._x)("Black", "font weight")
2431  };
2432  var FONT_STYLES = {
2433    normal: (0, import_i18n10._x)("Normal", "font style"),
2434    italic: (0, import_i18n10._x)("Italic", "font style")
2435  };
2436  
2437  // packages/global-styles-ui/build-module/font-library/utils/index.js
2438  var { File } = window;
2439  var { kebabCase } = unlock(import_components21.privateApis);
2440  function setUIValuesNeeded(font2, extraValues = {}) {
2441    if (!font2.name && (font2.fontFamily || font2.slug)) {
2442      font2.name = font2.fontFamily || font2.slug;
2443    }
2444    return {
2445      ...font2,
2446      ...extraValues
2447    };
2448  }
2449  function isUrlEncoded(url) {
2450    if (typeof url !== "string") {
2451      return false;
2452    }
2453    return url !== decodeURIComponent(url);
2454  }
2455  function getFontFaceVariantName(face) {
2456    const weightName = FONT_WEIGHTS[face.fontWeight ?? ""] || face.fontWeight;
2457    const styleName = face.fontStyle === "normal" ? "" : FONT_STYLES[face.fontStyle ?? ""] || face.fontStyle;
2458    return `$weightName} $styleName}`;
2459  }
2460  function mergeFontFaces(existing = [], incoming = []) {
2461    const map = /* @__PURE__ */ new Map();
2462    for (const face of existing) {
2463      map.set(`$face.fontWeight}$face.fontStyle}`, face);
2464    }
2465    for (const face of incoming) {
2466      map.set(`$face.fontWeight}$face.fontStyle}`, face);
2467    }
2468    return Array.from(map.values());
2469  }
2470  function mergeFontFamilies(existing = [], incoming = []) {
2471    const map = /* @__PURE__ */ new Map();
2472    for (const font2 of existing) {
2473      map.set(font2.slug, { ...font2 });
2474    }
2475    for (const font2 of incoming) {
2476      if (map.has(font2.slug)) {
2477        const { fontFace: incomingFontFaces, ...restIncoming } = font2;
2478        const existingFont = map.get(font2.slug);
2479        const mergedFontFaces = mergeFontFaces(
2480          existingFont.fontFace,
2481          incomingFontFaces
2482        );
2483        map.set(font2.slug, {
2484          ...restIncoming,
2485          fontFace: mergedFontFaces
2486        });
2487      } else {
2488        map.set(font2.slug, { ...font2 });
2489      }
2490    }
2491    return Array.from(map.values());
2492  }
2493  async function loadFontFaceInBrowser(fontFace, source, addTo = "all") {
2494    let dataSource;
2495    if (typeof source === "string") {
2496      dataSource = `url($source})`;
2497    } else if (source instanceof File) {
2498      dataSource = await source.arrayBuffer();
2499    } else {
2500      return;
2501    }
2502    const newFont = new window.FontFace(
2503      formatFontFaceName(fontFace.fontFamily),
2504      dataSource,
2505      {
2506        style: fontFace.fontStyle,
2507        weight: String(fontFace.fontWeight)
2508      }
2509    );
2510    const loadedFace = await newFont.load();
2511    if (addTo === "document" || addTo === "all") {
2512      document.fonts.add(loadedFace);
2513    }
2514    if (addTo === "iframe" || addTo === "all") {
2515      const iframe = document.querySelector(
2516        'iframe[name="editor-canvas"]'
2517      );
2518      if (iframe?.contentDocument) {
2519        iframe.contentDocument.fonts.add(loadedFace);
2520      }
2521    }
2522  }
2523  function unloadFontFaceInBrowser(fontFace, removeFrom = "all") {
2524    const unloadFontFace = (fonts) => {
2525      fonts.forEach((f2) => {
2526        if (f2.family === formatFontFaceName(fontFace?.fontFamily) && f2.weight === fontFace?.fontWeight && f2.style === fontFace?.fontStyle) {
2527          fonts.delete(f2);
2528        }
2529      });
2530    };
2531    if (removeFrom === "document" || removeFrom === "all") {
2532      unloadFontFace(document.fonts);
2533    }
2534    if (removeFrom === "iframe" || removeFrom === "all") {
2535      const iframe = document.querySelector(
2536        'iframe[name="editor-canvas"]'
2537      );
2538      if (iframe?.contentDocument) {
2539        unloadFontFace(iframe.contentDocument.fonts);
2540      }
2541    }
2542  }
2543  function getDisplaySrcFromFontFace(input) {
2544    if (!input) {
2545      return;
2546    }
2547    let src;
2548    if (Array.isArray(input)) {
2549      src = input[0];
2550    } else {
2551      src = input;
2552    }
2553    if (src.startsWith("file:.")) {
2554      return;
2555    }
2556    if (!isUrlEncoded(src)) {
2557      src = encodeURI(src);
2558    }
2559    return src;
2560  }
2561  function makeFontFamilyFormData(fontFamily) {
2562    const formData = new FormData();
2563    const { fontFace, category, ...familyWithValidParameters } = fontFamily;
2564    const fontFamilySettings = {
2565      ...familyWithValidParameters,
2566      slug: kebabCase(fontFamily.slug)
2567    };
2568    formData.append(
2569      "font_family_settings",
2570      JSON.stringify(fontFamilySettings)
2571    );
2572    return formData;
2573  }
2574  function makeFontFacesFormData(font2) {
2575    const fontFacesFormData = (font2?.fontFace ?? []).map(
2576      (item, faceIndex) => {
2577        const face = { ...item };
2578        const formData = new FormData();
2579        if (face.file) {
2580          const files = Array.isArray(face.file) ? face.file : [face.file];
2581          const src = [];
2582          files.forEach((file, key) => {
2583            const fileId = `file-$faceIndex}-$key}`;
2584            formData.append(fileId, file, file.name);
2585            src.push(fileId);
2586          });
2587          face.src = src.length === 1 ? src[0] : src;
2588          delete face.file;
2589          formData.append("font_face_settings", JSON.stringify(face));
2590        } else {
2591          formData.append("font_face_settings", JSON.stringify(face));
2592        }
2593        return formData;
2594      }
2595    );
2596    return fontFacesFormData;
2597  }
2598  async function batchInstallFontFaces(fontFamilyId, fontFacesData, registry) {
2599    const responses = [];
2600    for (const faceData of fontFacesData) {
2601      try {
2602        const response = await fetchInstallFontFace(
2603          fontFamilyId,
2604          faceData,
2605          registry
2606        );
2607        responses.push({ status: "fulfilled", value: response });
2608      } catch (error) {
2609        responses.push({ status: "rejected", reason: error });
2610      }
2611    }
2612    const results = {
2613      errors: [],
2614      successes: []
2615    };
2616    responses.forEach((result, index) => {
2617      if (result.status === "fulfilled" && result.value) {
2618        const response = result.value;
2619        results.successes.push(response);
2620      } else if (result.reason) {
2621        results.errors.push({
2622          data: fontFacesData[index],
2623          message: result.reason.message
2624        });
2625      }
2626    });
2627    return results;
2628  }
2629  async function downloadFontFaceAssets(src) {
2630    src = Array.isArray(src) ? src : [src];
2631    const files = await Promise.all(
2632      src.map(async (url) => {
2633        return fetch(new Request(url)).then((response) => {
2634          if (!response.ok) {
2635            throw new Error(
2636              `Error downloading font face asset from $url}. Server responded with status: $response.status}`
2637            );
2638          }
2639          return response.blob();
2640        }).then((blob) => {
2641          const filename = url.split("/").pop();
2642          const file = new File([blob], filename, {
2643            type: blob.type
2644          });
2645          return file;
2646        });
2647      })
2648    );
2649    return files.length === 1 ? files[0] : files;
2650  }
2651  function checkFontFaceInstalled(fontFace, collection) {
2652    return -1 !== collection.findIndex((collectionFontFace) => {
2653      return collectionFontFace.fontWeight === fontFace.fontWeight && collectionFontFace.fontStyle === fontFace.fontStyle;
2654    });
2655  }
2656  
2657  // packages/global-styles-ui/build-module/font-library/utils/set-immutably.js
2658  function setImmutably2(object, path, value) {
2659    path = Array.isArray(path) ? [...path] : [path];
2660    object = Array.isArray(object) ? [...object] : { ...object };
2661    const leaf = path.pop();
2662    let prev = object;
2663    for (const key of path) {
2664      const lvl = prev[key];
2665      prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl };
2666    }
2667    prev[leaf] = value;
2668    return object;
2669  }
2670  
2671  // packages/global-styles-ui/build-module/font-library/utils/toggleFont.js
2672  function toggleFont(font2, face, initialfonts = []) {
2673    const isFontActivated = (f2) => f2.slug === font2.slug;
2674    const getActivatedFont = (fonts) => fonts.find(isFontActivated);
2675    const toggleEntireFontFamily = (activatedFont2) => {
2676      if (!activatedFont2) {
2677        return [...initialfonts, font2];
2678      }
2679      return initialfonts.filter(
2680        (f2) => !isFontActivated(f2)
2681      );
2682    };
2683    const toggleFontVariant = (activatedFont2) => {
2684      const isFaceActivated = (f2) => f2.fontWeight === face.fontWeight && f2.fontStyle === face.fontStyle;
2685      if (!activatedFont2) {
2686        return [...initialfonts, { ...font2, fontFace: [face] }];
2687      }
2688      let newFontFaces = activatedFont2.fontFace || [];
2689      if (newFontFaces.find(isFaceActivated)) {
2690        newFontFaces = newFontFaces.filter(
2691          (f2) => !isFaceActivated(f2)
2692        );
2693      } else {
2694        newFontFaces = [...newFontFaces, face];
2695      }
2696      if (newFontFaces.length === 0) {
2697        return initialfonts.filter(
2698          (f2) => !isFontActivated(f2)
2699        );
2700      }
2701      return initialfonts.map(
2702        (f2) => isFontActivated(f2) ? { ...f2, fontFace: newFontFaces } : f2
2703      );
2704    };
2705    const activatedFont = getActivatedFont(initialfonts);
2706    if (!face) {
2707      return toggleEntireFontFamily(activatedFont);
2708    }
2709    return toggleFontVariant(activatedFont);
2710  }
2711  
2712  // packages/global-styles-ui/build-module/font-library/context.js
2713  var import_jsx_runtime29 = __toESM(require_jsx_runtime());
2714  var FontLibraryContext = (0, import_element12.createContext)(
2715    {}
2716  );
2717  FontLibraryContext.displayName = "FontLibraryContext";
2718  function FontLibraryProvider({ children }) {
2719    const registry = (0, import_data6.useRegistry)();
2720    const { saveEntityRecord, deleteEntityRecord } = (0, import_data6.useDispatch)(import_core_data5.store);
2721    const { globalStylesId } = (0, import_data6.useSelect)((select) => {
2722      const { __experimentalGetCurrentGlobalStylesId } = select(import_core_data5.store);
2723      return { globalStylesId: __experimentalGetCurrentGlobalStylesId() };
2724    }, []);
2725    const globalStyles = (0, import_core_data5.useEntityRecord)(
2726      "root",
2727      "globalStyles",
2728      globalStylesId
2729    );
2730    const [isInstalling, setIsInstalling] = (0, import_element12.useState)(false);
2731    const { records: libraryPosts = [], isResolving: isResolvingLibrary } = (0, import_core_data5.useEntityRecords)(
2732      "postType",
2733      "wp_font_family",
2734      {
2735        _embed: true
2736      }
2737    );
2738    const libraryFonts = (libraryPosts || []).map((fontFamilyPost) => {
2739      return {
2740        id: fontFamilyPost.id,
2741        ...fontFamilyPost.font_family_settings || {},
2742        fontFace: fontFamilyPost?._embedded?.font_faces?.map(
2743          (face) => face.font_face_settings
2744        ) || []
2745      };
2746    }) || [];
2747    const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies");
2748    const saveFontFamilies = async (fonts) => {
2749      if (!globalStyles.record) {
2750        return;
2751      }
2752      const updatedGlobalStyles = globalStyles.record;
2753      const finalGlobalStyles = setImmutably2(
2754        updatedGlobalStyles ?? {},
2755        ["settings", "typography", "fontFamilies"],
2756        fonts
2757      );
2758      await saveEntityRecord("root", "globalStyles", finalGlobalStyles);
2759    };
2760    const [modalTabOpen, setModalTabOpen] = (0, import_element12.useState)("");
2761    const [libraryFontSelected, setLibraryFontSelected] = (0, import_element12.useState)(void 0);
2762    const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
2763    const customFonts = fontFamilies?.custom ? fontFamilies.custom.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
2764    const baseCustomFonts = libraryFonts ? libraryFonts.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
2765    (0, import_element12.useEffect)(() => {
2766      if (!modalTabOpen) {
2767        setLibraryFontSelected(void 0);
2768      }
2769    }, [modalTabOpen]);
2770    const handleSetLibraryFontSelected = (font2) => {
2771      if (!font2) {
2772        setLibraryFontSelected(void 0);
2773        return;
2774      }
2775      const fonts = font2.source === "theme" ? themeFonts : baseCustomFonts;
2776      const fontSelected = fonts.find((f2) => f2.slug === font2.slug);
2777      setLibraryFontSelected({
2778        ...fontSelected || font2,
2779        source: font2.source
2780      });
2781    };
2782    const [loadedFontUrls] = (0, import_element12.useState)(/* @__PURE__ */ new Set());
2783    const getAvailableFontsOutline = (availableFontFamilies) => {
2784      const outline = availableFontFamilies.reduce(
2785        (acc, font2) => {
2786          const availableFontFaces = font2?.fontFace && font2.fontFace?.length > 0 ? font2?.fontFace.map(
2787            (face) => `$face.fontStyle ?? ""}$face.fontWeight ?? ""}`
2788          ) : ["normal400"];
2789          acc[font2.slug] = availableFontFaces;
2790          return acc;
2791        },
2792        {}
2793      );
2794      return outline;
2795    };
2796    const getActivatedFontsOutline = (source) => {
2797      switch (source) {
2798        case "theme":
2799          return getAvailableFontsOutline(themeFonts);
2800        case "custom":
2801        default:
2802          return getAvailableFontsOutline(customFonts);
2803      }
2804    };
2805    const isFontActivated = (slug, style, weight, source) => {
2806      if (!style && !weight) {
2807        return !!getActivatedFontsOutline(source)[slug];
2808      }
2809      return !!getActivatedFontsOutline(source)[slug]?.includes(
2810        (style ?? "") + (weight ?? "")
2811      );
2812    };
2813    const getFontFacesActivated = (slug, source) => {
2814      return getActivatedFontsOutline(source)[slug] || [];
2815    };
2816    async function installFonts(fontFamiliesToInstall) {
2817      setIsInstalling(true);
2818      try {
2819        const fontFamiliesToActivate = [];
2820        let installationErrors = [];
2821        for (const fontFamilyToInstall of fontFamiliesToInstall) {
2822          let isANewFontFamily = false;
2823          const fontFamilyRecords = await (0, import_data6.resolveSelect)(
2824            import_core_data5.store
2825          ).getEntityRecords("postType", "wp_font_family", {
2826            slug: fontFamilyToInstall.slug,
2827            per_page: 1,
2828            _embed: true
2829          });
2830          const fontFamilyPost = fontFamilyRecords && fontFamilyRecords.length > 0 ? fontFamilyRecords[0] : null;
2831          let installedFontFamily = fontFamilyPost ? {
2832            id: fontFamilyPost.id,
2833            ...fontFamilyPost.font_family_settings,
2834            fontFace: (fontFamilyPost?._embedded?.font_faces ?? []).map(
2835              (face) => face.font_face_settings
2836            ) || []
2837          } : null;
2838          if (!installedFontFamily) {
2839            isANewFontFamily = true;
2840            installedFontFamily = await fetchInstallFontFamily(
2841              makeFontFamilyFormData(fontFamilyToInstall),
2842              registry
2843            );
2844          }
2845          const alreadyInstalledFontFaces = installedFontFamily.fontFace && fontFamilyToInstall.fontFace ? installedFontFamily.fontFace.filter(
2846            (fontFaceToInstall) => fontFaceToInstall && fontFamilyToInstall.fontFace && checkFontFaceInstalled(
2847              fontFaceToInstall,
2848              fontFamilyToInstall.fontFace
2849            )
2850          ) : [];
2851          if (installedFontFamily.fontFace && fontFamilyToInstall.fontFace) {
2852            fontFamilyToInstall.fontFace = fontFamilyToInstall.fontFace.filter(
2853              (fontFaceToInstall) => !checkFontFaceInstalled(
2854                fontFaceToInstall,
2855                installedFontFamily.fontFace
2856              )
2857            );
2858          }
2859          let successfullyInstalledFontFaces = [];
2860          let unsuccessfullyInstalledFontFaces = [];
2861          if (fontFamilyToInstall?.fontFace?.length ?? 0 > 0) {
2862            const response = await batchInstallFontFaces(
2863              installedFontFamily.id,
2864              makeFontFacesFormData(
2865                fontFamilyToInstall
2866              ),
2867              registry
2868            );
2869            successfullyInstalledFontFaces = response?.successes;
2870            unsuccessfullyInstalledFontFaces = response?.errors;
2871          }
2872          if (successfullyInstalledFontFaces?.length > 0 || alreadyInstalledFontFaces?.length > 0) {
2873            installedFontFamily.fontFace = [
2874              ...successfullyInstalledFontFaces
2875            ];
2876            fontFamiliesToActivate.push(installedFontFamily);
2877          }
2878          if (installedFontFamily && !fontFamilyToInstall?.fontFace?.length) {
2879            fontFamiliesToActivate.push(installedFontFamily);
2880          }
2881          if (isANewFontFamily && (fontFamilyToInstall?.fontFace?.length ?? 0) > 0 && successfullyInstalledFontFaces?.length === 0) {
2882            await deleteEntityRecord(
2883              "postType",
2884              "wp_font_family",
2885              installedFontFamily.id,
2886              { force: true }
2887            );
2888          }
2889          installationErrors = installationErrors.concat(
2890            unsuccessfullyInstalledFontFaces
2891          );
2892        }
2893        const installationErrorMessages = installationErrors.reduce(
2894          (unique, item) => unique.includes(item.message) ? unique : [...unique, item.message],
2895          []
2896        );
2897        if (fontFamiliesToActivate.length > 0) {
2898          const activeFonts = activateCustomFontFamilies(
2899            fontFamiliesToActivate
2900          );
2901          await saveFontFamilies(activeFonts);
2902        }
2903        if (installationErrorMessages.length > 0) {
2904          const installError = new Error((0, import_i18n11.__)("There was an error installing fonts."));
2905          installError.installationErrors = installationErrorMessages;
2906          throw installError;
2907        }
2908      } finally {
2909        setIsInstalling(false);
2910      }
2911    }
2912    async function uninstallFontFamily(fontFamilyToUninstall) {
2913      if (!fontFamilyToUninstall?.id) {
2914        throw new Error((0, import_i18n11.__)("Font family to uninstall is not defined."));
2915      }
2916      try {
2917        await deleteEntityRecord(
2918          "postType",
2919          "wp_font_family",
2920          fontFamilyToUninstall.id,
2921          { force: true }
2922        );
2923        const activeFonts = deactivateFontFamily(fontFamilyToUninstall);
2924        await saveFontFamilies(activeFonts);
2925        return { deleted: true };
2926      } catch (error) {
2927        console.error(
2928          `There was an error uninstalling the font family:`,
2929          error
2930        );
2931        throw error;
2932      }
2933    }
2934    const deactivateFontFamily = (font2) => {
2935      const initialCustomFonts = fontFamilies?.[font2.source ?? ""] ?? [];
2936      const newCustomFonts = initialCustomFonts.filter(
2937        (f2) => f2.slug !== font2.slug
2938      );
2939      const activeFonts = {
2940        ...fontFamilies,
2941        [font2.source ?? ""]: newCustomFonts
2942      };
2943      setFontFamilies(activeFonts);
2944      if (font2.fontFace) {
2945        font2.fontFace.forEach((face) => {
2946          unloadFontFaceInBrowser(face, "all");
2947        });
2948      }
2949      return activeFonts;
2950    };
2951    const activateCustomFontFamilies = (fontsToAdd) => {
2952      const fontsToActivate = cleanFontsForSave(fontsToAdd);
2953      const activeFonts = {
2954        ...fontFamilies,
2955        // Merge the existing custom fonts with the new fonts.
2956        custom: mergeFontFamilies(fontFamilies?.custom, fontsToActivate)
2957      };
2958      setFontFamilies(activeFonts);
2959      loadFontsInBrowser(fontsToActivate);
2960      return activeFonts;
2961    };
2962    const cleanFontsForSave = (fonts) => {
2963      return fonts.map(({ id: _familyDbId, fontFace, ...font2 }) => ({
2964        ...font2,
2965        ...fontFace && fontFace.length > 0 ? {
2966          fontFace: fontFace.map(
2967            ({ id: _faceDbId, ...face }) => face
2968          )
2969        } : {}
2970      }));
2971    };
2972    const loadFontsInBrowser = (fonts) => {
2973      fonts.forEach((font2) => {
2974        if (font2.fontFace) {
2975          font2.fontFace.forEach((face) => {
2976            const displaySrc = getDisplaySrcFromFontFace(
2977              face?.src ?? ""
2978            );
2979            if (displaySrc) {
2980              loadFontFaceInBrowser(face, displaySrc, "all");
2981            }
2982          });
2983        }
2984      });
2985    };
2986    const toggleActivateFont = (font2, face) => {
2987      const initialFonts = fontFamilies?.[font2.source ?? ""] ?? [];
2988      const newFonts = toggleFont(font2, face, initialFonts);
2989      setFontFamilies({
2990        ...fontFamilies,
2991        [font2.source ?? ""]: newFonts
2992      });
2993      const isFaceActivated = isFontActivated(
2994        font2.slug,
2995        face?.fontStyle ?? "",
2996        face?.fontWeight ?? "",
2997        font2.source ?? "custom"
2998      );
2999      if (face && isFaceActivated) {
3000        unloadFontFaceInBrowser(face, "all");
3001      } else {
3002        const displaySrc = getDisplaySrcFromFontFace(face?.src ?? "");
3003        if (face && displaySrc) {
3004          loadFontFaceInBrowser(face, displaySrc, "all");
3005        }
3006      }
3007    };
3008    const loadFontFaceAsset = async (fontFace) => {
3009      if (!fontFace.src) {
3010        return;
3011      }
3012      const src = getDisplaySrcFromFontFace(fontFace.src);
3013      if (!src || loadedFontUrls.has(src)) {
3014        return;
3015      }
3016      loadFontFaceInBrowser(fontFace, src, "document");
3017      loadedFontUrls.add(src);
3018    };
3019    return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3020      FontLibraryContext.Provider,
3021      {
3022        value: {
3023          libraryFontSelected,
3024          handleSetLibraryFontSelected,
3025          fontFamilies: fontFamilies ?? {},
3026          baseCustomFonts,
3027          isFontActivated,
3028          getFontFacesActivated,
3029          loadFontFaceAsset,
3030          installFonts,
3031          uninstallFontFamily,
3032          toggleActivateFont,
3033          getAvailableFontsOutline,
3034          modalTabOpen,
3035          setModalTabOpen,
3036          saveFontFamilies,
3037          isResolvingLibrary,
3038          isInstalling
3039        },
3040        children
3041      }
3042    );
3043  }
3044  var context_default = FontLibraryProvider;
3045  
3046  // packages/global-styles-ui/build-module/font-library/modal.js
3047  var import_i18n17 = __toESM(require_i18n());
3048  var import_components31 = __toESM(require_components());
3049  var import_core_data8 = __toESM(require_core_data());
3050  var import_data8 = __toESM(require_data());
3051  
3052  // packages/global-styles-ui/build-module/font-library/installed-fonts.js
3053  var import_components25 = __toESM(require_components());
3054  var import_core_data6 = __toESM(require_core_data());
3055  var import_data7 = __toESM(require_data());
3056  var import_element15 = __toESM(require_element());
3057  var import_i18n13 = __toESM(require_i18n());
3058  
3059  // packages/global-styles-ui/build-module/font-library/font-card.js
3060  var import_i18n12 = __toESM(require_i18n());
3061  var import_components23 = __toESM(require_components());
3062  
3063  // packages/global-styles-ui/build-module/font-library/font-demo.js
3064  var import_components22 = __toESM(require_components());
3065  var import_element13 = __toESM(require_element());
3066  var import_jsx_runtime30 = __toESM(require_jsx_runtime());
3067  function getPreviewUrl(fontFace) {
3068    if (fontFace.preview) {
3069      return fontFace.preview;
3070    }
3071    if (fontFace.src) {
3072      return Array.isArray(fontFace.src) ? fontFace.src[0] : fontFace.src;
3073    }
3074    return void 0;
3075  }
3076  function getDisplayFontFace(font2) {
3077    if ("fontStyle" in font2 && font2.fontStyle || "fontWeight" in font2 && font2.fontWeight) {
3078      return font2;
3079    }
3080    if ("fontFace" in font2 && font2.fontFace && font2.fontFace.length) {
3081      return font2.fontFace.find(
3082        (face) => face.fontStyle === "normal" && face.fontWeight === "400"
3083      ) || font2.fontFace[0];
3084    }
3085    return {
3086      fontStyle: "normal",
3087      fontWeight: "400",
3088      fontFamily: font2.fontFamily
3089    };
3090  }
3091  function FontDemo({ font: font2, text }) {
3092    const ref = (0, import_element13.useRef)(null);
3093    const fontFace = getDisplayFontFace(font2);
3094    const style = getFamilyPreviewStyle(font2);
3095    text = text || ("name" in font2 ? font2.name : "");
3096    const customPreviewUrl = font2.preview;
3097    const [isIntersecting, setIsIntersecting] = (0, import_element13.useState)(false);
3098    const [isAssetLoaded, setIsAssetLoaded] = (0, import_element13.useState)(false);
3099    const { loadFontFaceAsset } = (0, import_element13.useContext)(FontLibraryContext);
3100    const previewUrl = customPreviewUrl ?? getPreviewUrl(fontFace);
3101    const isPreviewImage = previewUrl && previewUrl.match(/\.(png|jpg|jpeg|gif|svg)$/i);
3102    const faceStyles = getFacePreviewStyle(fontFace);
3103    const textDemoStyle = {
3104      fontSize: "18px",
3105      lineHeight: 1,
3106      opacity: isAssetLoaded ? "1" : "0",
3107      ...style,
3108      ...faceStyles
3109    };
3110    (0, import_element13.useEffect)(() => {
3111      const observer = new window.IntersectionObserver(([entry]) => {
3112        setIsIntersecting(entry.isIntersecting);
3113      }, {});
3114      if (ref.current) {
3115        observer.observe(ref.current);
3116      }
3117      return () => observer.disconnect();
3118    }, [ref]);
3119    (0, import_element13.useEffect)(() => {
3120      const loadAsset = async () => {
3121        if (isIntersecting) {
3122          if (!isPreviewImage && fontFace.src) {
3123            await loadFontFaceAsset(fontFace);
3124          }
3125          setIsAssetLoaded(true);
3126        }
3127      };
3128      loadAsset();
3129    }, [fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage]);
3130    return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { ref, children: isPreviewImage ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
3131      "img",
3132      {
3133        src: previewUrl,
3134        loading: "lazy",
3135        alt: text,
3136        className: "font-library__font-variant_demo-image"
3137      }
3138    ) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
3139      import_components22.__experimentalText,
3140      {
3141        style: textDemoStyle,
3142        className: "font-library__font-variant_demo-text",
3143        children: text
3144      }
3145    ) });
3146  }
3147  var font_demo_default = FontDemo;
3148  
3149  // packages/global-styles-ui/build-module/font-library/font-card.js
3150  var import_jsx_runtime31 = __toESM(require_jsx_runtime());
3151  function FontCard({
3152    font: font2,
3153    onClick,
3154    variantsText,
3155    navigatorPath
3156  }) {
3157    const variantsCount = font2.fontFace?.length || 1;
3158    const style = {
3159      cursor: !!onClick ? "pointer" : "default"
3160    };
3161    const navigator = (0, import_components23.useNavigator)();
3162    return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3163      import_components23.Button,
3164      {
3165        __next40pxDefaultSize: true,
3166        onClick: () => {
3167          onClick();
3168          if (navigatorPath) {
3169            navigator.goTo(navigatorPath);
3170          }
3171        },
3172        style,
3173        className: "font-library__font-card",
3174        children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_components23.Flex, { justify: "space-between", wrap: false, children: [
3175          /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(font_demo_default, { font: font2 }),
3176          /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_components23.Flex, { justify: "flex-end", children: [
3177            /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components23.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components23.__experimentalText, { className: "font-library__font-card__count", children: variantsText || (0, import_i18n12.sprintf)(
3178              /* translators: %d: Number of font variants. */
3179              (0, import_i18n12._n)(
3180                "%d variant",
3181                "%d variants",
3182                variantsCount
3183              ),
3184              variantsCount
3185            ) }) }),
3186            /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components23.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(icon_default, { icon: (0, import_i18n12.isRTL)() ? chevron_left_default : chevron_right_default }) })
3187          ] })
3188        ] })
3189      }
3190    );
3191  }
3192  var font_card_default = FontCard;
3193  
3194  // packages/global-styles-ui/build-module/font-library/library-font-variant.js
3195  var import_element14 = __toESM(require_element());
3196  var import_components24 = __toESM(require_components());
3197  var import_jsx_runtime32 = __toESM(require_jsx_runtime());
3198  function LibraryFontVariant({
3199    face,
3200    font: font2
3201  }) {
3202    const { isFontActivated, toggleActivateFont } = (0, import_element14.useContext)(FontLibraryContext);
3203    const isInstalled = (font2?.fontFace?.length ?? 0) > 0 ? isFontActivated(
3204      font2.slug,
3205      face.fontStyle,
3206      face.fontWeight,
3207      font2.source
3208    ) : isFontActivated(font2.slug, void 0, void 0, font2.source);
3209    const handleToggleActivation = () => {
3210      if ((font2?.fontFace?.length ?? 0) > 0) {
3211        toggleActivateFont(font2, face);
3212        return;
3213      }
3214      toggleActivateFont(font2);
3215    };
3216    const displayName = font2.name + " " + getFontFaceVariantName(face);
3217    const checkboxId = (0, import_element14.useId)();
3218    return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_components24.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [
3219      /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3220        import_components24.CheckboxControl,
3221        {
3222          checked: isInstalled,
3223          onChange: handleToggleActivation,
3224          id: checkboxId
3225        }
3226      ),
3227      /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3228        font_demo_default,
3229        {
3230          font: face,
3231          text: displayName,
3232          onClick: handleToggleActivation
3233        }
3234      ) })
3235    ] }) });
3236  }
3237  var library_font_variant_default = LibraryFontVariant;
3238  
3239  // packages/global-styles-ui/build-module/font-library/utils/sort-font-faces.js
3240  function getNumericFontWeight(value) {
3241    switch (value) {
3242      case "normal":
3243        return 400;
3244      case "bold":
3245        return 700;
3246      case "bolder":
3247        return 500;
3248      case "lighter":
3249        return 300;
3250      default:
3251        return parseInt(value, 10);
3252    }
3253  }
3254  function sortFontFaces(faces) {
3255    return faces.sort((a2, b2) => {
3256      if (a2.fontStyle === "normal" && b2.fontStyle !== "normal") {
3257        return -1;
3258      }
3259      if (b2.fontStyle === "normal" && a2.fontStyle !== "normal") {
3260        return 1;
3261      }
3262      if (a2.fontStyle === b2.fontStyle) {
3263        return getNumericFontWeight(a2.fontWeight?.toString() ?? "normal") - getNumericFontWeight(b2.fontWeight?.toString() ?? "normal");
3264      }
3265      if (!a2.fontStyle || !b2.fontStyle) {
3266        return !a2.fontStyle ? 1 : -1;
3267      }
3268      return a2.fontStyle.localeCompare(b2.fontStyle);
3269    });
3270  }
3271  
3272  // packages/global-styles-ui/build-module/font-library/installed-fonts.js
3273  var import_jsx_runtime33 = __toESM(require_jsx_runtime());
3274  function InstalledFonts() {
3275    const {
3276      baseCustomFonts,
3277      libraryFontSelected,
3278      handleSetLibraryFontSelected,
3279      uninstallFontFamily,
3280      isResolvingLibrary,
3281      isInstalling,
3282      saveFontFamilies,
3283      getFontFacesActivated
3284    } = (0, import_element15.useContext)(FontLibraryContext);
3285    const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies");
3286    const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0, import_element15.useState)(false);
3287    const [notice, setNotice] = (0, import_element15.useState)(null);
3288    const [baseFontFamilies] = useSetting("typography.fontFamilies", void 0, "base");
3289    const globalStylesId = (0, import_data7.useSelect)((select) => {
3290      const { __experimentalGetCurrentGlobalStylesId } = select(import_core_data6.store);
3291      return __experimentalGetCurrentGlobalStylesId();
3292    }, []);
3293    const globalStyles = (0, import_core_data6.useEntityRecord)(
3294      "root",
3295      "globalStyles",
3296      globalStylesId
3297    );
3298    const fontFamiliesHasChanges = !!globalStyles?.edits?.settings?.typography?.fontFamilies;
3299    const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
3300    const themeFontsSlugs = new Set(themeFonts.map((f2) => f2.slug));
3301    const baseThemeFonts = baseFontFamilies?.theme ? themeFonts.concat(
3302      baseFontFamilies.theme.filter((f2) => !themeFontsSlugs.has(f2.slug)).map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name))
3303    ) : [];
3304    const customFontFamilyId = libraryFontSelected?.source === "custom" && libraryFontSelected?.id;
3305    const canUserDelete = (0, import_data7.useSelect)(
3306      (select) => {
3307        const { canUser } = select(import_core_data6.store);
3308        return customFontFamilyId && canUser("delete", {
3309          kind: "postType",
3310          name: "wp_font_family",
3311          id: customFontFamilyId
3312        });
3313      },
3314      [customFontFamilyId]
3315    );
3316    const shouldDisplayDeleteButton = !!libraryFontSelected && libraryFontSelected?.source !== "theme" && canUserDelete;
3317    const handleUninstallClick = () => {
3318      setIsConfirmDeleteOpen(true);
3319    };
3320    const handleUpdate = async () => {
3321      setNotice(null);
3322      try {
3323        await saveFontFamilies(fontFamilies);
3324        setNotice({
3325          type: "success",
3326          message: (0, import_i18n13.__)("Font family updated successfully.")
3327        });
3328      } catch (error) {
3329        setNotice({
3330          type: "error",
3331          message: (0, import_i18n13.sprintf)(
3332            /* translators: %s: error message */
3333            (0, import_i18n13.__)("There was an error updating the font family. %s"),
3334            error.message
3335          )
3336        });
3337      }
3338    };
3339    const getFontFacesToDisplay = (font2) => {
3340      if (!font2) {
3341        return [];
3342      }
3343      if (!font2.fontFace || !font2.fontFace.length) {
3344        return [
3345          {
3346            fontFamily: font2.fontFamily,
3347            fontStyle: "normal",
3348            fontWeight: "400"
3349          }
3350        ];
3351      }
3352      return sortFontFaces(font2.fontFace);
3353    };
3354    const getFontCardVariantsText = (font2) => {
3355      const variantsInstalled = font2?.fontFace && (font2?.fontFace?.length ?? 0) > 0 ? font2.fontFace.length : 1;
3356      const variantsActive = getFontFacesActivated(
3357        font2.slug,
3358        font2.source
3359      ).length;
3360      return (0, import_i18n13.sprintf)(
3361        /* translators: 1: Active font variants, 2: Total font variants. */
3362        (0, import_i18n13.__)("%1$d/%2$d variants active"),
3363        variantsActive,
3364        variantsInstalled
3365      );
3366    };
3367    (0, import_element15.useEffect)(() => {
3368      handleSetLibraryFontSelected(libraryFontSelected);
3369    }, []);
3370    const activeFontsCount = libraryFontSelected ? getFontFacesActivated(
3371      libraryFontSelected.slug,
3372      libraryFontSelected.source
3373    ).length : 0;
3374    const selectedFontsCount = libraryFontSelected?.fontFace?.length ?? (libraryFontSelected?.fontFamily ? 1 : 0);
3375    const isIndeterminate = activeFontsCount > 0 && activeFontsCount !== selectedFontsCount;
3376    const isSelectAllChecked = activeFontsCount === selectedFontsCount;
3377    const toggleSelectAll = () => {
3378      if (!libraryFontSelected || !libraryFontSelected?.source) {
3379        return;
3380      }
3381      const initialFonts = fontFamilies?.[libraryFontSelected.source]?.filter(
3382        (f2) => f2.slug !== libraryFontSelected.slug
3383      ) ?? [];
3384      const newFonts = isSelectAllChecked ? initialFonts : [...initialFonts, libraryFontSelected];
3385      setFontFamilies({
3386        ...fontFamilies,
3387        [libraryFontSelected.source]: newFonts
3388      });
3389      if (libraryFontSelected.fontFace) {
3390        libraryFontSelected.fontFace.forEach((face) => {
3391          if (isSelectAllChecked) {
3392            unloadFontFaceInBrowser(face, "all");
3393          } else {
3394            const displaySrc = getDisplaySrcFromFontFace(
3395              face?.src ?? ""
3396            );
3397            if (displaySrc) {
3398              loadFontFaceInBrowser(face, displaySrc, "all");
3399            }
3400          }
3401        });
3402      }
3403    };
3404    const hasFonts = baseThemeFonts.length > 0 || baseCustomFonts.length > 0;
3405    return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "font-library__tabpanel-layout", children: [
3406      isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.ProgressBar, {}) }),
3407      !isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
3408        /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
3409          import_components25.Navigator,
3410          {
3411            initialPath: libraryFontSelected ? "/fontFamily" : "/",
3412            children: [
3413              /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.Navigator.Screen, { path: "/", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components25.__experimentalVStack, { spacing: "8", children: [
3414                notice && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3415                  import_components25.Notice,
3416                  {
3417                    status: notice.type,
3418                    onRemove: () => setNotice(null),
3419                    children: notice.message
3420                  }
3421                ),
3422                !hasFonts && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.__experimentalText, { as: "p", children: (0, import_i18n13.__)("No fonts installed.") }),
3423                baseThemeFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components25.__experimentalVStack, { children: [
3424                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h2", {
3425                    className: "font-library__fonts-title",
3426                    /* translators: Heading for a list of fonts provided by the theme. */
3427                    children: (0, import_i18n13._x)("Theme", "font source")
3428                  }),
3429                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3430                    "ul",
3431                    {
3432                      role: "list",
3433                      className: "font-library__fonts-list",
3434                      children: baseThemeFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3435                        "li",
3436                        {
3437                          className: "font-library__fonts-list-item",
3438                          children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3439                            font_card_default,
3440                            {
3441                              font: font2,
3442                              navigatorPath: "/fontFamily",
3443                              variantsText: getFontCardVariantsText(
3444                                font2
3445                              ),
3446                              onClick: () => {
3447                                setNotice(null);
3448                                handleSetLibraryFontSelected(
3449                                  font2
3450                                );
3451                              }
3452                            }
3453                          )
3454                        },
3455                        font2.slug
3456                      ))
3457                    }
3458                  )
3459                ] }),
3460                baseCustomFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components25.__experimentalVStack, { children: [
3461                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h2", {
3462                    className: "font-library__fonts-title",
3463                    /* translators: Heading for a list of fonts installed by the user. */
3464                    children: (0, import_i18n13._x)("Custom", "font source")
3465                  }),
3466                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3467                    "ul",
3468                    {
3469                      role: "list",
3470                      className: "font-library__fonts-list",
3471                      children: baseCustomFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3472                        "li",
3473                        {
3474                          className: "font-library__fonts-list-item",
3475                          children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3476                            font_card_default,
3477                            {
3478                              font: font2,
3479                              navigatorPath: "/fontFamily",
3480                              variantsText: getFontCardVariantsText(
3481                                font2
3482                              ),
3483                              onClick: () => {
3484                                setNotice(null);
3485                                handleSetLibraryFontSelected(
3486                                  font2
3487                                );
3488                              }
3489                            }
3490                          )
3491                        },
3492                        font2.slug
3493                      ))
3494                    }
3495                  )
3496                ] })
3497              ] }) }),
3498              /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components25.Navigator.Screen, { path: "/fontFamily", children: [
3499                libraryFontSelected && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3500                  ConfirmDeleteDialog,
3501                  {
3502                    font: libraryFontSelected,
3503                    isOpen: isConfirmDeleteOpen,
3504                    setIsOpen: setIsConfirmDeleteOpen,
3505                    setNotice,
3506                    uninstallFontFamily,
3507                    handleSetLibraryFontSelected
3508                  }
3509                ),
3510                /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components25.Flex, { justify: "flex-start", children: [
3511                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3512                    import_components25.Navigator.BackButton,
3513                    {
3514                      icon: (0, import_i18n13.isRTL)() ? chevron_right_default : chevron_left_default,
3515                      size: "small",
3516                      onClick: () => {
3517                        handleSetLibraryFontSelected(
3518                          void 0
3519                        );
3520                        setNotice(null);
3521                      },
3522                      label: (0, import_i18n13.__)("Back")
3523                    }
3524                  ),
3525                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3526                    import_components25.__experimentalHeading,
3527                    {
3528                      level: 2,
3529                      size: 13,
3530                      className: "global-styles-ui-header",
3531                      children: libraryFontSelected?.name
3532                    }
3533                  )
3534                ] }),
3535                notice && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
3536                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.__experimentalSpacer, { margin: 1 }),
3537                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3538                    import_components25.Notice,
3539                    {
3540                      status: notice.type,
3541                      onRemove: () => setNotice(null),
3542                      children: notice.message
3543                    }
3544                  ),
3545                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.__experimentalSpacer, { margin: 1 })
3546                ] }),
3547                /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.__experimentalSpacer, { margin: 4 }),
3548                /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.__experimentalText, { children: (0, import_i18n13.__)(
3549                  "Choose font variants. Keep in mind that too many variants could make your site slower."
3550                ) }),
3551                /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.__experimentalSpacer, { margin: 4 }),
3552                /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components25.__experimentalVStack, { spacing: 0, children: [
3553                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3554                    import_components25.CheckboxControl,
3555                    {
3556                      className: "font-library__select-all",
3557                      label: (0, import_i18n13.__)("Select all"),
3558                      checked: isSelectAllChecked,
3559                      onChange: toggleSelectAll,
3560                      indeterminate: isIndeterminate
3561                    }
3562                  ),
3563                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.__experimentalSpacer, { margin: 8 }),
3564                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3565                    "ul",
3566                    {
3567                      role: "list",
3568                      className: "font-library__fonts-list",
3569                      children: libraryFontSelected && getFontFacesToDisplay(
3570                        libraryFontSelected
3571                      ).map((face, i2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3572                        "li",
3573                        {
3574                          className: "font-library__fonts-list-item",
3575                          children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3576                            library_font_variant_default,
3577                            {
3578                              font: libraryFontSelected,
3579                              face
3580                            },
3581                            `face$i2}`
3582                          )
3583                        },
3584                        `face$i2}`
3585                      ))
3586                    }
3587                  )
3588                ] })
3589              ] })
3590            ]
3591          }
3592        ),
3593        /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components25.__experimentalHStack, { justify: "flex-end", className: "font-library__footer", children: [
3594          isInstalling && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components25.ProgressBar, {}),
3595          shouldDisplayDeleteButton && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3596            import_components25.Button,
3597            {
3598              __next40pxDefaultSize: true,
3599              isDestructive: true,
3600              variant: "tertiary",
3601              onClick: handleUninstallClick,
3602              children: (0, import_i18n13.__)("Delete")
3603            }
3604          ),
3605          /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3606            import_components25.Button,
3607            {
3608              __next40pxDefaultSize: true,
3609              variant: "primary",
3610              onClick: handleUpdate,
3611              disabled: !fontFamiliesHasChanges,
3612              accessibleWhenDisabled: true,
3613              children: (0, import_i18n13.__)("Update")
3614            }
3615          )
3616        ] })
3617      ] })
3618    ] });
3619  }
3620  function ConfirmDeleteDialog({
3621    font: font2,
3622    isOpen,
3623    setIsOpen,
3624    setNotice,
3625    uninstallFontFamily,
3626    handleSetLibraryFontSelected
3627  }) {
3628    const navigator = (0, import_components25.useNavigator)();
3629    const handleConfirmUninstall = async () => {
3630      setNotice(null);
3631      setIsOpen(false);
3632      try {
3633        await uninstallFontFamily(font2);
3634        navigator.goBack();
3635        handleSetLibraryFontSelected(void 0);
3636        setNotice({
3637          type: "success",
3638          message: (0, import_i18n13.__)("Font family uninstalled successfully.")
3639        });
3640      } catch (error) {
3641        setNotice({
3642          type: "error",
3643          message: (0, import_i18n13.__)("There was an error uninstalling the font family.") + error.message
3644        });
3645      }
3646    };
3647    const handleCancelUninstall = () => {
3648      setIsOpen(false);
3649    };
3650    return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3651      import_components25.__experimentalConfirmDialog,
3652      {
3653        isOpen,
3654        cancelButtonText: (0, import_i18n13.__)("Cancel"),
3655        confirmButtonText: (0, import_i18n13.__)("Delete"),
3656        onCancel: handleCancelUninstall,
3657        onConfirm: handleConfirmUninstall,
3658        size: "medium",
3659        children: font2 && (0, import_i18n13.sprintf)(
3660          /* translators: %s: Name of the font. */
3661          (0, import_i18n13.__)(
3662            'Are you sure you want to delete "%s" font and all its variants and assets?'
3663          ),
3664          font2.name
3665        )
3666      }
3667    );
3668  }
3669  var installed_fonts_default = InstalledFonts;
3670  
3671  // packages/global-styles-ui/build-module/font-library/font-collection.js
3672  var import_element17 = __toESM(require_element());
3673  var import_components28 = __toESM(require_components());
3674  var import_compose3 = __toESM(require_compose());
3675  var import_i18n15 = __toESM(require_i18n());
3676  var import_core_data7 = __toESM(require_core_data());
3677  
3678  // packages/global-styles-ui/build-module/font-library/utils/filter-fonts.js
3679  function filterFonts(fonts, filters) {
3680    const { category, search } = filters;
3681    let filteredFonts = fonts || [];
3682    if (category && category !== "all") {
3683      filteredFonts = filteredFonts.filter(
3684        (font2) => font2.categories && font2.categories.indexOf(category) !== -1
3685      );
3686    }
3687    if (search) {
3688      filteredFonts = filteredFonts.filter(
3689        (font2) => font2.font_family_settings && font2.font_family_settings.name.toLowerCase().includes(search.toLowerCase())
3690      );
3691    }
3692    return filteredFonts;
3693  }
3694  
3695  // packages/global-styles-ui/build-module/font-library/utils/fonts-outline.js
3696  function getFontsOutline(fonts) {
3697    return fonts.reduce(
3698      (acc, font2) => ({
3699        ...acc,
3700        [font2.slug]: (font2?.fontFace || []).reduce(
3701          (faces, face) => ({
3702            ...faces,
3703            [`$face.fontStyle}-$face.fontWeight}`]: true
3704          }),
3705          {}
3706        )
3707      }),
3708      {}
3709    );
3710  }
3711  function isFontFontFaceInOutline(slug, face, outline) {
3712    if (!face) {
3713      return !!outline[slug];
3714    }
3715    return !!outline[slug]?.[`$face.fontStyle}-$face.fontWeight}`];
3716  }
3717  
3718  // packages/global-styles-ui/build-module/font-library/google-fonts-confirm-dialog.js
3719  var import_i18n14 = __toESM(require_i18n());
3720  var import_components26 = __toESM(require_components());
3721  var import_jsx_runtime34 = __toESM(require_jsx_runtime());
3722  function GoogleFontsConfirmDialog() {
3723    const handleConfirm = () => {
3724      window.localStorage.setItem(
3725        "wp-font-library-google-fonts-permission",
3726        "true"
3727      );
3728      window.dispatchEvent(new Event("storage"));
3729    };
3730    return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "font-library__google-fonts-confirm", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components26.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_components26.CardBody, { children: [
3731      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components26.__experimentalHeading, { level: 2, children: (0, import_i18n14.__)("Connect to Google Fonts") }),
3732      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components26.__experimentalSpacer, { margin: 6 }),
3733      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components26.__experimentalText, { as: "p", children: (0, import_i18n14.__)(
3734        "To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts."
3735      ) }),
3736      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components26.__experimentalSpacer, { margin: 3 }),
3737      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components26.__experimentalText, { as: "p", children: (0, import_i18n14.__)(
3738        "You can alternatively upload files directly on the Upload tab."
3739      ) }),
3740      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components26.__experimentalSpacer, { margin: 6 }),
3741      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3742        import_components26.Button,
3743        {
3744          __next40pxDefaultSize: true,
3745          variant: "primary",
3746          onClick: handleConfirm,
3747          children: (0, import_i18n14.__)("Allow access to Google Fonts")
3748        }
3749      )
3750    ] }) }) });
3751  }
3752  var google_fonts_confirm_dialog_default = GoogleFontsConfirmDialog;
3753  
3754  // packages/global-styles-ui/build-module/font-library/collection-font-variant.js
3755  var import_element16 = __toESM(require_element());
3756  var import_components27 = __toESM(require_components());
3757  var import_jsx_runtime35 = __toESM(require_jsx_runtime());
3758  function CollectionFontVariant({
3759    face,
3760    font: font2,
3761    handleToggleVariant,
3762    selected
3763  }) {
3764    const handleToggleActivation = () => {
3765      if (font2?.fontFace) {
3766        handleToggleVariant(font2, face);
3767        return;
3768      }
3769      handleToggleVariant(font2);
3770    };
3771    const displayName = font2.name + " " + getFontFaceVariantName(face);
3772    const checkboxId = (0, import_element16.useId)();
3773    return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_components27.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [
3774      /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3775        import_components27.CheckboxControl,
3776        {
3777          checked: selected,
3778          onChange: handleToggleActivation,
3779          id: checkboxId
3780        }
3781      ),
3782      /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3783        font_demo_default,
3784        {
3785          font: face,
3786          text: displayName,
3787          onClick: handleToggleActivation
3788        }
3789      ) })
3790    ] }) });
3791  }
3792  var collection_font_variant_default = CollectionFontVariant;
3793  
3794  // packages/global-styles-ui/build-module/font-library/font-collection.js
3795  var import_jsx_runtime36 = __toESM(require_jsx_runtime());
3796  var DEFAULT_CATEGORY = {
3797    slug: "all",
3798    name: (0, import_i18n15._x)("All", "font categories")
3799  };
3800  var LOCAL_STORAGE_ITEM = "wp-font-library-google-fonts-permission";
3801  var MIN_WINDOW_HEIGHT = 500;
3802  function FontCollection({ slug }) {
3803    const requiresPermission = slug === "google-fonts";
3804    const getGoogleFontsPermissionFromStorage = () => {
3805      return window.localStorage.getItem(LOCAL_STORAGE_ITEM) === "true";
3806    };
3807    const [selectedFont, setSelectedFont] = (0, import_element17.useState)(
3808      null
3809    );
3810    const [notice, setNotice] = (0, import_element17.useState)(null);
3811    const [fontsToInstall, setFontsToInstall] = (0, import_element17.useState)(
3812      []
3813    );
3814    const [page, setPage] = (0, import_element17.useState)(1);
3815    const [filters, setFilters] = (0, import_element17.useState)({});
3816    const [renderConfirmDialog, setRenderConfirmDialog] = (0, import_element17.useState)(
3817      requiresPermission && !getGoogleFontsPermissionFromStorage()
3818    );
3819    const { installFonts, isInstalling } = (0, import_element17.useContext)(FontLibraryContext);
3820    const { record: selectedCollection, isResolving: isLoading } = (0, import_core_data7.useEntityRecord)("root", "fontCollection", slug);
3821    (0, import_element17.useEffect)(() => {
3822      const handleStorage = () => {
3823        setRenderConfirmDialog(
3824          requiresPermission && !getGoogleFontsPermissionFromStorage()
3825        );
3826      };
3827      handleStorage();
3828      window.addEventListener("storage", handleStorage);
3829      return () => window.removeEventListener("storage", handleStorage);
3830    }, [slug, requiresPermission]);
3831    const revokeAccess = () => {
3832      window.localStorage.setItem(LOCAL_STORAGE_ITEM, "false");
3833      window.dispatchEvent(new Event("storage"));
3834    };
3835    (0, import_element17.useEffect)(() => {
3836      setSelectedFont(null);
3837    }, [slug]);
3838    (0, import_element17.useEffect)(() => {
3839      setFontsToInstall([]);
3840    }, [selectedFont]);
3841    const collectionFonts = (0, import_element17.useMemo)(
3842      () => selectedCollection?.font_families ?? [],
3843      [selectedCollection]
3844    );
3845    const collectionCategories = selectedCollection?.categories ?? [];
3846    const categories = [DEFAULT_CATEGORY, ...collectionCategories];
3847    const fonts = (0, import_element17.useMemo)(
3848      () => filterFonts(collectionFonts, filters),
3849      [collectionFonts, filters]
3850    );
3851    const windowHeight = Math.max(window.innerHeight, MIN_WINDOW_HEIGHT);
3852    const pageSize = Math.floor((windowHeight - 417) / 61);
3853    const totalPages = Math.ceil(fonts.length / pageSize);
3854    const itemsStart = (page - 1) * pageSize;
3855    const itemsLimit = page * pageSize;
3856    const items = fonts.slice(itemsStart, itemsLimit);
3857    const handleCategoryFilter = (category) => {
3858      setFilters({ ...filters, category });
3859      setPage(1);
3860    };
3861    const handleUpdateSearchInput = (value) => {
3862      setFilters({ ...filters, search: value });
3863      setPage(1);
3864    };
3865    const debouncedUpdateSearchInput = (0, import_compose3.debounce)(handleUpdateSearchInput, 300);
3866    const handleToggleVariant = (font2, face) => {
3867      const newFontsToInstall = toggleFont(font2, face, fontsToInstall);
3868      setFontsToInstall(newFontsToInstall);
3869    };
3870    const fontToInstallOutline = getFontsOutline(fontsToInstall);
3871    const resetFontsToInstall = () => {
3872      setFontsToInstall([]);
3873    };
3874    const selectFontCount = fontsToInstall.length > 0 ? fontsToInstall[0]?.fontFace?.length ?? 0 : 0;
3875    const isIndeterminate = selectFontCount > 0 && selectFontCount !== selectedFont?.fontFace?.length;
3876    const isSelectAllChecked = selectFontCount === selectedFont?.fontFace?.length;
3877    const toggleSelectAll = () => {
3878      const newFonts = [];
3879      if (!isSelectAllChecked && selectedFont) {
3880        newFonts.push(selectedFont);
3881      }
3882      setFontsToInstall(newFonts);
3883    };
3884    const handleInstall = async () => {
3885      setNotice(null);
3886      const fontFamily = fontsToInstall[0];
3887      try {
3888        if (fontFamily?.fontFace) {
3889          await Promise.all(
3890            fontFamily.fontFace.map(async (fontFace) => {
3891              if (fontFace.src) {
3892                fontFace.file = await downloadFontFaceAssets(
3893                  fontFace.src
3894                );
3895              }
3896            })
3897          );
3898        }
3899      } catch (error) {
3900        setNotice({
3901          type: "error",
3902          message: (0, import_i18n15.__)(
3903            "Error installing the fonts, could not be downloaded."
3904          )
3905        });
3906        return;
3907      }
3908      try {
3909        await installFonts([fontFamily]);
3910        setNotice({
3911          type: "success",
3912          message: (0, import_i18n15.__)("Fonts were installed successfully.")
3913        });
3914      } catch (error) {
3915        setNotice({
3916          type: "error",
3917          message: error.message
3918        });
3919      }
3920      resetFontsToInstall();
3921    };
3922    const getSortedFontFaces = (fontFamily) => {
3923      if (!fontFamily) {
3924        return [];
3925      }
3926      if (!fontFamily.fontFace || !fontFamily.fontFace.length) {
3927        return [
3928          {
3929            fontFamily: fontFamily.fontFamily,
3930            fontStyle: "normal",
3931            fontWeight: "400"
3932          }
3933        ];
3934      }
3935      return sortFontFaces(fontFamily.fontFace);
3936    };
3937    if (renderConfirmDialog) {
3938      return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(google_fonts_confirm_dialog_default, {});
3939    }
3940    const ActionsComponent = () => {
3941      if (slug !== "google-fonts" || renderConfirmDialog || selectedFont) {
3942        return null;
3943      }
3944      return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3945        import_components28.DropdownMenu,
3946        {
3947          icon: more_vertical_default,
3948          label: (0, import_i18n15.__)("Actions"),
3949          popoverProps: {
3950            position: "bottom left"
3951          },
3952          controls: [
3953            {
3954              title: (0, import_i18n15.__)("Revoke access to Google Fonts"),
3955              onClick: revokeAccess
3956            }
3957          ]
3958        }
3959      );
3960    };
3961    return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "font-library__tabpanel-layout", children: [
3962      isLoading && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.ProgressBar, {}) }),
3963      !isLoading && selectedCollection && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
3964        /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
3965          import_components28.Navigator,
3966          {
3967            initialPath: "/",
3968            className: "font-library__tabpanel-layout",
3969            children: [
3970              /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components28.Navigator.Screen, { path: "/", children: [
3971                /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components28.__experimentalHStack, { justify: "space-between", children: [
3972                  /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components28.__experimentalVStack, { children: [
3973                    /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalHeading, { level: 2, size: 13, children: selectedCollection.name }),
3974                    /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalText, { children: selectedCollection.description })
3975                  ] }),
3976                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ActionsComponent, {})
3977                ] }),
3978                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalSpacer, { margin: 4 }),
3979                /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components28.__experimentalHStack, { spacing: 4, justify: "space-between", children: [
3980                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3981                    import_components28.SearchControl,
3982                    {
3983                      value: filters.search,
3984                      placeholder: (0, import_i18n15.__)("Font name\u2026"),
3985                      label: (0, import_i18n15.__)("Search"),
3986                      onChange: debouncedUpdateSearchInput,
3987                      hideLabelFromVision: false
3988                    }
3989                  ),
3990                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3991                    import_components28.SelectControl,
3992                    {
3993                      __next40pxDefaultSize: true,
3994                      label: (0, import_i18n15.__)("Category"),
3995                      value: filters.category,
3996                      onChange: handleCategoryFilter,
3997                      children: categories && categories.map((category) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3998                        "option",
3999                        {
4000                          value: category.slug,
4001                          children: category.name
4002                        },
4003                        category.slug
4004                      ))
4005                    }
4006                  )
4007                ] }),
4008                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalSpacer, { margin: 4 }),
4009                !!selectedCollection?.font_families?.length && !fonts.length && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalText, { children: (0, import_i18n15.__)(
4010                  "No fonts found. Try with a different search term."
4011                ) }),
4012                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "font-library__fonts-grid__main", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4013                  "ul",
4014                  {
4015                    role: "list",
4016                    className: "font-library__fonts-list",
4017                    children: items.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4018                      "li",
4019                      {
4020                        className: "font-library__fonts-list-item",
4021                        children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4022                          font_card_default,
4023                          {
4024                            font: font2.font_family_settings,
4025                            navigatorPath: "/fontFamily",
4026                            onClick: () => {
4027                              setSelectedFont(
4028                                font2.font_family_settings
4029                              );
4030                            }
4031                          }
4032                        )
4033                      },
4034                      font2.font_family_settings.slug
4035                    ))
4036                  }
4037                ) })
4038              ] }),
4039              /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components28.Navigator.Screen, { path: "/fontFamily", children: [
4040                /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components28.Flex, { justify: "flex-start", children: [
4041                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4042                    import_components28.Navigator.BackButton,
4043                    {
4044                      icon: (0, import_i18n15.isRTL)() ? chevron_right_default : chevron_left_default,
4045                      size: "small",
4046                      onClick: () => {
4047                        setSelectedFont(null);
4048                        setNotice(null);
4049                      },
4050                      label: (0, import_i18n15.__)("Back")
4051                    }
4052                  ),
4053                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4054                    import_components28.__experimentalHeading,
4055                    {
4056                      level: 2,
4057                      size: 13,
4058                      className: "global-styles-ui-header",
4059                      children: selectedFont?.name
4060                    }
4061                  )
4062                ] }),
4063                notice && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
4064                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalSpacer, { margin: 1 }),
4065                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4066                    import_components28.Notice,
4067                    {
4068                      status: notice.type,
4069                      onRemove: () => setNotice(null),
4070                      children: notice.message
4071                    }
4072                  ),
4073                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalSpacer, { margin: 1 })
4074                ] }),
4075                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalSpacer, { margin: 4 }),
4076                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalText, { children: (0, import_i18n15.__)("Select font variants to install.") }),
4077                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalSpacer, { margin: 4 }),
4078                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4079                  import_components28.CheckboxControl,
4080                  {
4081                    className: "font-library__select-all",
4082                    label: (0, import_i18n15.__)("Select all"),
4083                    checked: isSelectAllChecked,
4084                    onChange: toggleSelectAll,
4085                    indeterminate: isIndeterminate
4086                  }
4087                ),
4088                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalVStack, { spacing: 0, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4089                  "ul",
4090                  {
4091                    role: "list",
4092                    className: "font-library__fonts-list",
4093                    children: selectedFont && getSortedFontFaces(selectedFont).map(
4094                      (face, i2) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4095                        "li",
4096                        {
4097                          className: "font-library__fonts-list-item",
4098                          children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4099                            collection_font_variant_default,
4100                            {
4101                              font: selectedFont,
4102                              face,
4103                              handleToggleVariant,
4104                              selected: isFontFontFaceInOutline(
4105                                selectedFont.slug,
4106                                selectedFont.fontFace ? face : null,
4107                                // If the font has no fontFace, we want to check if the font is in the outline
4108                                fontToInstallOutline
4109                              )
4110                            }
4111                          )
4112                        },
4113                        `face$i2}`
4114                      )
4115                    )
4116                  }
4117                ) }),
4118                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components28.__experimentalSpacer, { margin: 16 })
4119              ] })
4120            ]
4121          }
4122        ),
4123        selectedFont && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4124          import_components28.Flex,
4125          {
4126            justify: "flex-end",
4127            className: "font-library__footer",
4128            children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4129              import_components28.Button,
4130              {
4131                __next40pxDefaultSize: true,
4132                variant: "primary",
4133                onClick: handleInstall,
4134                isBusy: isInstalling,
4135                disabled: fontsToInstall.length === 0 || isInstalling,
4136                accessibleWhenDisabled: true,
4137                children: (0, import_i18n15.__)("Install")
4138              }
4139            )
4140          }
4141        ),
4142        !selectedFont && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
4143          import_components28.__experimentalHStack,
4144          {
4145            expanded: false,
4146            className: "font-library__footer",
4147            justify: "end",
4148            spacing: 6,
4149            children: [
4150              /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4151                import_components28.__experimentalHStack,
4152                {
4153                  justify: "flex-start",
4154                  expanded: false,
4155                  spacing: 1,
4156                  className: "font-library__page-selection",
4157                  children: (0, import_element17.createInterpolateElement)(
4158                    (0, import_i18n15.sprintf)(
4159                      // translators: 1: Current page number, 2: Total number of pages.
4160                      (0, import_i18n15._x)(
4161                        "<div>Page</div>%1$s<div>of %2$d</div>",
4162                        "paging"
4163                      ),
4164                      "<CurrentPage />",
4165                      totalPages
4166                    ),
4167                    {
4168                      div: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { "aria-hidden": true }),
4169                      CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4170                        import_components28.SelectControl,
4171                        {
4172                          "aria-label": (0, import_i18n15.__)(
4173                            "Current page"
4174                          ),
4175                          value: page.toString(),
4176                          options: [
4177                            ...Array(totalPages)
4178                          ].map((e2, i2) => {
4179                            return {
4180                              label: (i2 + 1).toString(),
4181                              value: (i2 + 1).toString()
4182                            };
4183                          }),
4184                          onChange: (newPage) => setPage(
4185                            parseInt(newPage)
4186                          ),
4187                          size: "small",
4188                          variant: "minimal"
4189                        }
4190                      )
4191                    }
4192                  )
4193                }
4194              ),
4195              /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components28.__experimentalHStack, { expanded: false, spacing: 1, children: [
4196                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4197                  import_components28.Button,
4198                  {
4199                    onClick: () => setPage(page - 1),
4200                    disabled: page === 1,
4201                    accessibleWhenDisabled: true,
4202                    label: (0, import_i18n15.__)("Previous page"),
4203                    icon: (0, import_i18n15.isRTL)() ? next_default : previous_default,
4204                    showTooltip: true,
4205                    size: "compact",
4206                    tooltipPosition: "top"
4207                  }
4208                ),
4209                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4210                  import_components28.Button,
4211                  {
4212                    onClick: () => setPage(page + 1),
4213                    disabled: page === totalPages,
4214                    accessibleWhenDisabled: true,
4215                    label: (0, import_i18n15.__)("Next page"),
4216                    icon: (0, import_i18n15.isRTL)() ? previous_default : next_default,
4217                    showTooltip: true,
4218                    size: "compact",
4219                    tooltipPosition: "top"
4220                  }
4221                )
4222              ] })
4223            ]
4224          }
4225        )
4226      ] })
4227    ] });
4228  }
4229  var font_collection_default = FontCollection;
4230  
4231  // packages/global-styles-ui/build-module/font-library/upload-fonts.js
4232  var import_i18n16 = __toESM(require_i18n());
4233  var import_components30 = __toESM(require_components());
4234  var import_element18 = __toESM(require_element());
4235  
4236  // packages/global-styles-ui/build-module/font-library/lib/unbrotli.js
4237  var __getOwnPropNames2 = Object.getOwnPropertyNames;
4238  var __require2 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, {
4239    get: (a2, b2) => (typeof __require !== "undefined" ? __require : a2)[b2]
4240  }) : x2)(function(x2) {
4241    if (typeof __require !== "undefined") return __require.apply(this, arguments);
4242    throw Error('Dynamic require of "' + x2 + '" is not supported');
4243  });
4244  var __commonJS2 = (cb, mod) => function __require22() {
4245    return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4246  };
4247  var require_unbrotli = __commonJS2({
4248    "packages/global-styles-ui/src/font-library/lib/unbrotli.js"(exports, module) {
4249      (function(f2) {
4250        if (typeof exports === "object" && typeof module !== "undefined") {
4251          module.exports = f2();
4252        } else if (typeof define === "function" && define.amd) {
4253          define([], f2);
4254        } else {
4255          var g2;
4256          if (typeof window !== "undefined") {
4257            g2 = window;
4258          } else if (typeof global !== "undefined") {
4259            g2 = global;
4260          } else if (typeof self !== "undefined") {
4261            g2 = self;
4262          } else {
4263            g2 = this;
4264          }
4265          g2.unbrotli = f2();
4266        }
4267      })(function() {
4268        var define2, module2, exports2;
4269        return (/* @__PURE__ */ (function() {
4270          function r3(e2, n2, t3) {
4271            function o3(i22, f2) {
4272              if (!n2[i22]) {
4273                if (!e2[i22]) {
4274                  var c2 = "function" == typeof __require2 && __require2;
4275                  if (!f2 && c2) return c2(i22, true);
4276                  if (u2) return u2(i22, true);
4277                  var a2 = new Error("Cannot find module '" + i22 + "'");
4278                  throw a2.code = "MODULE_NOT_FOUND", a2;
4279                }
4280                var p3 = n2[i22] = { exports: {} };
4281                e2[i22][0].call(
4282                  p3.exports,
4283                  function(r22) {
4284                    var n22 = e2[i22][1][r22];
4285                    return o3(n22 || r22);
4286                  },
4287                  p3,
4288                  p3.exports,
4289                  r3,
4290                  e2,
4291                  n2,
4292                  t3
4293                );
4294              }
4295              return n2[i22].exports;
4296            }
4297            for (var u2 = "function" == typeof __require2 && __require2, i2 = 0; i2 < t3.length; i2++)
4298              o3(t3[i2]);
4299            return o3;
4300          }
4301          return r3;
4302        })())(
4303          {
4304            1: [
4305              function(require2, module3, exports3) {
4306                var BROTLI_READ_SIZE = 4096;
4307                var BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32;
4308                var BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1;
4309                var kBitMask = new Uint32Array([
4310                  0,
4311                  1,
4312                  3,
4313                  7,
4314                  15,
4315                  31,
4316                  63,
4317                  127,
4318                  255,
4319                  511,
4320                  1023,
4321                  2047,
4322                  4095,
4323                  8191,
4324                  16383,
4325                  32767,
4326                  65535,
4327                  131071,
4328                  262143,
4329                  524287,
4330                  1048575,
4331                  2097151,
4332                  4194303,
4333                  8388607,
4334                  16777215
4335                ]);
4336                function BrotliBitReader(input) {
4337                  this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);
4338                  this.input_ = input;
4339                  this.reset();
4340                }
4341                BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;
4342                BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;
4343                BrotliBitReader.prototype.reset = function() {
4344                  this.buf_ptr_ = 0;
4345                  this.val_ = 0;
4346                  this.pos_ = 0;
4347                  this.bit_pos_ = 0;
4348                  this.bit_end_pos_ = 0;
4349                  this.eos_ = 0;
4350                  this.readMoreInput();
4351                  for (var i2 = 0; i2 < 4; i2++) {
4352                    this.val_ |= this.buf_[this.pos_] << 8 * i2;
4353                    ++this.pos_;
4354                  }
4355                  return this.bit_end_pos_ > 0;
4356                };
4357                BrotliBitReader.prototype.readMoreInput = function() {
4358                  if (this.bit_end_pos_ > 256) {
4359                    return;
4360                  } else if (this.eos_) {
4361                    if (this.bit_pos_ > this.bit_end_pos_)
4362                      throw new Error(
4363                        "Unexpected end of input " + this.bit_pos_ + " " + this.bit_end_pos_
4364                      );
4365                  } else {
4366                    var dst = this.buf_ptr_;
4367                    var bytes_read = this.input_.read(
4368                      this.buf_,
4369                      dst,
4370                      BROTLI_READ_SIZE
4371                    );
4372                    if (bytes_read < 0) {
4373                      throw new Error("Unexpected end of input");
4374                    }
4375                    if (bytes_read < BROTLI_READ_SIZE) {
4376                      this.eos_ = 1;
4377                      for (var p3 = 0; p3 < 32; p3++)
4378                        this.buf_[dst + bytes_read + p3] = 0;
4379                    }
4380                    if (dst === 0) {
4381                      for (var p3 = 0; p3 < 32; p3++)
4382                        this.buf_[(BROTLI_READ_SIZE << 1) + p3] = this.buf_[p3];
4383                      this.buf_ptr_ = BROTLI_READ_SIZE;
4384                    } else {
4385                      this.buf_ptr_ = 0;
4386                    }
4387                    this.bit_end_pos_ += bytes_read << 3;
4388                  }
4389                };
4390                BrotliBitReader.prototype.fillBitWindow = function() {
4391                  while (this.bit_pos_ >= 8) {
4392                    this.val_ >>>= 8;
4393                    this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;
4394                    ++this.pos_;
4395                    this.bit_pos_ = this.bit_pos_ - 8 >>> 0;
4396                    this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;
4397                  }
4398                };
4399                BrotliBitReader.prototype.readBits = function(n_bits) {
4400                  if (32 - this.bit_pos_ < n_bits) {
4401                    this.fillBitWindow();
4402                  }
4403                  var val = this.val_ >>> this.bit_pos_ & kBitMask[n_bits];
4404                  this.bit_pos_ += n_bits;
4405                  return val;
4406                };
4407                module3.exports = BrotliBitReader;
4408              },
4409              {}
4410            ],
4411            2: [
4412              function(require2, module3, exports3) {
4413                var CONTEXT_LSB6 = 0;
4414                var CONTEXT_MSB6 = 1;
4415                var CONTEXT_UTF8 = 2;
4416                var CONTEXT_SIGNED = 3;
4417                exports3.lookup = new Uint8Array([
4418                  /* CONTEXT_UTF8, last byte. */
4419                  /* ASCII range. */
4420                  0,
4421                  0,
4422                  0,
4423                  0,
4424                  0,
4425                  0,
4426                  0,
4427                  0,
4428                  0,
4429                  4,
4430                  4,
4431                  0,
4432                  0,
4433                  4,
4434                  0,
4435                  0,
4436                  0,
4437                  0,
4438                  0,
4439                  0,
4440                  0,
4441                  0,
4442                  0,
4443                  0,
4444                  0,
4445                  0,
4446                  0,
4447                  0,
4448                  0,
4449                  0,
4450                  0,
4451                  0,
4452                  8,
4453                  12,
4454                  16,
4455                  12,
4456                  12,
4457                  20,
4458                  12,
4459                  16,
4460                  24,
4461                  28,
4462                  12,
4463                  12,
4464                  32,
4465                  12,
4466                  36,
4467                  12,
4468                  44,
4469                  44,
4470                  44,
4471                  44,
4472                  44,
4473                  44,
4474                  44,
4475                  44,
4476                  44,
4477                  44,
4478                  32,
4479                  32,
4480                  24,
4481                  40,
4482                  28,
4483                  12,
4484                  12,
4485                  48,
4486                  52,
4487                  52,
4488                  52,
4489                  48,
4490                  52,
4491                  52,
4492                  52,
4493                  48,
4494                  52,
4495                  52,
4496                  52,
4497                  52,
4498                  52,
4499                  48,
4500                  52,
4501                  52,
4502                  52,
4503                  52,
4504                  52,
4505                  48,
4506                  52,
4507                  52,
4508                  52,
4509                  52,
4510                  52,
4511                  24,
4512                  12,
4513                  28,
4514                  12,
4515                  12,
4516                  12,
4517                  56,
4518                  60,
4519                  60,
4520                  60,
4521                  56,
4522                  60,
4523                  60,
4524                  60,
4525                  56,
4526                  60,
4527                  60,
4528                  60,
4529                  60,
4530                  60,
4531                  56,
4532                  60,
4533                  60,
4534                  60,
4535                  60,
4536                  60,
4537                  56,
4538                  60,
4539                  60,
4540                  60,
4541                  60,
4542                  60,
4543                  24,
4544                  12,
4545                  28,
4546                  12,
4547                  0,
4548                  /* UTF8 continuation byte range. */
4549                  0,
4550                  1,
4551                  0,
4552                  1,
4553                  0,
4554                  1,
4555                  0,
4556                  1,
4557                  0,
4558                  1,
4559                  0,
4560                  1,
4561                  0,
4562                  1,
4563                  0,
4564                  1,
4565                  0,
4566                  1,
4567                  0,
4568                  1,
4569                  0,
4570                  1,
4571                  0,
4572                  1,
4573                  0,
4574                  1,
4575                  0,
4576                  1,
4577                  0,
4578                  1,
4579                  0,
4580                  1,
4581                  0,
4582                  1,
4583                  0,
4584                  1,
4585                  0,
4586                  1,
4587                  0,
4588                  1,
4589                  0,
4590                  1,
4591                  0,
4592                  1,
4593                  0,
4594                  1,
4595                  0,
4596                  1,
4597                  0,
4598                  1,
4599                  0,
4600                  1,
4601                  0,
4602                  1,
4603                  0,
4604                  1,
4605                  0,
4606                  1,
4607                  0,
4608                  1,
4609                  0,
4610                  1,
4611                  0,
4612                  1,
4613                  2,
4614                  3,
4615                  2,
4616                  3,
4617                  2,
4618                  3,
4619                  2,
4620                  3,
4621                  2,
4622                  3,
4623                  2,
4624                  3,
4625                  2,
4626                  3,
4627                  2,
4628                  3,
4629                  2,
4630                  3,
4631                  2,
4632                  3,
4633                  2,
4634                  3,
4635                  2,
4636                  3,
4637                  2,
4638                  3,
4639                  2,
4640                  3,
4641                  2,
4642                  3,
4643                  2,
4644                  3,
4645                  2,
4646                  3,
4647                  2,
4648                  3,
4649                  2,
4650                  3,
4651                  2,
4652                  3,
4653                  2,
4654                  3,
4655                  2,
4656                  3,
4657                  2,
4658                  3,
4659                  2,
4660                  3,
4661                  2,
4662                  3,
4663                  2,
4664                  3,
4665                  2,
4666                  3,
4667                  2,
4668                  3,
4669                  2,
4670                  3,
4671                  2,
4672                  3,
4673                  2,
4674                  3,
4675                  2,
4676                  3,
4677                  /* ASCII range. */
4678                  0,
4679                  0,
4680                  0,
4681                  0,
4682                  0,
4683                  0,
4684                  0,
4685                  0,
4686                  0,
4687                  0,
4688                  0,
4689                  0,
4690                  0,
4691                  0,
4692                  0,
4693                  0,
4694                  0,
4695                  0,
4696                  0,
4697                  0,
4698                  0,
4699                  0,
4700                  0,
4701                  0,
4702                  0,
4703                  0,
4704                  0,
4705                  0,
4706                  0,
4707                  0,
4708                  0,
4709                  0,
4710                  0,
4711                  1,
4712                  1,
4713                  1,
4714                  1,
4715                  1,
4716                  1,
4717                  1,
4718                  1,
4719                  1,
4720                  1,
4721                  1,
4722                  1,
4723                  1,
4724                  1,
4725                  1,
4726                  2,
4727                  2,
4728                  2,
4729                  2,
4730                  2,
4731                  2,
4732                  2,
4733                  2,
4734                  2,
4735                  2,
4736                  1,
4737                  1,
4738                  1,
4739                  1,
4740                  1,
4741                  1,
4742                  1,
4743                  2,
4744                  2,
4745                  2,
4746                  2,
4747                  2,
4748                  2,
4749                  2,
4750                  2,
4751                  2,
4752                  2,
4753                  2,
4754                  2,
4755                  2,
4756                  2,
4757                  2,
4758                  2,
4759                  2,
4760                  2,
4761                  2,
4762                  2,
4763                  2,
4764                  2,
4765                  2,
4766                  2,
4767                  2,
4768                  2,
4769                  1,
4770                  1,
4771                  1,
4772                  1,
4773                  1,
4774                  1,
4775                  3,
4776                  3,
4777                  3,
4778                  3,
4779                  3,
4780                  3,
4781                  3,
4782                  3,
4783                  3,
4784                  3,
4785                  3,
4786                  3,
4787                  3,
4788                  3,
4789                  3,
4790                  3,
4791                  3,
4792                  3,
4793                  3,
4794                  3,
4795                  3,
4796                  3,
4797                  3,
4798                  3,
4799                  3,
4800                  3,
4801                  1,
4802                  1,
4803                  1,
4804                  1,
4805                  0,
4806                  /* UTF8 continuation byte range. */
4807                  0,
4808                  0,
4809                  0,
4810                  0,
4811                  0,
4812                  0,
4813                  0,
4814                  0,
4815                  0,
4816                  0,
4817                  0,
4818                  0,
4819                  0,
4820                  0,
4821                  0,
4822                  0,
4823                  0,
4824                  0,
4825                  0,
4826                  0,
4827                  0,
4828                  0,
4829                  0,
4830                  0,
4831                  0,
4832                  0,
4833                  0,
4834                  0,
4835                  0,
4836                  0,
4837                  0,
4838                  0,
4839                  0,
4840                  0,
4841                  0,
4842                  0,
4843                  0,
4844                  0,
4845                  0,
4846                  0,
4847                  0,
4848                  0,
4849                  0,
4850                  0,
4851                  0,
4852                  0,
4853                  0,
4854                  0,
4855                  0,
4856                  0,
4857                  0,
4858                  0,
4859                  0,
4860                  0,
4861                  0,
4862                  0,
4863                  0,
4864                  0,
4865                  0,
4866                  0,
4867                  0,
4868                  0,
4869                  0,
4870                  0,
4871                  0,
4872                  0,
4873                  0,
4874                  0,
4875                  0,
4876                  0,
4877                  0,
4878                  0,
4879                  0,
4880                  0,
4881                  0,
4882                  0,
4883                  0,
4884                  0,
4885                  0,
4886                  0,
4887                  0,
4888                  0,
4889                  0,
4890                  0,
4891                  0,
4892                  0,
4893                  0,
4894                  0,
4895                  0,
4896                  0,
4897                  0,
4898                  0,
4899                  0,
4900                  0,
4901                  0,
4902                  0,
4903                  2,
4904                  2,
4905                  2,
4906                  2,
4907                  2,
4908                  2,
4909                  2,
4910                  2,
4911                  2,
4912                  2,
4913                  2,
4914                  2,
4915                  2,
4916                  2,
4917                  2,
4918                  2,
4919                  2,
4920                  2,
4921                  2,
4922                  2,
4923                  2,
4924                  2,
4925                  2,
4926                  2,
4927                  2,
4928                  2,
4929                  2,
4930                  2,
4931                  2,
4932                  2,
4933                  2,
4934                  2,
4935                  0,
4936                  1,
4937                  1,
4938                  1,
4939                  1,
4940                  1,
4941                  1,
4942                  1,
4943                  1,
4944                  1,
4945                  1,
4946                  1,
4947                  1,
4948                  1,
4949                  1,
4950                  1,
4951                  2,
4952                  2,
4953                  2,
4954                  2,
4955                  2,
4956                  2,
4957                  2,
4958                  2,
4959                  2,
4960                  2,
4961                  2,
4962                  2,
4963                  2,
4964                  2,
4965                  2,
4966                  2,
4967                  2,
4968                  2,
4969                  2,
4970                  2,
4971                  2,
4972                  2,
4973                  2,
4974                  2,
4975                  2,
4976                  2,
4977                  2,
4978                  2,
4979                  2,
4980                  2,
4981                  2,
4982                  2,
4983                  2,
4984                  2,
4985                  2,
4986                  2,
4987                  2,
4988                  2,
4989                  2,
4990                  2,
4991                  2,
4992                  2,
4993                  2,
4994                  2,
4995                  2,
4996                  2,
4997                  2,
4998                  2,
4999                  3,
5000                  3,
5001                  3,
5002                  3,
5003                  3,
5004                  3,
5005                  3,
5006                  3,
5007                  3,
5008                  3,
5009                  3,
5010                  3,
5011                  3,
5012                  3,
5013                  3,
5014                  3,
5015                  3,
5016                  3,
5017                  3,
5018                  3,
5019                  3,
5020                  3,
5021                  3,
5022                  3,
5023                  3,
5024                  3,
5025                  3,
5026                  3,
5027                  3,
5028                  3,
5029                  3,
5030                  3,
5031                  3,
5032                  3,
5033                  3,
5034                  3,
5035                  3,
5036                  3,
5037                  3,
5038                  3,
5039                  3,
5040                  3,
5041                  3,
5042                  3,
5043                  3,
5044                  3,
5045                  3,
5046                  3,
5047                  3,
5048                  3,
5049                  3,
5050                  3,
5051                  3,
5052                  3,
5053                  3,
5054                  3,
5055                  3,
5056                  3,
5057                  3,
5058                  3,
5059                  3,
5060                  3,
5061                  3,
5062                  3,
5063                  4,
5064                  4,
5065                  4,
5066                  4,
5067                  4,
5068                  4,
5069                  4,
5070                  4,
5071                  4,
5072                  4,
5073                  4,
5074                  4,
5075                  4,
5076                  4,
5077                  4,
5078                  4,
5079                  4,
5080                  4,
5081                  4,
5082                  4,
5083                  4,
5084                  4,
5085                  4,
5086                  4,
5087                  4,
5088                  4,
5089                  4,
5090                  4,
5091                  4,
5092                  4,
5093                  4,
5094                  4,
5095                  4,
5096                  4,
5097                  4,
5098                  4,
5099                  4,
5100                  4,
5101                  4,
5102                  4,
5103                  4,
5104                  4,
5105                  4,
5106                  4,
5107                  4,
5108                  4,
5109                  4,
5110                  4,
5111                  4,
5112                  4,
5113                  4,
5114                  4,
5115                  4,
5116                  4,
5117                  4,
5118                  4,
5119                  4,
5120                  4,
5121                  4,
5122                  4,
5123                  4,
5124                  4,
5125                  4,
5126                  4,
5127                  5,
5128                  5,
5129                  5,
5130                  5,
5131                  5,
5132                  5,
5133                  5,
5134                  5,
5135                  5,
5136                  5,
5137                  5,
5138                  5,
5139                  5,
5140                  5,
5141                  5,
5142                  5,
5143                  5,
5144                  5,
5145                  5,
5146                  5,
5147                  5,
5148                  5,
5149                  5,
5150                  5,
5151                  5,
5152                  5,
5153                  5,
5154                  5,
5155                  5,
5156                  5,
5157                  5,
5158                  5,
5159                  5,
5160                  5,
5161                  5,
5162                  5,
5163                  5,
5164                  5,
5165                  5,
5166                  5,
5167                  5,
5168                  5,
5169                  5,
5170                  5,
5171                  5,
5172                  5,
5173                  5,
5174                  5,
5175                  6,
5176                  6,
5177                  6,
5178                  6,
5179                  6,
5180                  6,
5181                  6,
5182                  6,
5183                  6,
5184                  6,
5185                  6,
5186                  6,
5187                  6,
5188                  6,
5189                  6,
5190                  7,
5191                  /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
5192                  0,
5193                  8,
5194                  8,
5195                  8,
5196                  8,
5197                  8,
5198                  8,
5199                  8,
5200                  8,
5201                  8,
5202                  8,
5203                  8,
5204                  8,
5205                  8,
5206                  8,
5207                  8,
5208                  16,
5209                  16,
5210                  16,
5211                  16,
5212                  16,
5213                  16,
5214                  16,
5215                  16,
5216                  16,
5217                  16,
5218                  16,
5219                  16,
5220                  16,
5221                  16,
5222                  16,
5223                  16,
5224                  16,
5225                  16,
5226                  16,
5227                  16,
5228                  16,
5229                  16,
5230                  16,
5231                  16,
5232                  16,
5233                  16,
5234                  16,
5235                  16,
5236                  16,
5237                  16,
5238                  16,
5239                  16,
5240                  16,
5241                  16,
5242                  16,
5243                  16,
5244                  16,
5245                  16,
5246                  16,
5247                  16,
5248                  16,
5249                  16,
5250                  16,
5251                  16,
5252                  16,
5253                  16,
5254                  16,
5255                  16,
5256                  24,
5257                  24,
5258                  24,
5259                  24,
5260                  24,
5261                  24,
5262                  24,
5263                  24,
5264                  24,
5265                  24,
5266                  24,
5267                  24,
5268                  24,
5269                  24,
5270                  24,
5271                  24,
5272                  24,
5273                  24,
5274                  24,
5275                  24,
5276                  24,
5277                  24,
5278                  24,
5279                  24,
5280                  24,
5281                  24,
5282                  24,
5283                  24,
5284                  24,
5285                  24,
5286                  24,
5287                  24,
5288                  24,
5289                  24,
5290                  24,
5291                  24,
5292                  24,
5293                  24,
5294                  24,
5295                  24,
5296                  24,
5297                  24,
5298                  24,
5299                  24,
5300                  24,
5301                  24,
5302                  24,
5303                  24,
5304                  24,
5305                  24,
5306                  24,
5307                  24,
5308                  24,
5309                  24,
5310                  24,
5311                  24,
5312                  24,
5313                  24,
5314                  24,
5315                  24,
5316                  24,
5317                  24,
5318                  24,
5319                  24,
5320                  32,
5321                  32,
5322                  32,
5323                  32,
5324                  32,
5325                  32,
5326                  32,
5327                  32,
5328                  32,
5329                  32,
5330                  32,
5331                  32,
5332                  32,
5333                  32,
5334                  32,
5335                  32,
5336                  32,
5337                  32,
5338                  32,
5339                  32,
5340                  32,
5341                  32,
5342                  32,
5343                  32,
5344                  32,
5345                  32,
5346                  32,
5347                  32,
5348                  32,
5349                  32,
5350                  32,
5351                  32,
5352                  32,
5353                  32,
5354                  32,
5355                  32,
5356                  32,
5357                  32,
5358                  32,
5359                  32,
5360                  32,
5361                  32,
5362                  32,
5363                  32,
5364                  32,
5365                  32,
5366                  32,
5367                  32,
5368                  32,
5369                  32,
5370                  32,
5371                  32,
5372                  32,
5373                  32,
5374                  32,
5375                  32,
5376                  32,
5377                  32,
5378                  32,
5379                  32,
5380                  32,
5381                  32,
5382                  32,
5383                  32,
5384                  40,
5385                  40,
5386                  40,
5387                  40,
5388                  40,
5389                  40,
5390                  40,
5391                  40,
5392                  40,
5393                  40,
5394                  40,
5395                  40,
5396                  40,
5397                  40,
5398                  40,
5399                  40,
5400                  40,
5401                  40,
5402                  40,
5403                  40,
5404                  40,
5405                  40,
5406                  40,
5407                  40,
5408                  40,
5409                  40,
5410                  40,
5411                  40,
5412                  40,
5413                  40,
5414                  40,
5415                  40,
5416                  40,
5417                  40,
5418                  40,
5419                  40,
5420                  40,
5421                  40,
5422                  40,
5423                  40,
5424                  40,
5425                  40,
5426                  40,
5427                  40,
5428                  40,
5429                  40,
5430                  40,
5431                  40,
5432                  48,
5433                  48,
5434                  48,
5435                  48,
5436                  48,
5437                  48,
5438                  48,
5439                  48,
5440                  48,
5441                  48,
5442                  48,
5443                  48,
5444                  48,
5445                  48,
5446                  48,
5447                  56,
5448                  /* CONTEXT_LSB6, last byte. */
5449                  0,
5450                  1,
5451                  2,
5452                  3,
5453                  4,
5454                  5,
5455                  6,
5456                  7,
5457                  8,
5458                  9,
5459                  10,
5460                  11,
5461                  12,
5462                  13,
5463                  14,
5464                  15,
5465                  16,
5466                  17,
5467                  18,
5468                  19,
5469                  20,
5470                  21,
5471                  22,
5472                  23,
5473                  24,
5474                  25,
5475                  26,
5476                  27,
5477                  28,
5478                  29,
5479                  30,
5480                  31,
5481                  32,
5482                  33,
5483                  34,
5484                  35,
5485                  36,
5486                  37,
5487                  38,
5488                  39,
5489                  40,
5490                  41,
5491                  42,
5492                  43,
5493                  44,
5494                  45,
5495                  46,
5496                  47,
5497                  48,
5498                  49,
5499                  50,
5500                  51,
5501                  52,
5502                  53,
5503                  54,
5504                  55,
5505                  56,
5506                  57,
5507                  58,
5508                  59,
5509                  60,
5510                  61,
5511                  62,
5512                  63,
5513                  0,
5514                  1,
5515                  2,
5516                  3,
5517                  4,
5518                  5,
5519                  6,
5520                  7,
5521                  8,
5522                  9,
5523                  10,
5524                  11,
5525                  12,
5526                  13,
5527                  14,
5528                  15,
5529                  16,
5530                  17,
5531                  18,
5532                  19,
5533                  20,
5534                  21,
5535                  22,
5536                  23,
5537                  24,
5538                  25,
5539                  26,
5540                  27,
5541                  28,
5542                  29,
5543                  30,
5544                  31,
5545                  32,
5546                  33,
5547                  34,
5548                  35,
5549                  36,
5550                  37,
5551                  38,
5552                  39,
5553                  40,
5554                  41,
5555                  42,
5556                  43,
5557                  44,
5558                  45,
5559                  46,
5560                  47,
5561                  48,
5562                  49,
5563                  50,
5564                  51,
5565                  52,
5566                  53,
5567                  54,
5568                  55,
5569                  56,
5570                  57,
5571                  58,
5572                  59,
5573                  60,
5574                  61,
5575                  62,
5576                  63,
5577                  0,
5578                  1,
5579                  2,
5580                  3,
5581                  4,
5582                  5,
5583                  6,
5584                  7,
5585                  8,
5586                  9,
5587                  10,
5588                  11,
5589                  12,
5590                  13,
5591                  14,
5592                  15,
5593                  16,
5594                  17,
5595                  18,
5596                  19,
5597                  20,
5598                  21,
5599                  22,
5600                  23,
5601                  24,
5602                  25,
5603                  26,
5604                  27,
5605                  28,
5606                  29,
5607                  30,
5608                  31,
5609                  32,
5610                  33,
5611                  34,
5612                  35,
5613                  36,
5614                  37,
5615                  38,
5616                  39,
5617                  40,
5618                  41,
5619                  42,
5620                  43,
5621                  44,
5622                  45,
5623                  46,
5624                  47,
5625                  48,
5626                  49,
5627                  50,
5628                  51,
5629                  52,
5630                  53,
5631                  54,
5632                  55,
5633                  56,
5634                  57,
5635                  58,
5636                  59,
5637                  60,
5638                  61,
5639                  62,
5640                  63,
5641                  0,
5642                  1,
5643                  2,
5644                  3,
5645                  4,
5646                  5,
5647                  6,
5648                  7,
5649                  8,
5650                  9,
5651                  10,
5652                  11,
5653                  12,
5654                  13,
5655                  14,
5656                  15,
5657                  16,
5658                  17,
5659                  18,
5660                  19,
5661                  20,
5662                  21,
5663                  22,
5664                  23,
5665                  24,
5666                  25,
5667                  26,
5668                  27,
5669                  28,
5670                  29,
5671                  30,
5672                  31,
5673                  32,
5674                  33,
5675                  34,
5676                  35,
5677                  36,
5678                  37,
5679                  38,
5680                  39,
5681                  40,
5682                  41,
5683                  42,
5684                  43,
5685                  44,
5686                  45,
5687                  46,
5688                  47,
5689                  48,
5690                  49,
5691                  50,
5692                  51,
5693                  52,
5694                  53,
5695                  54,
5696                  55,
5697                  56,
5698                  57,
5699                  58,
5700                  59,
5701                  60,
5702                  61,
5703                  62,
5704                  63,
5705                  /* CONTEXT_MSB6, last byte. */
5706                  0,
5707                  0,
5708                  0,
5709                  0,
5710                  1,
5711                  1,
5712                  1,
5713                  1,
5714                  2,
5715                  2,
5716                  2,
5717                  2,
5718                  3,
5719                  3,
5720                  3,
5721                  3,
5722                  4,
5723                  4,
5724                  4,
5725                  4,
5726                  5,
5727                  5,
5728                  5,
5729                  5,
5730                  6,
5731                  6,
5732                  6,
5733                  6,
5734                  7,
5735                  7,
5736                  7,
5737                  7,
5738                  8,
5739                  8,
5740                  8,
5741                  8,
5742                  9,
5743                  9,
5744                  9,
5745                  9,
5746                  10,
5747                  10,
5748                  10,
5749                  10,
5750                  11,
5751                  11,
5752                  11,
5753                  11,
5754                  12,
5755                  12,
5756                  12,
5757                  12,
5758                  13,
5759                  13,
5760                  13,
5761                  13,
5762                  14,
5763                  14,
5764                  14,
5765                  14,
5766                  15,
5767                  15,
5768                  15,
5769                  15,
5770                  16,
5771                  16,
5772                  16,
5773                  16,
5774                  17,
5775                  17,
5776                  17,
5777                  17,
5778                  18,
5779                  18,
5780                  18,
5781                  18,
5782                  19,
5783                  19,
5784                  19,
5785                  19,
5786                  20,
5787                  20,
5788                  20,
5789                  20,
5790                  21,
5791                  21,
5792                  21,
5793                  21,
5794                  22,
5795                  22,
5796                  22,
5797                  22,
5798                  23,
5799                  23,
5800                  23,
5801                  23,
5802                  24,
5803                  24,
5804                  24,
5805                  24,
5806                  25,
5807                  25,
5808                  25,
5809                  25,
5810                  26,
5811                  26,
5812                  26,
5813                  26,
5814                  27,
5815                  27,
5816                  27,
5817                  27,
5818                  28,
5819                  28,
5820                  28,
5821                  28,
5822                  29,
5823                  29,
5824                  29,
5825                  29,
5826                  30,
5827                  30,
5828                  30,
5829                  30,
5830                  31,
5831                  31,
5832                  31,
5833                  31,
5834                  32,
5835                  32,
5836                  32,
5837                  32,
5838                  33,
5839                  33,
5840                  33,
5841                  33,
5842                  34,
5843                  34,
5844                  34,
5845                  34,
5846                  35,
5847                  35,
5848                  35,
5849                  35,
5850                  36,
5851                  36,
5852                  36,
5853                  36,
5854                  37,
5855                  37,
5856                  37,
5857                  37,
5858                  38,
5859                  38,
5860                  38,
5861                  38,
5862                  39,
5863                  39,
5864                  39,
5865                  39,
5866                  40,
5867                  40,
5868                  40,
5869                  40,
5870                  41,
5871                  41,
5872                  41,
5873                  41,
5874                  42,
5875                  42,
5876                  42,
5877                  42,
5878                  43,
5879                  43,
5880                  43,
5881                  43,
5882                  44,
5883                  44,
5884                  44,
5885                  44,
5886                  45,
5887                  45,
5888                  45,
5889                  45,
5890                  46,
5891                  46,
5892                  46,
5893                  46,
5894                  47,
5895                  47,
5896                  47,
5897                  47,
5898                  48,
5899                  48,
5900                  48,
5901                  48,
5902                  49,
5903                  49,
5904                  49,
5905                  49,
5906                  50,
5907                  50,
5908                  50,
5909                  50,
5910                  51,
5911                  51,
5912                  51,
5913                  51,
5914                  52,
5915                  52,
5916                  52,
5917                  52,
5918                  53,
5919                  53,
5920                  53,
5921                  53,
5922                  54,
5923                  54,
5924                  54,
5925                  54,
5926                  55,
5927                  55,
5928                  55,
5929                  55,
5930                  56,
5931                  56,
5932                  56,
5933                  56,
5934                  57,
5935                  57,
5936                  57,
5937                  57,
5938                  58,
5939                  58,
5940                  58,
5941                  58,
5942                  59,
5943                  59,
5944                  59,
5945                  59,
5946                  60,
5947                  60,
5948                  60,
5949                  60,
5950                  61,
5951                  61,
5952                  61,
5953                  61,
5954                  62,
5955                  62,
5956                  62,
5957                  62,
5958                  63,
5959                  63,
5960                  63,
5961                  63,
5962                  /* CONTEXT_{M,L}SB6, second last byte, */
5963                  0,
5964                  0,
5965                  0,
5966                  0,
5967                  0,
5968                  0,
5969                  0,
5970                  0,
5971                  0,
5972                  0,
5973                  0,
5974                  0,
5975                  0,
5976                  0,
5977                  0,
5978                  0,
5979                  0,
5980                  0,
5981                  0,
5982                  0,
5983                  0,
5984                  0,
5985                  0,
5986                  0,
5987                  0,
5988                  0,
5989                  0,
5990                  0,
5991                  0,
5992                  0,
5993                  0,
5994                  0,
5995                  0,
5996                  0,
5997                  0,
5998                  0,
5999                  0,
6000                  0,
6001                  0,
6002                  0,
6003                  0,
6004                  0,
6005                  0,
6006                  0,
6007                  0,
6008                  0,
6009                  0,
6010                  0,
6011                  0,
6012                  0,
6013                  0,
6014                  0,
6015                  0,
6016                  0,
6017                  0,
6018                  0,
6019                  0,
6020                  0,
6021                  0,
6022                  0,
6023                  0,
6024                  0,
6025                  0,
6026                  0,
6027                  0,
6028                  0,
6029                  0,
6030                  0,
6031                  0,
6032                  0,
6033                  0,
6034                  0,
6035                  0,
6036                  0,
6037                  0,
6038                  0,
6039                  0,
6040                  0,
6041                  0,
6042                  0,
6043                  0,
6044                  0,
6045                  0,
6046                  0,
6047                  0,
6048                  0,
6049                  0,
6050                  0,
6051                  0,
6052                  0,
6053                  0,
6054                  0,
6055                  0,
6056                  0,
6057                  0,
6058                  0,
6059                  0,
6060                  0,
6061                  0,
6062                  0,
6063                  0,
6064                  0,
6065                  0,
6066                  0,
6067                  0,
6068                  0,
6069                  0,
6070                  0,
6071                  0,
6072                  0,
6073                  0,
6074                  0,
6075                  0,
6076                  0,
6077                  0,
6078                  0,
6079                  0,
6080                  0,
6081                  0,
6082                  0,
6083                  0,
6084                  0,
6085                  0,
6086                  0,
6087                  0,
6088                  0,
6089                  0,
6090                  0,
6091                  0,
6092                  0,
6093                  0,
6094                  0,
6095                  0,
6096                  0,
6097                  0,
6098                  0,
6099                  0,
6100                  0,
6101                  0,
6102                  0,
6103                  0,
6104                  0,
6105                  0,
6106                  0,
6107                  0,
6108                  0,
6109                  0,
6110                  0,
6111                  0,
6112                  0,
6113                  0,
6114                  0,
6115                  0,
6116                  0,
6117                  0,
6118                  0,
6119                  0,
6120                  0,
6121                  0,
6122                  0,
6123                  0,
6124                  0,
6125                  0,
6126                  0,
6127                  0,
6128                  0,
6129                  0,
6130                  0,
6131                  0,
6132                  0,
6133                  0,
6134                  0,
6135                  0,
6136                  0,
6137                  0,
6138                  0,
6139                  0,
6140                  0,
6141                  0,
6142                  0,
6143                  0,
6144                  0,
6145                  0,
6146                  0,
6147                  0,
6148                  0,
6149                  0,
6150                  0,
6151                  0,
6152                  0,
6153                  0,
6154                  0,
6155                  0,
6156                  0,
6157                  0,
6158                  0,
6159                  0,
6160                  0,
6161                  0,
6162                  0,
6163                  0,
6164                  0,
6165                  0,
6166                  0,
6167                  0,
6168                  0,
6169                  0,
6170                  0,
6171                  0,
6172                  0,
6173                  0,
6174                  0,
6175                  0,
6176                  0,
6177                  0,
6178                  0,
6179                  0,
6180                  0,
6181                  0,
6182                  0,
6183                  0,
6184                  0,
6185                  0,
6186                  0,
6187                  0,
6188                  0,
6189                  0,
6190                  0,
6191                  0,
6192                  0,
6193                  0,
6194                  0,
6195                  0,
6196                  0,
6197                  0,
6198                  0,
6199                  0,
6200                  0,
6201                  0,
6202                  0,
6203                  0,
6204                  0,
6205                  0,
6206                  0,
6207                  0,
6208                  0,
6209                  0,
6210                  0,
6211                  0,
6212                  0,
6213                  0,
6214                  0,
6215                  0,
6216                  0,
6217                  0,
6218                  0
6219                ]);
6220                exports3.lookupOffsets = new Uint16Array([
6221                  /* CONTEXT_LSB6 */
6222                  1024,
6223                  1536,
6224                  1280,
6225                  1536,
6226                  0,
6227                  256,
6228                  768,
6229                  512
6230                ]);
6231              },
6232              {}
6233            ],
6234            3: [
6235              function(require2, module3, exports3) {
6236                var BrotliInput = require2("./streams").BrotliInput;
6237                var BrotliOutput = require2("./streams").BrotliOutput;
6238                var BrotliBitReader = require2("./bit_reader");
6239                var BrotliDictionary = require2("./dictionary");
6240                var HuffmanCode = require2("./huffman").HuffmanCode;
6241                var BrotliBuildHuffmanTable = require2("./huffman").BrotliBuildHuffmanTable;
6242                var Context = require2("./context");
6243                var Prefix = require2("./prefix");
6244                var Transform = require2("./transform");
6245                var kDefaultCodeLength = 8;
6246                var kCodeLengthRepeatCode = 16;
6247                var kNumLiteralCodes = 256;
6248                var kNumInsertAndCopyCodes = 704;
6249                var kNumBlockLengthCodes = 26;
6250                var kLiteralContextBits = 6;
6251                var kDistanceContextBits = 2;
6252                var HUFFMAN_TABLE_BITS = 8;
6253                var HUFFMAN_TABLE_MASK = 255;
6254                var HUFFMAN_MAX_TABLE_SIZE = 1080;
6255                var CODE_LENGTH_CODES = 18;
6256                var kCodeLengthCodeOrder = new Uint8Array([
6257                  1,
6258                  2,
6259                  3,
6260                  4,
6261                  0,
6262                  5,
6263                  17,
6264                  6,
6265                  16,
6266                  7,
6267                  8,
6268                  9,
6269                  10,
6270                  11,
6271                  12,
6272                  13,
6273                  14,
6274                  15
6275                ]);
6276                var NUM_DISTANCE_SHORT_CODES = 16;
6277                var kDistanceShortCodeIndexOffset = new Uint8Array([
6278                  3,
6279                  2,
6280                  1,
6281                  0,
6282                  3,
6283                  3,
6284                  3,
6285                  3,
6286                  3,
6287                  3,
6288                  2,
6289                  2,
6290                  2,
6291                  2,
6292                  2,
6293                  2
6294                ]);
6295                var kDistanceShortCodeValueOffset = new Int8Array([
6296                  0,
6297                  0,
6298                  0,
6299                  0,
6300                  -1,
6301                  1,
6302                  -2,
6303                  2,
6304                  -3,
6305                  3,
6306                  -1,
6307                  1,
6308                  -2,
6309                  2,
6310                  -3,
6311                  3
6312                ]);
6313                var kMaxHuffmanTableSize = new Uint16Array([
6314                  256,
6315                  402,
6316                  436,
6317                  468,
6318                  500,
6319                  534,
6320                  566,
6321                  598,
6322                  630,
6323                  662,
6324                  694,
6325                  726,
6326                  758,
6327                  790,
6328                  822,
6329                  854,
6330                  886,
6331                  920,
6332                  952,
6333                  984,
6334                  1016,
6335                  1048,
6336                  1080
6337                ]);
6338                function DecodeWindowBits(br) {
6339                  var n2;
6340                  if (br.readBits(1) === 0) {
6341                    return 16;
6342                  }
6343                  n2 = br.readBits(3);
6344                  if (n2 > 0) {
6345                    return 17 + n2;
6346                  }
6347                  n2 = br.readBits(3);
6348                  if (n2 > 0) {
6349                    return 8 + n2;
6350                  }
6351                  return 17;
6352                }
6353                function DecodeVarLenUint8(br) {
6354                  if (br.readBits(1)) {
6355                    var nbits = br.readBits(3);
6356                    if (nbits === 0) {
6357                      return 1;
6358                    } else {
6359                      return br.readBits(nbits) + (1 << nbits);
6360                    }
6361                  }
6362                  return 0;
6363                }
6364                function MetaBlockLength() {
6365                  this.meta_block_length = 0;
6366                  this.input_end = 0;
6367                  this.is_uncompressed = 0;
6368                  this.is_metadata = false;
6369                }
6370                function DecodeMetaBlockLength(br) {
6371                  var out = new MetaBlockLength();
6372                  var size_nibbles;
6373                  var size_bytes;
6374                  var i2;
6375                  out.input_end = br.readBits(1);
6376                  if (out.input_end && br.readBits(1)) {
6377                    return out;
6378                  }
6379                  size_nibbles = br.readBits(2) + 4;
6380                  if (size_nibbles === 7) {
6381                    out.is_metadata = true;
6382                    if (br.readBits(1) !== 0)
6383                      throw new Error("Invalid reserved bit");
6384                    size_bytes = br.readBits(2);
6385                    if (size_bytes === 0) return out;
6386                    for (i2 = 0; i2 < size_bytes; i2++) {
6387                      var next_byte = br.readBits(8);
6388                      if (i2 + 1 === size_bytes && size_bytes > 1 && next_byte === 0)
6389                        throw new Error("Invalid size byte");
6390                      out.meta_block_length |= next_byte << i2 * 8;
6391                    }
6392                  } else {
6393                    for (i2 = 0; i2 < size_nibbles; ++i2) {
6394                      var next_nibble = br.readBits(4);
6395                      if (i2 + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)
6396                        throw new Error("Invalid size nibble");
6397                      out.meta_block_length |= next_nibble << i2 * 4;
6398                    }
6399                  }
6400                  ++out.meta_block_length;
6401                  if (!out.input_end && !out.is_metadata) {
6402                    out.is_uncompressed = br.readBits(1);
6403                  }
6404                  return out;
6405                }
6406                function ReadSymbol(table, index, br) {
6407                  var start_index = index;
6408                  var nbits;
6409                  br.fillBitWindow();
6410                  index += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK;
6411                  nbits = table[index].bits - HUFFMAN_TABLE_BITS;
6412                  if (nbits > 0) {
6413                    br.bit_pos_ += HUFFMAN_TABLE_BITS;
6414                    index += table[index].value;
6415                    index += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1;
6416                  }
6417                  br.bit_pos_ += table[index].bits;
6418                  return table[index].value;
6419                }
6420                function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {
6421                  var symbol = 0;
6422                  var prev_code_len = kDefaultCodeLength;
6423                  var repeat = 0;
6424                  var repeat_code_len = 0;
6425                  var space = 32768;
6426                  var table = [];
6427                  for (var i2 = 0; i2 < 32; i2++)
6428                    table.push(new HuffmanCode(0, 0));
6429                  BrotliBuildHuffmanTable(
6430                    table,
6431                    0,
6432                    5,
6433                    code_length_code_lengths,
6434                    CODE_LENGTH_CODES
6435                  );
6436                  while (symbol < num_symbols && space > 0) {
6437                    var p3 = 0;
6438                    var code_len;
6439                    br.readMoreInput();
6440                    br.fillBitWindow();
6441                    p3 += br.val_ >>> br.bit_pos_ & 31;
6442                    br.bit_pos_ += table[p3].bits;
6443                    code_len = table[p3].value & 255;
6444                    if (code_len < kCodeLengthRepeatCode) {
6445                      repeat = 0;
6446                      code_lengths[symbol++] = code_len;
6447                      if (code_len !== 0) {
6448                        prev_code_len = code_len;
6449                        space -= 32768 >> code_len;
6450                      }
6451                    } else {
6452                      var extra_bits = code_len - 14;
6453                      var old_repeat;
6454                      var repeat_delta;
6455                      var new_len = 0;
6456                      if (code_len === kCodeLengthRepeatCode) {
6457                        new_len = prev_code_len;
6458                      }
6459                      if (repeat_code_len !== new_len) {
6460                        repeat = 0;
6461                        repeat_code_len = new_len;
6462                      }
6463                      old_repeat = repeat;
6464                      if (repeat > 0) {
6465                        repeat -= 2;
6466                        repeat <<= extra_bits;
6467                      }
6468                      repeat += br.readBits(extra_bits) + 3;
6469                      repeat_delta = repeat - old_repeat;
6470                      if (symbol + repeat_delta > num_symbols) {
6471                        throw new Error(
6472                          "[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols"
6473                        );
6474                      }
6475                      for (var x2 = 0; x2 < repeat_delta; x2++)
6476                        code_lengths[symbol + x2] = repeat_code_len;
6477                      symbol += repeat_delta;
6478                      if (repeat_code_len !== 0) {
6479                        space -= repeat_delta << 15 - repeat_code_len;
6480                      }
6481                    }
6482                  }
6483                  if (space !== 0) {
6484                    throw new Error(
6485                      "[ReadHuffmanCodeLengths] space = " + space
6486                    );
6487                  }
6488                  for (; symbol < num_symbols; symbol++)
6489                    code_lengths[symbol] = 0;
6490                }
6491                function ReadHuffmanCode(alphabet_size, tables, table, br) {
6492                  var table_size = 0;
6493                  var simple_code_or_skip;
6494                  var code_lengths = new Uint8Array(alphabet_size);
6495                  br.readMoreInput();
6496                  simple_code_or_skip = br.readBits(2);
6497                  if (simple_code_or_skip === 1) {
6498                    var i2;
6499                    var max_bits_counter = alphabet_size - 1;
6500                    var max_bits = 0;
6501                    var symbols = new Int32Array(4);
6502                    var num_symbols = br.readBits(2) + 1;
6503                    while (max_bits_counter) {
6504                      max_bits_counter >>= 1;
6505                      ++max_bits;
6506                    }
6507                    for (i2 = 0; i2 < num_symbols; ++i2) {
6508                      symbols[i2] = br.readBits(max_bits) % alphabet_size;
6509                      code_lengths[symbols[i2]] = 2;
6510                    }
6511                    code_lengths[symbols[0]] = 1;
6512                    switch (num_symbols) {
6513                      case 1:
6514                        break;
6515                      case 3:
6516                        if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[1] === symbols[2]) {
6517                          throw new Error(
6518                            "[ReadHuffmanCode] invalid symbols"
6519                          );
6520                        }
6521                        break;
6522                      case 2:
6523                        if (symbols[0] === symbols[1]) {
6524                          throw new Error(
6525                            "[ReadHuffmanCode] invalid symbols"
6526                          );
6527                        }
6528                        code_lengths[symbols[1]] = 1;
6529                        break;
6530                      case 4:
6531                        if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[0] === symbols[3] || symbols[1] === symbols[2] || symbols[1] === symbols[3] || symbols[2] === symbols[3]) {
6532                          throw new Error(
6533                            "[ReadHuffmanCode] invalid symbols"
6534                          );
6535                        }
6536                        if (br.readBits(1)) {
6537                          code_lengths[symbols[2]] = 3;
6538                          code_lengths[symbols[3]] = 3;
6539                        } else {
6540                          code_lengths[symbols[0]] = 2;
6541                        }
6542                        break;
6543                    }
6544                  } else {
6545                    var i2;
6546                    var code_length_code_lengths = new Uint8Array(
6547                      CODE_LENGTH_CODES
6548                    );
6549                    var space = 32;
6550                    var num_codes = 0;
6551                    var huff = [
6552                      new HuffmanCode(2, 0),
6553                      new HuffmanCode(2, 4),
6554                      new HuffmanCode(2, 3),
6555                      new HuffmanCode(3, 2),
6556                      new HuffmanCode(2, 0),
6557                      new HuffmanCode(2, 4),
6558                      new HuffmanCode(2, 3),
6559                      new HuffmanCode(4, 1),
6560                      new HuffmanCode(2, 0),
6561                      new HuffmanCode(2, 4),
6562                      new HuffmanCode(2, 3),
6563                      new HuffmanCode(3, 2),
6564                      new HuffmanCode(2, 0),
6565                      new HuffmanCode(2, 4),
6566                      new HuffmanCode(2, 3),
6567                      new HuffmanCode(4, 5)
6568                    ];
6569                    for (i2 = simple_code_or_skip; i2 < CODE_LENGTH_CODES && space > 0; ++i2) {
6570                      var code_len_idx = kCodeLengthCodeOrder[i2];
6571                      var p3 = 0;
6572                      var v2;
6573                      br.fillBitWindow();
6574                      p3 += br.val_ >>> br.bit_pos_ & 15;
6575                      br.bit_pos_ += huff[p3].bits;
6576                      v2 = huff[p3].value;
6577                      code_length_code_lengths[code_len_idx] = v2;
6578                      if (v2 !== 0) {
6579                        space -= 32 >> v2;
6580                        ++num_codes;
6581                      }
6582                    }
6583                    if (!(num_codes === 1 || space === 0))
6584                      throw new Error(
6585                        "[ReadHuffmanCode] invalid num_codes or space"
6586                      );
6587                    ReadHuffmanCodeLengths(
6588                      code_length_code_lengths,
6589                      alphabet_size,
6590                      code_lengths,
6591                      br
6592                    );
6593                  }
6594                  table_size = BrotliBuildHuffmanTable(
6595                    tables,
6596                    table,
6597                    HUFFMAN_TABLE_BITS,
6598                    code_lengths,
6599                    alphabet_size
6600                  );
6601                  if (table_size === 0) {
6602                    throw new Error(
6603                      "[ReadHuffmanCode] BuildHuffmanTable failed: "
6604                    );
6605                  }
6606                  return table_size;
6607                }
6608                function ReadBlockLength(table, index, br) {
6609                  var code;
6610                  var nbits;
6611                  code = ReadSymbol(table, index, br);
6612                  nbits = Prefix.kBlockLengthPrefixCode[code].nbits;
6613                  return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);
6614                }
6615                function TranslateShortCodes(code, ringbuffer, index) {
6616                  var val;
6617                  if (code < NUM_DISTANCE_SHORT_CODES) {
6618                    index += kDistanceShortCodeIndexOffset[code];
6619                    index &= 3;
6620                    val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];
6621                  } else {
6622                    val = code - NUM_DISTANCE_SHORT_CODES + 1;
6623                  }
6624                  return val;
6625                }
6626                function MoveToFront(v2, index) {
6627                  var value = v2[index];
6628                  var i2 = index;
6629                  for (; i2; --i2) v2[i2] = v2[i2 - 1];
6630                  v2[0] = value;
6631                }
6632                function InverseMoveToFrontTransform(v2, v_len) {
6633                  var mtf = new Uint8Array(256);
6634                  var i2;
6635                  for (i2 = 0; i2 < 256; ++i2) {
6636                    mtf[i2] = i2;
6637                  }
6638                  for (i2 = 0; i2 < v_len; ++i2) {
6639                    var index = v2[i2];
6640                    v2[i2] = mtf[index];
6641                    if (index) MoveToFront(mtf, index);
6642                  }
6643                }
6644                function HuffmanTreeGroup(alphabet_size, num_htrees) {
6645                  this.alphabet_size = alphabet_size;
6646                  this.num_htrees = num_htrees;
6647                  this.codes = new Array(
6648                    num_htrees + num_htrees * kMaxHuffmanTableSize[alphabet_size + 31 >>> 5]
6649                  );
6650                  this.htrees = new Uint32Array(num_htrees);
6651                }
6652                HuffmanTreeGroup.prototype.decode = function(br) {
6653                  var i2;
6654                  var table_size;
6655                  var next = 0;
6656                  for (i2 = 0; i2 < this.num_htrees; ++i2) {
6657                    this.htrees[i2] = next;
6658                    table_size = ReadHuffmanCode(
6659                      this.alphabet_size,
6660                      this.codes,
6661                      next,
6662                      br
6663                    );
6664                    next += table_size;
6665                  }
6666                };
6667                function DecodeContextMap(context_map_size, br) {
6668                  var out = { num_htrees: null, context_map: null };
6669                  var use_rle_for_zeros;
6670                  var max_run_length_prefix = 0;
6671                  var table;
6672                  var i2;
6673                  br.readMoreInput();
6674                  var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;
6675                  var context_map = out.context_map = new Uint8Array(
6676                    context_map_size
6677                  );
6678                  if (num_htrees <= 1) {
6679                    return out;
6680                  }
6681                  use_rle_for_zeros = br.readBits(1);
6682                  if (use_rle_for_zeros) {
6683                    max_run_length_prefix = br.readBits(4) + 1;
6684                  }
6685                  table = [];
6686                  for (i2 = 0; i2 < HUFFMAN_MAX_TABLE_SIZE; i2++) {
6687                    table[i2] = new HuffmanCode(0, 0);
6688                  }
6689                  ReadHuffmanCode(
6690                    num_htrees + max_run_length_prefix,
6691                    table,
6692                    0,
6693                    br
6694                  );
6695                  for (i2 = 0; i2 < context_map_size; ) {
6696                    var code;
6697                    br.readMoreInput();
6698                    code = ReadSymbol(table, 0, br);
6699                    if (code === 0) {
6700                      context_map[i2] = 0;
6701                      ++i2;
6702                    } else if (code <= max_run_length_prefix) {
6703                      var reps = 1 + (1 << code) + br.readBits(code);
6704                      while (--reps) {
6705                        if (i2 >= context_map_size) {
6706                          throw new Error(
6707                            "[DecodeContextMap] i >= context_map_size"
6708                          );
6709                        }
6710                        context_map[i2] = 0;
6711                        ++i2;
6712                      }
6713                    } else {
6714                      context_map[i2] = code - max_run_length_prefix;
6715                      ++i2;
6716                    }
6717                  }
6718                  if (br.readBits(1)) {
6719                    InverseMoveToFrontTransform(
6720                      context_map,
6721                      context_map_size
6722                    );
6723                  }
6724                  return out;
6725                }
6726                function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {
6727                  var ringbuffer = tree_type * 2;
6728                  var index = tree_type;
6729                  var type_code = ReadSymbol(
6730                    trees,
6731                    tree_type * HUFFMAN_MAX_TABLE_SIZE,
6732                    br
6733                  );
6734                  var block_type;
6735                  if (type_code === 0) {
6736                    block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];
6737                  } else if (type_code === 1) {
6738                    block_type = ringbuffers[ringbuffer + (indexes[index] - 1 & 1)] + 1;
6739                  } else {
6740                    block_type = type_code - 2;
6741                  }
6742                  if (block_type >= max_block_type) {
6743                    block_type -= max_block_type;
6744                  }
6745                  block_types[tree_type] = block_type;
6746                  ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;
6747                  ++indexes[index];
6748                }
6749                function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {
6750                  var rb_size = ringbuffer_mask + 1;
6751                  var rb_pos = pos & ringbuffer_mask;
6752                  var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;
6753                  var nbytes;
6754                  if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {
6755                    while (len-- > 0) {
6756                      br.readMoreInput();
6757                      ringbuffer[rb_pos++] = br.readBits(8);
6758                      if (rb_pos === rb_size) {
6759                        output.write(ringbuffer, rb_size);
6760                        rb_pos = 0;
6761                      }
6762                    }
6763                    return;
6764                  }
6765                  if (br.bit_end_pos_ < 32) {
6766                    throw new Error(
6767                      "[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32"
6768                    );
6769                  }
6770                  while (br.bit_pos_ < 32) {
6771                    ringbuffer[rb_pos] = br.val_ >>> br.bit_pos_;
6772                    br.bit_pos_ += 8;
6773                    ++rb_pos;
6774                    --len;
6775                  }
6776                  nbytes = br.bit_end_pos_ - br.bit_pos_ >> 3;
6777                  if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {
6778                    var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;
6779                    for (var x2 = 0; x2 < tail; x2++)
6780                      ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2];
6781                    nbytes -= tail;
6782                    rb_pos += tail;
6783                    len -= tail;
6784                    br_pos = 0;
6785                  }
6786                  for (var x2 = 0; x2 < nbytes; x2++)
6787                    ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2];
6788                  rb_pos += nbytes;
6789                  len -= nbytes;
6790                  if (rb_pos >= rb_size) {
6791                    output.write(ringbuffer, rb_size);
6792                    rb_pos -= rb_size;
6793                    for (var x2 = 0; x2 < rb_pos; x2++)
6794                      ringbuffer[x2] = ringbuffer[rb_size + x2];
6795                  }
6796                  while (rb_pos + len >= rb_size) {
6797                    nbytes = rb_size - rb_pos;
6798                    if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {
6799                      throw new Error(
6800                        "[CopyUncompressedBlockToOutput] not enough bytes"
6801                      );
6802                    }
6803                    output.write(ringbuffer, rb_size);
6804                    len -= nbytes;
6805                    rb_pos = 0;
6806                  }
6807                  if (br.input_.read(ringbuffer, rb_pos, len) < len) {
6808                    throw new Error(
6809                      "[CopyUncompressedBlockToOutput] not enough bytes"
6810                    );
6811                  }
6812                  br.reset();
6813                }
6814                function JumpToByteBoundary(br) {
6815                  var new_bit_pos = br.bit_pos_ + 7 & ~7;
6816                  var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);
6817                  return pad_bits == 0;
6818                }
6819                function BrotliDecompressedSize(buffer) {
6820                  var input = new BrotliInput(buffer);
6821                  var br = new BrotliBitReader(input);
6822                  DecodeWindowBits(br);
6823                  var out = DecodeMetaBlockLength(br);
6824                  return out.meta_block_length;
6825                }
6826                exports3.BrotliDecompressedSize = BrotliDecompressedSize;
6827                function BrotliDecompressBuffer(buffer, output_size) {
6828                  var input = new BrotliInput(buffer);
6829                  if (output_size == null) {
6830                    output_size = BrotliDecompressedSize(buffer);
6831                  }
6832                  var output_buffer = new Uint8Array(output_size);
6833                  var output = new BrotliOutput(output_buffer);
6834                  BrotliDecompress(input, output);
6835                  if (output.pos < output.buffer.length) {
6836                    output.buffer = output.buffer.subarray(
6837                      0,
6838                      output.pos
6839                    );
6840                  }
6841                  return output.buffer;
6842                }
6843                exports3.BrotliDecompressBuffer = BrotliDecompressBuffer;
6844                function BrotliDecompress(input, output) {
6845                  var i2;
6846                  var pos = 0;
6847                  var input_end = 0;
6848                  var window_bits = 0;
6849                  var max_backward_distance;
6850                  var max_distance = 0;
6851                  var ringbuffer_size;
6852                  var ringbuffer_mask;
6853                  var ringbuffer;
6854                  var ringbuffer_end;
6855                  var dist_rb = [16, 15, 11, 4];
6856                  var dist_rb_idx = 0;
6857                  var prev_byte1 = 0;
6858                  var prev_byte2 = 0;
6859                  var hgroup = [
6860                    new HuffmanTreeGroup(0, 0),
6861                    new HuffmanTreeGroup(0, 0),
6862                    new HuffmanTreeGroup(0, 0)
6863                  ];
6864                  var block_type_trees;
6865                  var block_len_trees;
6866                  var br;
6867                  var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;
6868                  br = new BrotliBitReader(input);
6869                  window_bits = DecodeWindowBits(br);
6870                  max_backward_distance = (1 << window_bits) - 16;
6871                  ringbuffer_size = 1 << window_bits;
6872                  ringbuffer_mask = ringbuffer_size - 1;
6873                  ringbuffer = new Uint8Array(
6874                    ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength
6875                  );
6876                  ringbuffer_end = ringbuffer_size;
6877                  block_type_trees = [];
6878                  block_len_trees = [];
6879                  for (var x2 = 0; x2 < 3 * HUFFMAN_MAX_TABLE_SIZE; x2++) {
6880                    block_type_trees[x2] = new HuffmanCode(0, 0);
6881                    block_len_trees[x2] = new HuffmanCode(0, 0);
6882                  }
6883                  while (!input_end) {
6884                    var meta_block_remaining_len = 0;
6885                    var is_uncompressed;
6886                    var block_length = [1 << 28, 1 << 28, 1 << 28];
6887                    var block_type = [0];
6888                    var num_block_types = [1, 1, 1];
6889                    var block_type_rb = [0, 1, 0, 1, 0, 1];
6890                    var block_type_rb_index = [0];
6891                    var distance_postfix_bits;
6892                    var num_direct_distance_codes;
6893                    var distance_postfix_mask;
6894                    var num_distance_codes;
6895                    var context_map = null;
6896                    var context_modes = null;
6897                    var num_literal_htrees;
6898                    var dist_context_map = null;
6899                    var num_dist_htrees;
6900                    var context_offset = 0;
6901                    var context_map_slice = null;
6902                    var literal_htree_index = 0;
6903                    var dist_context_offset = 0;
6904                    var dist_context_map_slice = null;
6905                    var dist_htree_index = 0;
6906                    var context_lookup_offset1 = 0;
6907                    var context_lookup_offset2 = 0;
6908                    var context_mode;
6909                    var htree_command;
6910                    for (i2 = 0; i2 < 3; ++i2) {
6911                      hgroup[i2].codes = null;
6912                      hgroup[i2].htrees = null;
6913                    }
6914                    br.readMoreInput();
6915                    var _out = DecodeMetaBlockLength(br);
6916                    meta_block_remaining_len = _out.meta_block_length;
6917                    if (pos + meta_block_remaining_len > output.buffer.length) {
6918                      var tmp = new Uint8Array(
6919                        pos + meta_block_remaining_len
6920                      );
6921                      tmp.set(output.buffer);
6922                      output.buffer = tmp;
6923                    }
6924                    input_end = _out.input_end;
6925                    is_uncompressed = _out.is_uncompressed;
6926                    if (_out.is_metadata) {
6927                      JumpToByteBoundary(br);
6928                      for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {
6929                        br.readMoreInput();
6930                        br.readBits(8);
6931                      }
6932                      continue;
6933                    }
6934                    if (meta_block_remaining_len === 0) {
6935                      continue;
6936                    }
6937                    if (is_uncompressed) {
6938                      br.bit_pos_ = br.bit_pos_ + 7 & ~7;
6939                      CopyUncompressedBlockToOutput(
6940                        output,
6941                        meta_block_remaining_len,
6942                        pos,
6943                        ringbuffer,
6944                        ringbuffer_mask,
6945                        br
6946                      );
6947                      pos += meta_block_remaining_len;
6948                      continue;
6949                    }
6950                    for (i2 = 0; i2 < 3; ++i2) {
6951                      num_block_types[i2] = DecodeVarLenUint8(br) + 1;
6952                      if (num_block_types[i2] >= 2) {
6953                        ReadHuffmanCode(
6954                          num_block_types[i2] + 2,
6955                          block_type_trees,
6956                          i2 * HUFFMAN_MAX_TABLE_SIZE,
6957                          br
6958                        );
6959                        ReadHuffmanCode(
6960                          kNumBlockLengthCodes,
6961                          block_len_trees,
6962                          i2 * HUFFMAN_MAX_TABLE_SIZE,
6963                          br
6964                        );
6965                        block_length[i2] = ReadBlockLength(
6966                          block_len_trees,
6967                          i2 * HUFFMAN_MAX_TABLE_SIZE,
6968                          br
6969                        );
6970                        block_type_rb_index[i2] = 1;
6971                      }
6972                    }
6973                    br.readMoreInput();
6974                    distance_postfix_bits = br.readBits(2);
6975                    num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);
6976                    distance_postfix_mask = (1 << distance_postfix_bits) - 1;
6977                    num_distance_codes = num_direct_distance_codes + (48 << distance_postfix_bits);
6978                    context_modes = new Uint8Array(
6979                      num_block_types[0]
6980                    );
6981                    for (i2 = 0; i2 < num_block_types[0]; ++i2) {
6982                      br.readMoreInput();
6983                      context_modes[i2] = br.readBits(2) << 1;
6984                    }
6985                    var _o1 = DecodeContextMap(
6986                      num_block_types[0] << kLiteralContextBits,
6987                      br
6988                    );
6989                    num_literal_htrees = _o1.num_htrees;
6990                    context_map = _o1.context_map;
6991                    var _o2 = DecodeContextMap(
6992                      num_block_types[2] << kDistanceContextBits,
6993                      br
6994                    );
6995                    num_dist_htrees = _o2.num_htrees;
6996                    dist_context_map = _o2.context_map;
6997                    hgroup[0] = new HuffmanTreeGroup(
6998                      kNumLiteralCodes,
6999                      num_literal_htrees
7000                    );
7001                    hgroup[1] = new HuffmanTreeGroup(
7002                      kNumInsertAndCopyCodes,
7003                      num_block_types[1]
7004                    );
7005                    hgroup[2] = new HuffmanTreeGroup(
7006                      num_distance_codes,
7007                      num_dist_htrees
7008                    );
7009                    for (i2 = 0; i2 < 3; ++i2) {
7010                      hgroup[i2].decode(br);
7011                    }
7012                    context_map_slice = 0;
7013                    dist_context_map_slice = 0;
7014                    context_mode = context_modes[block_type[0]];
7015                    context_lookup_offset1 = Context.lookupOffsets[context_mode];
7016                    context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
7017                    htree_command = hgroup[1].htrees[0];
7018                    while (meta_block_remaining_len > 0) {
7019                      var cmd_code;
7020                      var range_idx;
7021                      var insert_code;
7022                      var copy_code;
7023                      var insert_length;
7024                      var copy_length;
7025                      var distance_code;
7026                      var distance;
7027                      var context;
7028                      var j2;
7029                      var copy_dst;
7030                      br.readMoreInput();
7031                      if (block_length[1] === 0) {
7032                        DecodeBlockType(
7033                          num_block_types[1],
7034                          block_type_trees,
7035                          1,
7036                          block_type,
7037                          block_type_rb,
7038                          block_type_rb_index,
7039                          br
7040                        );
7041                        block_length[1] = ReadBlockLength(
7042                          block_len_trees,
7043                          HUFFMAN_MAX_TABLE_SIZE,
7044                          br
7045                        );
7046                        htree_command = hgroup[1].htrees[block_type[1]];
7047                      }
7048                      --block_length[1];
7049                      cmd_code = ReadSymbol(
7050                        hgroup[1].codes,
7051                        htree_command,
7052                        br
7053                      );
7054                      range_idx = cmd_code >> 6;
7055                      if (range_idx >= 2) {
7056                        range_idx -= 2;
7057                        distance_code = -1;
7058                      } else {
7059                        distance_code = 0;
7060                      }
7061                      insert_code = Prefix.kInsertRangeLut[range_idx] + (cmd_code >> 3 & 7);
7062                      copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);
7063                      insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset + br.readBits(
7064                        Prefix.kInsertLengthPrefixCode[insert_code].nbits
7065                      );
7066                      copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset + br.readBits(
7067                        Prefix.kCopyLengthPrefixCode[copy_code].nbits
7068                      );
7069                      prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask];
7070                      prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask];
7071                      for (j2 = 0; j2 < insert_length; ++j2) {
7072                        br.readMoreInput();
7073                        if (block_length[0] === 0) {
7074                          DecodeBlockType(
7075                            num_block_types[0],
7076                            block_type_trees,
7077                            0,
7078                            block_type,
7079                            block_type_rb,
7080                            block_type_rb_index,
7081                            br
7082                          );
7083                          block_length[0] = ReadBlockLength(
7084                            block_len_trees,
7085                            0,
7086                            br
7087                          );
7088                          context_offset = block_type[0] << kLiteralContextBits;
7089                          context_map_slice = context_offset;
7090                          context_mode = context_modes[block_type[0]];
7091                          context_lookup_offset1 = Context.lookupOffsets[context_mode];
7092                          context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
7093                        }
7094                        context = Context.lookup[context_lookup_offset1 + prev_byte1] | Context.lookup[context_lookup_offset2 + prev_byte2];
7095                        literal_htree_index = context_map[context_map_slice + context];
7096                        --block_length[0];
7097                        prev_byte2 = prev_byte1;
7098                        prev_byte1 = ReadSymbol(
7099                          hgroup[0].codes,
7100                          hgroup[0].htrees[literal_htree_index],
7101                          br
7102                        );
7103                        ringbuffer[pos & ringbuffer_mask] = prev_byte1;
7104                        if ((pos & ringbuffer_mask) === ringbuffer_mask) {
7105                          output.write(
7106                            ringbuffer,
7107                            ringbuffer_size
7108                          );
7109                        }
7110                        ++pos;
7111                      }
7112                      meta_block_remaining_len -= insert_length;
7113                      if (meta_block_remaining_len <= 0) break;
7114                      if (distance_code < 0) {
7115                        var context;
7116                        br.readMoreInput();
7117                        if (block_length[2] === 0) {
7118                          DecodeBlockType(
7119                            num_block_types[2],
7120                            block_type_trees,
7121                            2,
7122                            block_type,
7123                            block_type_rb,
7124                            block_type_rb_index,
7125                            br
7126                          );
7127                          block_length[2] = ReadBlockLength(
7128                            block_len_trees,
7129                            2 * HUFFMAN_MAX_TABLE_SIZE,
7130                            br
7131                          );
7132                          dist_context_offset = block_type[2] << kDistanceContextBits;
7133                          dist_context_map_slice = dist_context_offset;
7134                        }
7135                        --block_length[2];
7136                        context = (copy_length > 4 ? 3 : copy_length - 2) & 255;
7137                        dist_htree_index = dist_context_map[dist_context_map_slice + context];
7138                        distance_code = ReadSymbol(
7139                          hgroup[2].codes,
7140                          hgroup[2].htrees[dist_htree_index],
7141                          br
7142                        );
7143                        if (distance_code >= num_direct_distance_codes) {
7144                          var nbits;
7145                          var postfix;
7146                          var offset;
7147                          distance_code -= num_direct_distance_codes;
7148                          postfix = distance_code & distance_postfix_mask;
7149                          distance_code >>= distance_postfix_bits;
7150                          nbits = (distance_code >> 1) + 1;
7151                          offset = (2 + (distance_code & 1) << nbits) - 4;
7152                          distance_code = num_direct_distance_codes + (offset + br.readBits(nbits) << distance_postfix_bits) + postfix;
7153                        }
7154                      }
7155                      distance = TranslateShortCodes(
7156                        distance_code,
7157                        dist_rb,
7158                        dist_rb_idx
7159                      );
7160                      if (distance < 0) {
7161                        throw new Error(
7162                          "[BrotliDecompress] invalid distance"
7163                        );
7164                      }
7165                      if (pos < max_backward_distance && max_distance !== max_backward_distance) {
7166                        max_distance = pos;
7167                      } else {
7168                        max_distance = max_backward_distance;
7169                      }
7170                      copy_dst = pos & ringbuffer_mask;
7171                      if (distance > max_distance) {
7172                        if (copy_length >= BrotliDictionary.minDictionaryWordLength && copy_length <= BrotliDictionary.maxDictionaryWordLength) {
7173                          var offset = BrotliDictionary.offsetsByLength[copy_length];
7174                          var word_id = distance - max_distance - 1;
7175                          var shift = BrotliDictionary.sizeBitsByLength[copy_length];
7176                          var mask = (1 << shift) - 1;
7177                          var word_idx = word_id & mask;
7178                          var transform_idx = word_id >> shift;
7179                          offset += word_idx * copy_length;
7180                          if (transform_idx < Transform.kNumTransforms) {
7181                            var len = Transform.transformDictionaryWord(
7182                              ringbuffer,
7183                              copy_dst,
7184                              offset,
7185                              copy_length,
7186                              transform_idx
7187                            );
7188                            copy_dst += len;
7189                            pos += len;
7190                            meta_block_remaining_len -= len;
7191                            if (copy_dst >= ringbuffer_end) {
7192                              output.write(
7193                                ringbuffer,
7194                                ringbuffer_size
7195                              );
7196                              for (var _x9 = 0; _x9 < copy_dst - ringbuffer_end; _x9++)
7197                                ringbuffer[_x9] = ringbuffer[ringbuffer_end + _x9];
7198                            }
7199                          } else {
7200                            throw new Error(
7201                              "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len
7202                            );
7203                          }
7204                        } else {
7205                          throw new Error(
7206                            "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len
7207                          );
7208                        }
7209                      } else {
7210                        if (distance_code > 0) {
7211                          dist_rb[dist_rb_idx & 3] = distance;
7212                          ++dist_rb_idx;
7213                        }
7214                        if (copy_length > meta_block_remaining_len) {
7215                          throw new Error(
7216                            "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len
7217                          );
7218                        }
7219                        for (j2 = 0; j2 < copy_length; ++j2) {
7220                          ringbuffer[pos & ringbuffer_mask] = ringbuffer[pos - distance & ringbuffer_mask];
7221                          if ((pos & ringbuffer_mask) === ringbuffer_mask) {
7222                            output.write(
7223                              ringbuffer,
7224                              ringbuffer_size
7225                            );
7226                          }
7227                          ++pos;
7228                          --meta_block_remaining_len;
7229                        }
7230                      }
7231                      prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask];
7232                      prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask];
7233                    }
7234                    pos &= 1073741823;
7235                  }
7236                  output.write(ringbuffer, pos & ringbuffer_mask);
7237                }
7238                exports3.BrotliDecompress = BrotliDecompress;
7239                BrotliDictionary.init();
7240              },
7241              {
7242                "./bit_reader": 1,
7243                "./context": 2,
7244                "./dictionary": 6,
7245                "./huffman": 7,
7246                "./prefix": 9,
7247                "./streams": 10,
7248                "./transform": 11
7249              }
7250            ],
7251            4: [
7252              function(require2, module3, exports3) {
7253                var base64 = require2("base64-js");
7254                exports3.init = function() {
7255                  var BrotliDecompressBuffer = require2("./decode").BrotliDecompressBuffer;
7256                  var compressed = base64.toByteArray(
7257                    require2("./dictionary.bin.js")
7258                  );
7259                  return BrotliDecompressBuffer(compressed);
7260                };
7261              },
7262              { "./decode": 3, "./dictionary.bin.js": 5, "base64-js": 8 }
7263            ],
7264            5: [
7265              function(require2, module3, exports3) {
7266                module3.exports = "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";
7267              },
7268              {}
7269            ],
7270            6: [
7271              function(require2, module3, exports3) {
7272                var data = require2("./dictionary-browser");
7273                exports3.init = function() {
7274                  exports3.dictionary = data.init();
7275                };
7276                exports3.offsetsByLength = new Uint32Array([
7277                  0,
7278                  0,
7279                  0,
7280                  0,
7281                  0,
7282                  4096,
7283                  9216,
7284                  21504,
7285                  35840,
7286                  44032,
7287                  53248,
7288                  63488,
7289                  74752,
7290                  87040,
7291                  93696,
7292                  100864,
7293                  104704,
7294                  106752,
7295                  108928,
7296                  113536,
7297                  115968,
7298                  118528,
7299                  119872,
7300                  121280,
7301                  122016
7302                ]);
7303                exports3.sizeBitsByLength = new Uint8Array([
7304                  0,
7305                  0,
7306                  0,
7307                  0,
7308                  10,
7309                  10,
7310                  11,
7311                  11,
7312                  10,
7313                  10,
7314                  10,
7315                  10,
7316                  10,
7317                  9,
7318                  9,
7319                  8,
7320                  7,
7321                  7,
7322                  8,
7323                  7,
7324                  7,
7325                  6,
7326                  6,
7327                  5,
7328                  5
7329                ]);
7330                exports3.minDictionaryWordLength = 4;
7331                exports3.maxDictionaryWordLength = 24;
7332              },
7333              { "./dictionary-browser": 4 }
7334            ],
7335            7: [
7336              function(require2, module3, exports3) {
7337                function HuffmanCode(bits, value) {
7338                  this.bits = bits;
7339                  this.value = value;
7340                }
7341                exports3.HuffmanCode = HuffmanCode;
7342                var MAX_LENGTH = 15;
7343                function GetNextKey(key, len) {
7344                  var step = 1 << len - 1;
7345                  while (key & step) {
7346                    step >>= 1;
7347                  }
7348                  return (key & step - 1) + step;
7349                }
7350                function ReplicateValue(table, i2, step, end, code) {
7351                  do {
7352                    end -= step;
7353                    table[i2 + end] = new HuffmanCode(
7354                      code.bits,
7355                      code.value
7356                    );
7357                  } while (end > 0);
7358                }
7359                function NextTableBitSize(count, len, root_bits) {
7360                  var left = 1 << len - root_bits;
7361                  while (len < MAX_LENGTH) {
7362                    left -= count[len];
7363                    if (left <= 0) break;
7364                    ++len;
7365                    left <<= 1;
7366                  }
7367                  return len - root_bits;
7368                }
7369                exports3.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {
7370                  var start_table = table;
7371                  var code;
7372                  var len;
7373                  var symbol;
7374                  var key;
7375                  var step;
7376                  var low;
7377                  var mask;
7378                  var table_bits;
7379                  var table_size;
7380                  var total_size;
7381                  var sorted;
7382                  var count = new Int32Array(
7383                    MAX_LENGTH + 1
7384                  );
7385                  var offset = new Int32Array(
7386                    MAX_LENGTH + 1
7387                  );
7388                  sorted = new Int32Array(code_lengths_size);
7389                  for (symbol = 0; symbol < code_lengths_size; symbol++) {
7390                    count[code_lengths[symbol]]++;
7391                  }
7392                  offset[1] = 0;
7393                  for (len = 1; len < MAX_LENGTH; len++) {
7394                    offset[len + 1] = offset[len] + count[len];
7395                  }
7396                  for (symbol = 0; symbol < code_lengths_size; symbol++) {
7397                    if (code_lengths[symbol] !== 0) {
7398                      sorted[offset[code_lengths[symbol]]++] = symbol;
7399                    }
7400                  }
7401                  table_bits = root_bits;
7402                  table_size = 1 << table_bits;
7403                  total_size = table_size;
7404                  if (offset[MAX_LENGTH] === 1) {
7405                    for (key = 0; key < total_size; ++key) {
7406                      root_table[table + key] = new HuffmanCode(
7407                        0,
7408                        sorted[0] & 65535
7409                      );
7410                    }
7411                    return total_size;
7412                  }
7413                  key = 0;
7414                  symbol = 0;
7415                  for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {
7416                    for (; count[len] > 0; --count[len]) {
7417                      code = new HuffmanCode(
7418                        len & 255,
7419                        sorted[symbol++] & 65535
7420                      );
7421                      ReplicateValue(
7422                        root_table,
7423                        table + key,
7424                        step,
7425                        table_size,
7426                        code
7427                      );
7428                      key = GetNextKey(key, len);
7429                    }
7430                  }
7431                  mask = total_size - 1;
7432                  low = -1;
7433                  for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {
7434                    for (; count[len] > 0; --count[len]) {
7435                      if ((key & mask) !== low) {
7436                        table += table_size;
7437                        table_bits = NextTableBitSize(
7438                          count,
7439                          len,
7440                          root_bits
7441                        );
7442                        table_size = 1 << table_bits;
7443                        total_size += table_size;
7444                        low = key & mask;
7445                        root_table[start_table + low] = new HuffmanCode(
7446                          table_bits + root_bits & 255,
7447                          table - start_table - low & 65535
7448                        );
7449                      }
7450                      code = new HuffmanCode(
7451                        len - root_bits & 255,
7452                        sorted[symbol++] & 65535
7453                      );
7454                      ReplicateValue(
7455                        root_table,
7456                        table + (key >> root_bits),
7457                        step,
7458                        table_size,
7459                        code
7460                      );
7461                      key = GetNextKey(key, len);
7462                    }
7463                  }
7464                  return total_size;
7465                };
7466              },
7467              {}
7468            ],
7469            8: [
7470              function(require2, module3, exports3) {
7471                "use strict";
7472                exports3.byteLength = byteLength;
7473                exports3.toByteArray = toByteArray;
7474                exports3.fromByteArray = fromByteArray;
7475                var lookup = [];
7476                var revLookup = [];
7477                var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array;
7478                var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
7479                for (var i2 = 0, len = code.length; i2 < len; ++i2) {
7480                  lookup[i2] = code[i2];
7481                  revLookup[code.charCodeAt(i2)] = i2;
7482                }
7483                revLookup["-".charCodeAt(0)] = 62;
7484                revLookup["_".charCodeAt(0)] = 63;
7485                function getLens(b64) {
7486                  var len2 = b64.length;
7487                  if (len2 % 4 > 0) {
7488                    throw new Error(
7489                      "Invalid string. Length must be a multiple of 4"
7490                    );
7491                  }
7492                  var validLen = b64.indexOf("=");
7493                  if (validLen === -1) validLen = len2;
7494                  var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4;
7495                  return [validLen, placeHoldersLen];
7496                }
7497                function byteLength(b64) {
7498                  var lens = getLens(b64);
7499                  var validLen = lens[0];
7500                  var placeHoldersLen = lens[1];
7501                  return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
7502                }
7503                function _byteLength(b64, validLen, placeHoldersLen) {
7504                  return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
7505                }
7506                function toByteArray(b64) {
7507                  var tmp;
7508                  var lens = getLens(b64);
7509                  var validLen = lens[0];
7510                  var placeHoldersLen = lens[1];
7511                  var arr = new Arr(
7512                    _byteLength(b64, validLen, placeHoldersLen)
7513                  );
7514                  var curByte = 0;
7515                  var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen;
7516                  for (var i22 = 0; i22 < len2; i22 += 4) {
7517                    tmp = revLookup[b64.charCodeAt(i22)] << 18 | revLookup[b64.charCodeAt(i22 + 1)] << 12 | revLookup[b64.charCodeAt(i22 + 2)] << 6 | revLookup[b64.charCodeAt(i22 + 3)];
7518                    arr[curByte++] = tmp >> 16 & 255;
7519                    arr[curByte++] = tmp >> 8 & 255;
7520                    arr[curByte++] = tmp & 255;
7521                  }
7522                  if (placeHoldersLen === 2) {
7523                    tmp = revLookup[b64.charCodeAt(i22)] << 2 | revLookup[b64.charCodeAt(i22 + 1)] >> 4;
7524                    arr[curByte++] = tmp & 255;
7525                  }
7526                  if (placeHoldersLen === 1) {
7527                    tmp = revLookup[b64.charCodeAt(i22)] << 10 | revLookup[b64.charCodeAt(i22 + 1)] << 4 | revLookup[b64.charCodeAt(i22 + 2)] >> 2;
7528                    arr[curByte++] = tmp >> 8 & 255;
7529                    arr[curByte++] = tmp & 255;
7530                  }
7531                  return arr;
7532                }
7533                function tripletToBase64(num) {
7534                  return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];
7535                }
7536                function encodeChunk(uint8, start, end) {
7537                  var tmp;
7538                  var output = [];
7539                  for (var i22 = start; i22 < end; i22 += 3) {
7540                    tmp = (uint8[i22] << 16 & 16711680) + (uint8[i22 + 1] << 8 & 65280) + (uint8[i22 + 2] & 255);
7541                    output.push(tripletToBase64(tmp));
7542                  }
7543                  return output.join("");
7544                }
7545                function fromByteArray(uint8) {
7546                  var tmp;
7547                  var len2 = uint8.length;
7548                  var extraBytes = len2 % 3;
7549                  var parts = [];
7550                  var maxChunkLength = 16383;
7551                  for (var i22 = 0, len22 = len2 - extraBytes; i22 < len22; i22 += maxChunkLength) {
7552                    parts.push(
7553                      encodeChunk(
7554                        uint8,
7555                        i22,
7556                        i22 + maxChunkLength > len22 ? len22 : i22 + maxChunkLength
7557                      )
7558                    );
7559                  }
7560                  if (extraBytes === 1) {
7561                    tmp = uint8[len2 - 1];
7562                    parts.push(
7563                      lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "=="
7564                    );
7565                  } else if (extraBytes === 2) {
7566                    tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1];
7567                    parts.push(
7568                      lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "="
7569                    );
7570                  }
7571                  return parts.join("");
7572                }
7573              },
7574              {}
7575            ],
7576            9: [
7577              function(require2, module3, exports3) {
7578                function PrefixCodeRange(offset, nbits) {
7579                  this.offset = offset;
7580                  this.nbits = nbits;
7581                }
7582                exports3.kBlockLengthPrefixCode = [
7583                  new PrefixCodeRange(1, 2),
7584                  new PrefixCodeRange(5, 2),
7585                  new PrefixCodeRange(9, 2),
7586                  new PrefixCodeRange(13, 2),
7587                  new PrefixCodeRange(17, 3),
7588                  new PrefixCodeRange(25, 3),
7589                  new PrefixCodeRange(33, 3),
7590                  new PrefixCodeRange(41, 3),
7591                  new PrefixCodeRange(49, 4),
7592                  new PrefixCodeRange(65, 4),
7593                  new PrefixCodeRange(81, 4),
7594                  new PrefixCodeRange(97, 4),
7595                  new PrefixCodeRange(113, 5),
7596                  new PrefixCodeRange(145, 5),
7597                  new PrefixCodeRange(177, 5),
7598                  new PrefixCodeRange(209, 5),
7599                  new PrefixCodeRange(241, 6),
7600                  new PrefixCodeRange(305, 6),
7601                  new PrefixCodeRange(369, 7),
7602                  new PrefixCodeRange(497, 8),
7603                  new PrefixCodeRange(753, 9),
7604                  new PrefixCodeRange(1265, 10),
7605                  new PrefixCodeRange(2289, 11),
7606                  new PrefixCodeRange(4337, 12),
7607                  new PrefixCodeRange(8433, 13),
7608                  new PrefixCodeRange(16625, 24)
7609                ];
7610                exports3.kInsertLengthPrefixCode = [
7611                  new PrefixCodeRange(0, 0),
7612                  new PrefixCodeRange(1, 0),
7613                  new PrefixCodeRange(2, 0),
7614                  new PrefixCodeRange(3, 0),
7615                  new PrefixCodeRange(4, 0),
7616                  new PrefixCodeRange(5, 0),
7617                  new PrefixCodeRange(6, 1),
7618                  new PrefixCodeRange(8, 1),
7619                  new PrefixCodeRange(10, 2),
7620                  new PrefixCodeRange(14, 2),
7621                  new PrefixCodeRange(18, 3),
7622                  new PrefixCodeRange(26, 3),
7623                  new PrefixCodeRange(34, 4),
7624                  new PrefixCodeRange(50, 4),
7625                  new PrefixCodeRange(66, 5),
7626                  new PrefixCodeRange(98, 5),
7627                  new PrefixCodeRange(130, 6),
7628                  new PrefixCodeRange(194, 7),
7629                  new PrefixCodeRange(322, 8),
7630                  new PrefixCodeRange(578, 9),
7631                  new PrefixCodeRange(1090, 10),
7632                  new PrefixCodeRange(2114, 12),
7633                  new PrefixCodeRange(6210, 14),
7634                  new PrefixCodeRange(22594, 24)
7635                ];
7636                exports3.kCopyLengthPrefixCode = [
7637                  new PrefixCodeRange(2, 0),
7638                  new PrefixCodeRange(3, 0),
7639                  new PrefixCodeRange(4, 0),
7640                  new PrefixCodeRange(5, 0),
7641                  new PrefixCodeRange(6, 0),
7642                  new PrefixCodeRange(7, 0),
7643                  new PrefixCodeRange(8, 0),
7644                  new PrefixCodeRange(9, 0),
7645                  new PrefixCodeRange(10, 1),
7646                  new PrefixCodeRange(12, 1),
7647                  new PrefixCodeRange(14, 2),
7648                  new PrefixCodeRange(18, 2),
7649                  new PrefixCodeRange(22, 3),
7650                  new PrefixCodeRange(30, 3),
7651                  new PrefixCodeRange(38, 4),
7652                  new PrefixCodeRange(54, 4),
7653                  new PrefixCodeRange(70, 5),
7654                  new PrefixCodeRange(102, 5),
7655                  new PrefixCodeRange(134, 6),
7656                  new PrefixCodeRange(198, 7),
7657                  new PrefixCodeRange(326, 8),
7658                  new PrefixCodeRange(582, 9),
7659                  new PrefixCodeRange(1094, 10),
7660                  new PrefixCodeRange(2118, 24)
7661                ];
7662                exports3.kInsertRangeLut = [0, 0, 8, 8, 0, 16, 8, 16, 16];
7663                exports3.kCopyRangeLut = [0, 8, 0, 8, 16, 0, 16, 8, 16];
7664              },
7665              {}
7666            ],
7667            10: [
7668              function(require2, module3, exports3) {
7669                function BrotliInput(buffer) {
7670                  this.buffer = buffer;
7671                  this.pos = 0;
7672                }
7673                BrotliInput.prototype.read = function(buf, i2, count) {
7674                  if (this.pos + count > this.buffer.length) {
7675                    count = this.buffer.length - this.pos;
7676                  }
7677                  for (var p3 = 0; p3 < count; p3++)
7678                    buf[i2 + p3] = this.buffer[this.pos + p3];
7679                  this.pos += count;
7680                  return count;
7681                };
7682                exports3.BrotliInput = BrotliInput;
7683                function BrotliOutput(buf) {
7684                  this.buffer = buf;
7685                  this.pos = 0;
7686                }
7687                BrotliOutput.prototype.write = function(buf, count) {
7688                  if (this.pos + count > this.buffer.length)
7689                    throw new Error(
7690                      "Output buffer is not large enough"
7691                    );
7692                  this.buffer.set(buf.subarray(0, count), this.pos);
7693                  this.pos += count;
7694                  return count;
7695                };
7696                exports3.BrotliOutput = BrotliOutput;
7697              },
7698              {}
7699            ],
7700            11: [
7701              function(require2, module3, exports3) {
7702                var BrotliDictionary = require2("./dictionary");
7703                var kIdentity = 0;
7704                var kOmitLast1 = 1;
7705                var kOmitLast2 = 2;
7706                var kOmitLast3 = 3;
7707                var kOmitLast4 = 4;
7708                var kOmitLast5 = 5;
7709                var kOmitLast6 = 6;
7710                var kOmitLast7 = 7;
7711                var kOmitLast8 = 8;
7712                var kOmitLast9 = 9;
7713                var kUppercaseFirst = 10;
7714                var kUppercaseAll = 11;
7715                var kOmitFirst1 = 12;
7716                var kOmitFirst2 = 13;
7717                var kOmitFirst3 = 14;
7718                var kOmitFirst4 = 15;
7719                var kOmitFirst5 = 16;
7720                var kOmitFirst6 = 17;
7721                var kOmitFirst7 = 18;
7722                var kOmitFirst8 = 19;
7723                var kOmitFirst9 = 20;
7724                function Transform(prefix, transform, suffix) {
7725                  this.prefix = new Uint8Array(prefix.length);
7726                  this.transform = transform;
7727                  this.suffix = new Uint8Array(suffix.length);
7728                  for (var i2 = 0; i2 < prefix.length; i2++)
7729                    this.prefix[i2] = prefix.charCodeAt(i2);
7730                  for (var i2 = 0; i2 < suffix.length; i2++)
7731                    this.suffix[i2] = suffix.charCodeAt(i2);
7732                }
7733                var kTransforms = [
7734                  new Transform("", kIdentity, ""),
7735                  new Transform("", kIdentity, " "),
7736                  new Transform(" ", kIdentity, " "),
7737                  new Transform("", kOmitFirst1, ""),
7738                  new Transform("", kUppercaseFirst, " "),
7739                  new Transform("", kIdentity, " the "),
7740                  new Transform(" ", kIdentity, ""),
7741                  new Transform("s ", kIdentity, " "),
7742                  new Transform("", kIdentity, " of "),
7743                  new Transform("", kUppercaseFirst, ""),
7744                  new Transform("", kIdentity, " and "),
7745                  new Transform("", kOmitFirst2, ""),
7746                  new Transform("", kOmitLast1, ""),
7747                  new Transform(", ", kIdentity, " "),
7748                  new Transform("", kIdentity, ", "),
7749                  new Transform(" ", kUppercaseFirst, " "),
7750                  new Transform("", kIdentity, " in "),
7751                  new Transform("", kIdentity, " to "),
7752                  new Transform("e ", kIdentity, " "),
7753                  new Transform("", kIdentity, '"'),
7754                  new Transform("", kIdentity, "."),
7755                  new Transform("", kIdentity, '">'),
7756                  new Transform("", kIdentity, "\n"),
7757                  new Transform("", kOmitLast3, ""),
7758                  new Transform("", kIdentity, "]"),
7759                  new Transform("", kIdentity, " for "),
7760                  new Transform("", kOmitFirst3, ""),
7761                  new Transform("", kOmitLast2, ""),
7762                  new Transform("", kIdentity, " a "),
7763                  new Transform("", kIdentity, " that "),
7764                  new Transform(" ", kUppercaseFirst, ""),
7765                  new Transform("", kIdentity, ". "),
7766                  new Transform(".", kIdentity, ""),
7767                  new Transform(" ", kIdentity, ", "),
7768                  new Transform("", kOmitFirst4, ""),
7769                  new Transform("", kIdentity, " with "),
7770                  new Transform("", kIdentity, "'"),
7771                  new Transform("", kIdentity, " from "),
7772                  new Transform("", kIdentity, " by "),
7773                  new Transform("", kOmitFirst5, ""),
7774                  new Transform("", kOmitFirst6, ""),
7775                  new Transform(" the ", kIdentity, ""),
7776                  new Transform("", kOmitLast4, ""),
7777                  new Transform("", kIdentity, ". The "),
7778                  new Transform("", kUppercaseAll, ""),
7779                  new Transform("", kIdentity, " on "),
7780                  new Transform("", kIdentity, " as "),
7781                  new Transform("", kIdentity, " is "),
7782                  new Transform("", kOmitLast7, ""),
7783                  new Transform("", kOmitLast1, "ing "),
7784                  new Transform("", kIdentity, "\n    "),
7785                  new Transform("", kIdentity, ":"),
7786                  new Transform(" ", kIdentity, ". "),
7787                  new Transform("", kIdentity, "ed "),
7788                  new Transform("", kOmitFirst9, ""),
7789                  new Transform("", kOmitFirst7, ""),
7790                  new Transform("", kOmitLast6, ""),
7791                  new Transform("", kIdentity, "("),
7792                  new Transform("", kUppercaseFirst, ", "),
7793                  new Transform("", kOmitLast8, ""),
7794                  new Transform("", kIdentity, " at "),
7795                  new Transform("", kIdentity, "ly "),
7796                  new Transform(" the ", kIdentity, " of "),
7797                  new Transform("", kOmitLast5, ""),
7798                  new Transform("", kOmitLast9, ""),
7799                  new Transform(" ", kUppercaseFirst, ", "),
7800                  new Transform("", kUppercaseFirst, '"'),
7801                  new Transform(".", kIdentity, "("),
7802                  new Transform("", kUppercaseAll, " "),
7803                  new Transform("", kUppercaseFirst, '">'),
7804                  new Transform("", kIdentity, '="'),
7805                  new Transform(" ", kIdentity, "."),
7806                  new Transform(".com/", kIdentity, ""),
7807                  new Transform(" the ", kIdentity, " of the "),
7808                  new Transform("", kUppercaseFirst, "'"),
7809                  new Transform("", kIdentity, ". This "),
7810                  new Transform("", kIdentity, ","),
7811                  new Transform(".", kIdentity, " "),
7812                  new Transform("", kUppercaseFirst, "("),
7813                  new Transform("", kUppercaseFirst, "."),
7814                  new Transform("", kIdentity, " not "),
7815                  new Transform(" ", kIdentity, '="'),
7816                  new Transform("", kIdentity, "er "),
7817                  new Transform(" ", kUppercaseAll, " "),
7818                  new Transform("", kIdentity, "al "),
7819                  new Transform(" ", kUppercaseAll, ""),
7820                  new Transform("", kIdentity, "='"),
7821                  new Transform("", kUppercaseAll, '"'),
7822                  new Transform("", kUppercaseFirst, ". "),
7823                  new Transform(" ", kIdentity, "("),
7824                  new Transform("", kIdentity, "ful "),
7825                  new Transform(" ", kUppercaseFirst, ". "),
7826                  new Transform("", kIdentity, "ive "),
7827                  new Transform("", kIdentity, "less "),
7828                  new Transform("", kUppercaseAll, "'"),
7829                  new Transform("", kIdentity, "est "),
7830                  new Transform(" ", kUppercaseFirst, "."),
7831                  new Transform("", kUppercaseAll, '">'),
7832                  new Transform(" ", kIdentity, "='"),
7833                  new Transform("", kUppercaseFirst, ","),
7834                  new Transform("", kIdentity, "ize "),
7835                  new Transform("", kUppercaseAll, "."),
7836                  new Transform("\xC2\xA0", kIdentity, ""),
7837                  new Transform(" ", kIdentity, ","),
7838                  new Transform("", kUppercaseFirst, '="'),
7839                  new Transform("", kUppercaseAll, '="'),
7840                  new Transform("", kIdentity, "ous "),
7841                  new Transform("", kUppercaseAll, ", "),
7842                  new Transform("", kUppercaseFirst, "='"),
7843                  new Transform(" ", kUppercaseFirst, ","),
7844                  new Transform(" ", kUppercaseAll, '="'),
7845                  new Transform(" ", kUppercaseAll, ", "),
7846                  new Transform("", kUppercaseAll, ","),
7847                  new Transform("", kUppercaseAll, "("),
7848                  new Transform("", kUppercaseAll, ". "),
7849                  new Transform(" ", kUppercaseAll, "."),
7850                  new Transform("", kUppercaseAll, "='"),
7851                  new Transform(" ", kUppercaseAll, ". "),
7852                  new Transform(" ", kUppercaseFirst, '="'),
7853                  new Transform(" ", kUppercaseAll, "='"),
7854                  new Transform(" ", kUppercaseFirst, "='")
7855                ];
7856                exports3.kTransforms = kTransforms;
7857                exports3.kNumTransforms = kTransforms.length;
7858                function ToUpperCase(p3, i2) {
7859                  if (p3[i2] < 192) {
7860                    if (p3[i2] >= 97 && p3[i2] <= 122) {
7861                      p3[i2] ^= 32;
7862                    }
7863                    return 1;
7864                  }
7865                  if (p3[i2] < 224) {
7866                    p3[i2 + 1] ^= 32;
7867                    return 2;
7868                  }
7869                  p3[i2 + 2] ^= 5;
7870                  return 3;
7871                }
7872                exports3.transformDictionaryWord = function(dst, idx, word, len, transform) {
7873                  var prefix = kTransforms[transform].prefix;
7874                  var suffix = kTransforms[transform].suffix;
7875                  var t3 = kTransforms[transform].transform;
7876                  var skip = t3 < kOmitFirst1 ? 0 : t3 - (kOmitFirst1 - 1);
7877                  var i2 = 0;
7878                  var start_idx = idx;
7879                  var uppercase;
7880                  if (skip > len) {
7881                    skip = len;
7882                  }
7883                  var prefix_pos = 0;
7884                  while (prefix_pos < prefix.length) {
7885                    dst[idx++] = prefix[prefix_pos++];
7886                  }
7887                  word += skip;
7888                  len -= skip;
7889                  if (t3 <= kOmitLast9) {
7890                    len -= t3;
7891                  }
7892                  for (i2 = 0; i2 < len; i2++) {
7893                    dst[idx++] = BrotliDictionary.dictionary[word + i2];
7894                  }
7895                  uppercase = idx - len;
7896                  if (t3 === kUppercaseFirst) {
7897                    ToUpperCase(dst, uppercase);
7898                  } else if (t3 === kUppercaseAll) {
7899                    while (len > 0) {
7900                      var step = ToUpperCase(dst, uppercase);
7901                      uppercase += step;
7902                      len -= step;
7903                    }
7904                  }
7905                  var suffix_pos = 0;
7906                  while (suffix_pos < suffix.length) {
7907                    dst[idx++] = suffix[suffix_pos++];
7908                  }
7909                  return idx - start_idx;
7910                };
7911              },
7912              { "./dictionary": 6 }
7913            ],
7914            12: [
7915              function(require2, module3, exports3) {
7916                module3.exports = require2("./dec/decode").BrotliDecompressBuffer;
7917              },
7918              { "./dec/decode": 3 }
7919            ]
7920          },
7921          {},
7922          [12]
7923        )(12);
7924      });
7925    }
7926  });
7927  var unbrotli_default = require_unbrotli();
7928  
7929  // packages/global-styles-ui/build-module/font-library/lib/inflate.js
7930  var __getOwnPropNames3 = Object.getOwnPropertyNames;
7931  var __require3 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, {
7932    get: (a2, b2) => (typeof __require !== "undefined" ? __require : a2)[b2]
7933  }) : x2)(function(x2) {
7934    if (typeof __require !== "undefined") return __require.apply(this, arguments);
7935    throw Error('Dynamic require of "' + x2 + '" is not supported');
7936  });
7937  var __commonJS3 = (cb, mod) => function __require22() {
7938    return mod || (0, cb[__getOwnPropNames3(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
7939  };
7940  var require_inflate = __commonJS3({
7941    "packages/global-styles-ui/src/font-library/lib/inflate.js"(exports, module) {
7942      (function(f2) {
7943        if (typeof exports === "object" && typeof module !== "undefined") {
7944          module.exports = f2();
7945        } else if (typeof define === "function" && define.amd) {
7946          define([], f2);
7947        } else {
7948          var g2;
7949          if (typeof window !== "undefined") {
7950            g2 = window;
7951          } else if (typeof global !== "undefined") {
7952            g2 = global;
7953          } else if (typeof self !== "undefined") {
7954            g2 = self;
7955          } else {
7956            g2 = this;
7957          }
7958          g2.pako = f2();
7959        }
7960      })(function() {
7961        var define2, module2, exports2;
7962        return (/* @__PURE__ */ (function() {
7963          function r3(e2, n2, t3) {
7964            function o3(i22, f2) {
7965              if (!n2[i22]) {
7966                if (!e2[i22]) {
7967                  var c2 = "function" == typeof __require3 && __require3;
7968                  if (!f2 && c2) return c2(i22, true);
7969                  if (u2) return u2(i22, true);
7970                  var a2 = new Error("Cannot find module '" + i22 + "'");
7971                  throw a2.code = "MODULE_NOT_FOUND", a2;
7972                }
7973                var p3 = n2[i22] = { exports: {} };
7974                e2[i22][0].call(
7975                  p3.exports,
7976                  function(r22) {
7977                    var n22 = e2[i22][1][r22];
7978                    return o3(n22 || r22);
7979                  },
7980                  p3,
7981                  p3.exports,
7982                  r3,
7983                  e2,
7984                  n2,
7985                  t3
7986                );
7987              }
7988              return n2[i22].exports;
7989            }
7990            for (var u2 = "function" == typeof __require3 && __require3, i2 = 0; i2 < t3.length; i2++)
7991              o3(t3[i2]);
7992            return o3;
7993          }
7994          return r3;
7995        })())(
7996          {
7997            1: [
7998              function(require2, module3, exports3) {
7999                "use strict";
8000                var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined";
8001                function _has(obj, key) {
8002                  return Object.prototype.hasOwnProperty.call(obj, key);
8003                }
8004                exports3.assign = function(obj) {
8005                  var sources = Array.prototype.slice.call(
8006                    arguments,
8007                    1
8008                  );
8009                  while (sources.length) {
8010                    var source = sources.shift();
8011                    if (!source) {
8012                      continue;
8013                    }
8014                    if (typeof source !== "object") {
8015                      throw new TypeError(
8016                        source + "must be non-object"
8017                      );
8018                    }
8019                    for (var p3 in source) {
8020                      if (_has(source, p3)) {
8021                        obj[p3] = source[p3];
8022                      }
8023                    }
8024                  }
8025                  return obj;
8026                };
8027                exports3.shrinkBuf = function(buf, size) {
8028                  if (buf.length === size) {
8029                    return buf;
8030                  }
8031                  if (buf.subarray) {
8032                    return buf.subarray(0, size);
8033                  }
8034                  buf.length = size;
8035                  return buf;
8036                };
8037                var fnTyped = {
8038                  arraySet: function(dest, src, src_offs, len, dest_offs) {
8039                    if (src.subarray && dest.subarray) {
8040                      dest.set(
8041                        src.subarray(src_offs, src_offs + len),
8042                        dest_offs
8043                      );
8044                      return;
8045                    }
8046                    for (var i2 = 0; i2 < len; i2++) {
8047                      dest[dest_offs + i2] = src[src_offs + i2];
8048                    }
8049                  },
8050                  // Join array of chunks to single array.
8051                  flattenChunks: function(chunks) {
8052                    var i2, l2, len, pos, chunk, result;
8053                    len = 0;
8054                    for (i2 = 0, l2 = chunks.length; i2 < l2; i2++) {
8055                      len += chunks[i2].length;
8056                    }
8057                    result = new Uint8Array(len);
8058                    pos = 0;
8059                    for (i2 = 0, l2 = chunks.length; i2 < l2; i2++) {
8060                      chunk = chunks[i2];
8061                      result.set(chunk, pos);
8062                      pos += chunk.length;
8063                    }
8064                    return result;
8065                  }
8066                };
8067                var fnUntyped = {
8068                  arraySet: function(dest, src, src_offs, len, dest_offs) {
8069                    for (var i2 = 0; i2 < len; i2++) {
8070                      dest[dest_offs + i2] = src[src_offs + i2];
8071                    }
8072                  },
8073                  // Join array of chunks to single array.
8074                  flattenChunks: function(chunks) {
8075                    return [].concat.apply([], chunks);
8076                  }
8077                };
8078                exports3.setTyped = function(on) {
8079                  if (on) {
8080                    exports3.Buf8 = Uint8Array;
8081                    exports3.Buf16 = Uint16Array;
8082                    exports3.Buf32 = Int32Array;
8083                    exports3.assign(exports3, fnTyped);
8084                  } else {
8085                    exports3.Buf8 = Array;
8086                    exports3.Buf16 = Array;
8087                    exports3.Buf32 = Array;
8088                    exports3.assign(exports3, fnUntyped);
8089                  }
8090                };
8091                exports3.setTyped(TYPED_OK);
8092              },
8093              {}
8094            ],
8095            2: [
8096              function(require2, module3, exports3) {
8097                "use strict";
8098                var utils = require2("./common");
8099                var STR_APPLY_OK = true;
8100                var STR_APPLY_UIA_OK = true;
8101                try {
8102                  String.fromCharCode.apply(null, [0]);
8103                } catch (__42) {
8104                  STR_APPLY_OK = false;
8105                }
8106                try {
8107                  String.fromCharCode.apply(null, new Uint8Array(1));
8108                } catch (__42) {
8109                  STR_APPLY_UIA_OK = false;
8110                }
8111                var _utf8len = new utils.Buf8(256);
8112                for (var q = 0; q < 256; q++) {
8113                  _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1;
8114                }
8115                _utf8len[254] = _utf8len[254] = 1;
8116                exports3.string2buf = function(str) {
8117                  var buf, c2, c22, m_pos, i2, str_len = str.length, buf_len = 0;
8118                  for (m_pos = 0; m_pos < str_len; m_pos++) {
8119                    c2 = str.charCodeAt(m_pos);
8120                    if ((c2 & 64512) === 55296 && m_pos + 1 < str_len) {
8121                      c22 = str.charCodeAt(m_pos + 1);
8122                      if ((c22 & 64512) === 56320) {
8123                        c2 = 65536 + (c2 - 55296 << 10) + (c22 - 56320);
8124                        m_pos++;
8125                      }
8126                    }
8127                    buf_len += c2 < 128 ? 1 : c2 < 2048 ? 2 : c2 < 65536 ? 3 : 4;
8128                  }
8129                  buf = new utils.Buf8(buf_len);
8130                  for (i2 = 0, m_pos = 0; i2 < buf_len; m_pos++) {
8131                    c2 = str.charCodeAt(m_pos);
8132                    if ((c2 & 64512) === 55296 && m_pos + 1 < str_len) {
8133                      c22 = str.charCodeAt(m_pos + 1);
8134                      if ((c22 & 64512) === 56320) {
8135                        c2 = 65536 + (c2 - 55296 << 10) + (c22 - 56320);
8136                        m_pos++;
8137                      }
8138                    }
8139                    if (c2 < 128) {
8140                      buf[i2++] = c2;
8141                    } else if (c2 < 2048) {
8142                      buf[i2++] = 192 | c2 >>> 6;
8143                      buf[i2++] = 128 | c2 & 63;
8144                    } else if (c2 < 65536) {
8145                      buf[i2++] = 224 | c2 >>> 12;
8146                      buf[i2++] = 128 | c2 >>> 6 & 63;
8147                      buf[i2++] = 128 | c2 & 63;
8148                    } else {
8149                      buf[i2++] = 240 | c2 >>> 18;
8150                      buf[i2++] = 128 | c2 >>> 12 & 63;
8151                      buf[i2++] = 128 | c2 >>> 6 & 63;
8152                      buf[i2++] = 128 | c2 & 63;
8153                    }
8154                  }
8155                  return buf;
8156                };
8157                function buf2binstring(buf, len) {
8158                  if (len < 65534) {
8159                    if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) {
8160                      return String.fromCharCode.apply(
8161                        null,
8162                        utils.shrinkBuf(buf, len)
8163                      );
8164                    }
8165                  }
8166                  var result = "";
8167                  for (var i2 = 0; i2 < len; i2++) {
8168                    result += String.fromCharCode(buf[i2]);
8169                  }
8170                  return result;
8171                }
8172                exports3.buf2binstring = function(buf) {
8173                  return buf2binstring(buf, buf.length);
8174                };
8175                exports3.binstring2buf = function(str) {
8176                  var buf = new utils.Buf8(str.length);
8177                  for (var i2 = 0, len = buf.length; i2 < len; i2++) {
8178                    buf[i2] = str.charCodeAt(i2);
8179                  }
8180                  return buf;
8181                };
8182                exports3.buf2string = function(buf, max) {
8183                  var i2, out, c2, c_len;
8184                  var len = max || buf.length;
8185                  var utf16buf = new Array(len * 2);
8186                  for (out = 0, i2 = 0; i2 < len; ) {
8187                    c2 = buf[i2++];
8188                    if (c2 < 128) {
8189                      utf16buf[out++] = c2;
8190                      continue;
8191                    }
8192                    c_len = _utf8len[c2];
8193                    if (c_len > 4) {
8194                      utf16buf[out++] = 65533;
8195                      i2 += c_len - 1;
8196                      continue;
8197                    }
8198                    c2 &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7;
8199                    while (c_len > 1 && i2 < len) {
8200                      c2 = c2 << 6 | buf[i2++] & 63;
8201                      c_len--;
8202                    }
8203                    if (c_len > 1) {
8204                      utf16buf[out++] = 65533;
8205                      continue;
8206                    }
8207                    if (c2 < 65536) {
8208                      utf16buf[out++] = c2;
8209                    } else {
8210                      c2 -= 65536;
8211                      utf16buf[out++] = 55296 | c2 >> 10 & 1023;
8212                      utf16buf[out++] = 56320 | c2 & 1023;
8213                    }
8214                  }
8215                  return buf2binstring(utf16buf, out);
8216                };
8217                exports3.utf8border = function(buf, max) {
8218                  var pos;
8219                  max = max || buf.length;
8220                  if (max > buf.length) {
8221                    max = buf.length;
8222                  }
8223                  pos = max - 1;
8224                  while (pos >= 0 && (buf[pos] & 192) === 128) {
8225                    pos--;
8226                  }
8227                  if (pos < 0) {
8228                    return max;
8229                  }
8230                  if (pos === 0) {
8231                    return max;
8232                  }
8233                  return pos + _utf8len[buf[pos]] > max ? pos : max;
8234                };
8235              },
8236              { "./common": 1 }
8237            ],
8238            3: [
8239              function(require2, module3, exports3) {
8240                "use strict";
8241                function adler32(adler, buf, len, pos) {
8242                  var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n2 = 0;
8243                  while (len !== 0) {
8244                    n2 = len > 2e3 ? 2e3 : len;
8245                    len -= n2;
8246                    do {
8247                      s1 = s1 + buf[pos++] | 0;
8248                      s2 = s2 + s1 | 0;
8249                    } while (--n2);
8250                    s1 %= 65521;
8251                    s2 %= 65521;
8252                  }
8253                  return s1 | s2 << 16 | 0;
8254                }
8255                module3.exports = adler32;
8256              },
8257              {}
8258            ],
8259            4: [
8260              function(require2, module3, exports3) {
8261                "use strict";
8262                module3.exports = {
8263                  /* Allowed flush values; see deflate() and inflate() below for details */
8264                  Z_NO_FLUSH: 0,
8265                  Z_PARTIAL_FLUSH: 1,
8266                  Z_SYNC_FLUSH: 2,
8267                  Z_FULL_FLUSH: 3,
8268                  Z_FINISH: 4,
8269                  Z_BLOCK: 5,
8270                  Z_TREES: 6,
8271                  /* Return codes for the compression/decompression functions. Negative values
8272                   * are errors, positive values are used for special but normal events.
8273                   */
8274                  Z_OK: 0,
8275                  Z_STREAM_END: 1,
8276                  Z_NEED_DICT: 2,
8277                  Z_ERRNO: -1,
8278                  Z_STREAM_ERROR: -2,
8279                  Z_DATA_ERROR: -3,
8280                  //Z_MEM_ERROR:     -4,
8281                  Z_BUF_ERROR: -5,
8282                  //Z_VERSION_ERROR: -6,
8283                  /* compression levels */
8284                  Z_NO_COMPRESSION: 0,
8285                  Z_BEST_SPEED: 1,
8286                  Z_BEST_COMPRESSION: 9,
8287                  Z_DEFAULT_COMPRESSION: -1,
8288                  Z_FILTERED: 1,
8289                  Z_HUFFMAN_ONLY: 2,
8290                  Z_RLE: 3,
8291                  Z_FIXED: 4,
8292                  Z_DEFAULT_STRATEGY: 0,
8293                  /* Possible values of the data_type field (though see inflate()) */
8294                  Z_BINARY: 0,
8295                  Z_TEXT: 1,
8296                  //Z_ASCII:                1, // = Z_TEXT (deprecated)
8297                  Z_UNKNOWN: 2,
8298                  /* The deflate compression method */
8299                  Z_DEFLATED: 8
8300                  //Z_NULL:                 null // Use -1 or null inline, depending on var type
8301                };
8302              },
8303              {}
8304            ],
8305            5: [
8306              function(require2, module3, exports3) {
8307                "use strict";
8308                function makeTable() {
8309                  var c2, table = [];
8310                  for (var n2 = 0; n2 < 256; n2++) {
8311                    c2 = n2;
8312                    for (var k2 = 0; k2 < 8; k2++) {
8313                      c2 = c2 & 1 ? 3988292384 ^ c2 >>> 1 : c2 >>> 1;
8314                    }
8315                    table[n2] = c2;
8316                  }
8317                  return table;
8318                }
8319                var crcTable = makeTable();
8320                function crc32(crc, buf, len, pos) {
8321                  var t3 = crcTable, end = pos + len;
8322                  crc ^= -1;
8323                  for (var i2 = pos; i2 < end; i2++) {
8324                    crc = crc >>> 8 ^ t3[(crc ^ buf[i2]) & 255];
8325                  }
8326                  return crc ^ -1;
8327                }
8328                module3.exports = crc32;
8329              },
8330              {}
8331            ],
8332            6: [
8333              function(require2, module3, exports3) {
8334                "use strict";
8335                function GZheader() {
8336                  this.text = 0;
8337                  this.time = 0;
8338                  this.xflags = 0;
8339                  this.os = 0;
8340                  this.extra = null;
8341                  this.extra_len = 0;
8342                  this.name = "";
8343                  this.comment = "";
8344                  this.hcrc = 0;
8345                  this.done = false;
8346                }
8347                module3.exports = GZheader;
8348              },
8349              {}
8350            ],
8351            7: [
8352              function(require2, module3, exports3) {
8353                "use strict";
8354                var BAD = 30;
8355                var TYPE = 12;
8356                module3.exports = function inflate_fast(strm, start) {
8357                  var state;
8358                  var _in;
8359                  var last;
8360                  var _out;
8361                  var beg;
8362                  var end;
8363                  var dmax;
8364                  var wsize;
8365                  var whave;
8366                  var wnext;
8367                  var s_window;
8368                  var hold;
8369                  var bits;
8370                  var lcode;
8371                  var dcode;
8372                  var lmask;
8373                  var dmask;
8374                  var here;
8375                  var op;
8376                  var len;
8377                  var dist;
8378                  var from;
8379                  var from_source;
8380                  var input, output;
8381                  state = strm.state;
8382                  _in = strm.next_in;
8383                  input = strm.input;
8384                  last = _in + (strm.avail_in - 5);
8385                  _out = strm.next_out;
8386                  output = strm.output;
8387                  beg = _out - (start - strm.avail_out);
8388                  end = _out + (strm.avail_out - 257);
8389                  dmax = state.dmax;
8390                  wsize = state.wsize;
8391                  whave = state.whave;
8392                  wnext = state.wnext;
8393                  s_window = state.window;
8394                  hold = state.hold;
8395                  bits = state.bits;
8396                  lcode = state.lencode;
8397                  dcode = state.distcode;
8398                  lmask = (1 << state.lenbits) - 1;
8399                  dmask = (1 << state.distbits) - 1;
8400                  top: do {
8401                    if (bits < 15) {
8402                      hold += input[_in++] << bits;
8403                      bits += 8;
8404                      hold += input[_in++] << bits;
8405                      bits += 8;
8406                    }
8407                    here = lcode[hold & lmask];
8408                    dolen: for (; ; ) {
8409                      op = here >>> 24;
8410                      hold >>>= op;
8411                      bits -= op;
8412                      op = here >>> 16 & 255;
8413                      if (op === 0) {
8414                        output[_out++] = here & 65535;
8415                      } else if (op & 16) {
8416                        len = here & 65535;
8417                        op &= 15;
8418                        if (op) {
8419                          if (bits < op) {
8420                            hold += input[_in++] << bits;
8421                            bits += 8;
8422                          }
8423                          len += hold & (1 << op) - 1;
8424                          hold >>>= op;
8425                          bits -= op;
8426                        }
8427                        if (bits < 15) {
8428                          hold += input[_in++] << bits;
8429                          bits += 8;
8430                          hold += input[_in++] << bits;
8431                          bits += 8;
8432                        }
8433                        here = dcode[hold & dmask];
8434                        dodist: for (; ; ) {
8435                          op = here >>> 24;
8436                          hold >>>= op;
8437                          bits -= op;
8438                          op = here >>> 16 & 255;
8439                          if (op & 16) {
8440                            dist = here & 65535;
8441                            op &= 15;
8442                            if (bits < op) {
8443                              hold += input[_in++] << bits;
8444                              bits += 8;
8445                              if (bits < op) {
8446                                hold += input[_in++] << bits;
8447                                bits += 8;
8448                              }
8449                            }
8450                            dist += hold & (1 << op) - 1;
8451                            if (dist > dmax) {
8452                              strm.msg = "invalid distance too far back";
8453                              state.mode = BAD;
8454                              break top;
8455                            }
8456                            hold >>>= op;
8457                            bits -= op;
8458                            op = _out - beg;
8459                            if (dist > op) {
8460                              op = dist - op;
8461                              if (op > whave) {
8462                                if (state.sane) {
8463                                  strm.msg = "invalid distance too far back";
8464                                  state.mode = BAD;
8465                                  break top;
8466                                }
8467                              }
8468                              from = 0;
8469                              from_source = s_window;
8470                              if (wnext === 0) {
8471                                from += wsize - op;
8472                                if (op < len) {
8473                                  len -= op;
8474                                  do {
8475                                    output[_out++] = s_window[from++];
8476                                  } while (--op);
8477                                  from = _out - dist;
8478                                  from_source = output;
8479                                }
8480                              } else if (wnext < op) {
8481                                from += wsize + wnext - op;
8482                                op -= wnext;
8483                                if (op < len) {
8484                                  len -= op;
8485                                  do {
8486                                    output[_out++] = s_window[from++];
8487                                  } while (--op);
8488                                  from = 0;
8489                                  if (wnext < len) {
8490                                    op = wnext;
8491                                    len -= op;
8492                                    do {
8493                                      output[_out++] = s_window[from++];
8494                                    } while (--op);
8495                                    from = _out - dist;
8496                                    from_source = output;
8497                                  }
8498                                }
8499                              } else {
8500                                from += wnext - op;
8501                                if (op < len) {
8502                                  len -= op;
8503                                  do {
8504                                    output[_out++] = s_window[from++];
8505                                  } while (--op);
8506                                  from = _out - dist;
8507                                  from_source = output;
8508                                }
8509                              }
8510                              while (len > 2) {
8511                                output[_out++] = from_source[from++];
8512                                output[_out++] = from_source[from++];
8513                                output[_out++] = from_source[from++];
8514                                len -= 3;
8515                              }
8516                              if (len) {
8517                                output[_out++] = from_source[from++];
8518                                if (len > 1) {
8519                                  output[_out++] = from_source[from++];
8520                                }
8521                              }
8522                            } else {
8523                              from = _out - dist;
8524                              do {
8525                                output[_out++] = output[from++];
8526                                output[_out++] = output[from++];
8527                                output[_out++] = output[from++];
8528                                len -= 3;
8529                              } while (len > 2);
8530                              if (len) {
8531                                output[_out++] = output[from++];
8532                                if (len > 1) {
8533                                  output[_out++] = output[from++];
8534                                }
8535                              }
8536                            }
8537                          } else if ((op & 64) === 0) {
8538                            here = dcode[(here & 65535) + (hold & (1 << op) - 1)];
8539                            continue dodist;
8540                          } else {
8541                            strm.msg = "invalid distance code";
8542                            state.mode = BAD;
8543                            break top;
8544                          }
8545                          break;
8546                        }
8547                      } else if ((op & 64) === 0) {
8548                        here = lcode[(here & 65535) + (hold & (1 << op) - 1)];
8549                        continue dolen;
8550                      } else if (op & 32) {
8551                        state.mode = TYPE;
8552                        break top;
8553                      } else {
8554                        strm.msg = "invalid literal/length code";
8555                        state.mode = BAD;
8556                        break top;
8557                      }
8558                      break;
8559                    }
8560                  } while (_in < last && _out < end);
8561                  len = bits >> 3;
8562                  _in -= len;
8563                  bits -= len << 3;
8564                  hold &= (1 << bits) - 1;
8565                  strm.next_in = _in;
8566                  strm.next_out = _out;
8567                  strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last);
8568                  strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);
8569                  state.hold = hold;
8570                  state.bits = bits;
8571                  return;
8572                };
8573              },
8574              {}
8575            ],
8576            8: [
8577              function(require2, module3, exports3) {
8578                "use strict";
8579                var utils = require2("../utils/common");
8580                var adler32 = require2("./adler32");
8581                var crc32 = require2("./crc32");
8582                var inflate_fast = require2("./inffast");
8583                var inflate_table = require2("./inftrees");
8584                var CODES = 0;
8585                var LENS = 1;
8586                var DISTS = 2;
8587                var Z_FINISH = 4;
8588                var Z_BLOCK = 5;
8589                var Z_TREES = 6;
8590                var Z_OK = 0;
8591                var Z_STREAM_END = 1;
8592                var Z_NEED_DICT = 2;
8593                var Z_STREAM_ERROR = -2;
8594                var Z_DATA_ERROR = -3;
8595                var Z_MEM_ERROR = -4;
8596                var Z_BUF_ERROR = -5;
8597                var Z_DEFLATED = 8;
8598                var HEAD = 1;
8599                var FLAGS = 2;
8600                var TIME = 3;
8601                var OS = 4;
8602                var EXLEN = 5;
8603                var EXTRA = 6;
8604                var NAME = 7;
8605                var COMMENT = 8;
8606                var HCRC = 9;
8607                var DICTID = 10;
8608                var DICT = 11;
8609                var TYPE = 12;
8610                var TYPEDO = 13;
8611                var STORED = 14;
8612                var COPY_ = 15;
8613                var COPY = 16;
8614                var TABLE = 17;
8615                var LENLENS = 18;
8616                var CODELENS = 19;
8617                var LEN_ = 20;
8618                var LEN = 21;
8619                var LENEXT = 22;
8620                var DIST = 23;
8621                var DISTEXT = 24;
8622                var MATCH = 25;
8623                var LIT = 26;
8624                var CHECK = 27;
8625                var LENGTH = 28;
8626                var DONE = 29;
8627                var BAD = 30;
8628                var MEM = 31;
8629                var SYNC = 32;
8630                var ENOUGH_LENS = 852;
8631                var ENOUGH_DISTS = 592;
8632                var MAX_WBITS = 15;
8633                var DEF_WBITS = MAX_WBITS;
8634                function zswap32(q) {
8635                  return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24);
8636                }
8637                function InflateState() {
8638                  this.mode = 0;
8639                  this.last = false;
8640                  this.wrap = 0;
8641                  this.havedict = false;
8642                  this.flags = 0;
8643                  this.dmax = 0;
8644                  this.check = 0;
8645                  this.total = 0;
8646                  this.head = null;
8647                  this.wbits = 0;
8648                  this.wsize = 0;
8649                  this.whave = 0;
8650                  this.wnext = 0;
8651                  this.window = null;
8652                  this.hold = 0;
8653                  this.bits = 0;
8654                  this.length = 0;
8655                  this.offset = 0;
8656                  this.extra = 0;
8657                  this.lencode = null;
8658                  this.distcode = null;
8659                  this.lenbits = 0;
8660                  this.distbits = 0;
8661                  this.ncode = 0;
8662                  this.nlen = 0;
8663                  this.ndist = 0;
8664                  this.have = 0;
8665                  this.next = null;
8666                  this.lens = new utils.Buf16(
8667                    320
8668                  );
8669                  this.work = new utils.Buf16(
8670                    288
8671                  );
8672                  this.lendyn = null;
8673                  this.distdyn = null;
8674                  this.sane = 0;
8675                  this.back = 0;
8676                  this.was = 0;
8677                }
8678                function inflateResetKeep(strm) {
8679                  var state;
8680                  if (!strm || !strm.state) {
8681                    return Z_STREAM_ERROR;
8682                  }
8683                  state = strm.state;
8684                  strm.total_in = strm.total_out = state.total = 0;
8685                  strm.msg = "";
8686                  if (state.wrap) {
8687                    strm.adler = state.wrap & 1;
8688                  }
8689                  state.mode = HEAD;
8690                  state.last = 0;
8691                  state.havedict = 0;
8692                  state.dmax = 32768;
8693                  state.head = null;
8694                  state.hold = 0;
8695                  state.bits = 0;
8696                  state.lencode = state.lendyn = new utils.Buf32(
8697                    ENOUGH_LENS
8698                  );
8699                  state.distcode = state.distdyn = new utils.Buf32(
8700                    ENOUGH_DISTS
8701                  );
8702                  state.sane = 1;
8703                  state.back = -1;
8704                  return Z_OK;
8705                }
8706                function inflateReset(strm) {
8707                  var state;
8708                  if (!strm || !strm.state) {
8709                    return Z_STREAM_ERROR;
8710                  }
8711                  state = strm.state;
8712                  state.wsize = 0;
8713                  state.whave = 0;
8714                  state.wnext = 0;
8715                  return inflateResetKeep(strm);
8716                }
8717                function inflateReset2(strm, windowBits) {
8718                  var wrap;
8719                  var state;
8720                  if (!strm || !strm.state) {
8721                    return Z_STREAM_ERROR;
8722                  }
8723                  state = strm.state;
8724                  if (windowBits < 0) {
8725                    wrap = 0;
8726                    windowBits = -windowBits;
8727                  } else {
8728                    wrap = (windowBits >> 4) + 1;
8729                    if (windowBits < 48) {
8730                      windowBits &= 15;
8731                    }
8732                  }
8733                  if (windowBits && (windowBits < 8 || windowBits > 15)) {
8734                    return Z_STREAM_ERROR;
8735                  }
8736                  if (state.window !== null && state.wbits !== windowBits) {
8737                    state.window = null;
8738                  }
8739                  state.wrap = wrap;
8740                  state.wbits = windowBits;
8741                  return inflateReset(strm);
8742                }
8743                function inflateInit2(strm, windowBits) {
8744                  var ret;
8745                  var state;
8746                  if (!strm) {
8747                    return Z_STREAM_ERROR;
8748                  }
8749                  state = new InflateState();
8750                  strm.state = state;
8751                  state.window = null;
8752                  ret = inflateReset2(strm, windowBits);
8753                  if (ret !== Z_OK) {
8754                    strm.state = null;
8755                  }
8756                  return ret;
8757                }
8758                function inflateInit(strm) {
8759                  return inflateInit2(strm, DEF_WBITS);
8760                }
8761                var virgin = true;
8762                var lenfix, distfix;
8763                function fixedtables(state) {
8764                  if (virgin) {
8765                    var sym;
8766                    lenfix = new utils.Buf32(512);
8767                    distfix = new utils.Buf32(32);
8768                    sym = 0;
8769                    while (sym < 144) {
8770                      state.lens[sym++] = 8;
8771                    }
8772                    while (sym < 256) {
8773                      state.lens[sym++] = 9;
8774                    }
8775                    while (sym < 280) {
8776                      state.lens[sym++] = 7;
8777                    }
8778                    while (sym < 288) {
8779                      state.lens[sym++] = 8;
8780                    }
8781                    inflate_table(
8782                      LENS,
8783                      state.lens,
8784                      0,
8785                      288,
8786                      lenfix,
8787                      0,
8788                      state.work,
8789                      { bits: 9 }
8790                    );
8791                    sym = 0;
8792                    while (sym < 32) {
8793                      state.lens[sym++] = 5;
8794                    }
8795                    inflate_table(
8796                      DISTS,
8797                      state.lens,
8798                      0,
8799                      32,
8800                      distfix,
8801                      0,
8802                      state.work,
8803                      { bits: 5 }
8804                    );
8805                    virgin = false;
8806                  }
8807                  state.lencode = lenfix;
8808                  state.lenbits = 9;
8809                  state.distcode = distfix;
8810                  state.distbits = 5;
8811                }
8812                function updatewindow(strm, src, end, copy) {
8813                  var dist;
8814                  var state = strm.state;
8815                  if (state.window === null) {
8816                    state.wsize = 1 << state.wbits;
8817                    state.wnext = 0;
8818                    state.whave = 0;
8819                    state.window = new utils.Buf8(state.wsize);
8820                  }
8821                  if (copy >= state.wsize) {
8822                    utils.arraySet(
8823                      state.window,
8824                      src,
8825                      end - state.wsize,
8826                      state.wsize,
8827                      0
8828                    );
8829                    state.wnext = 0;
8830                    state.whave = state.wsize;
8831                  } else {
8832                    dist = state.wsize - state.wnext;
8833                    if (dist > copy) {
8834                      dist = copy;
8835                    }
8836                    utils.arraySet(
8837                      state.window,
8838                      src,
8839                      end - copy,
8840                      dist,
8841                      state.wnext
8842                    );
8843                    copy -= dist;
8844                    if (copy) {
8845                      utils.arraySet(
8846                        state.window,
8847                        src,
8848                        end - copy,
8849                        copy,
8850                        0
8851                      );
8852                      state.wnext = copy;
8853                      state.whave = state.wsize;
8854                    } else {
8855                      state.wnext += dist;
8856                      if (state.wnext === state.wsize) {
8857                        state.wnext = 0;
8858                      }
8859                      if (state.whave < state.wsize) {
8860                        state.whave += dist;
8861                      }
8862                    }
8863                  }
8864                  return 0;
8865                }
8866                function inflate(strm, flush) {
8867                  var state;
8868                  var input, output;
8869                  var next;
8870                  var put;
8871                  var have, left;
8872                  var hold;
8873                  var bits;
8874                  var _in, _out;
8875                  var copy;
8876                  var from;
8877                  var from_source;
8878                  var here = 0;
8879                  var here_bits, here_op, here_val;
8880                  var last_bits, last_op, last_val;
8881                  var len;
8882                  var ret;
8883                  var hbuf = new utils.Buf8(
8884                    4
8885                  );
8886                  var opts;
8887                  var n2;
8888                  var order = (
8889                    /* permutation of code lengths */
8890                    [
8891                      16,
8892                      17,
8893                      18,
8894                      0,
8895                      8,
8896                      7,
8897                      9,
8898                      6,
8899                      10,
8900                      5,
8901                      11,
8902                      4,
8903                      12,
8904                      3,
8905                      13,
8906                      2,
8907                      14,
8908                      1,
8909                      15
8910                    ]
8911                  );
8912                  if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) {
8913                    return Z_STREAM_ERROR;
8914                  }
8915                  state = strm.state;
8916                  if (state.mode === TYPE) {
8917                    state.mode = TYPEDO;
8918                  }
8919                  put = strm.next_out;
8920                  output = strm.output;
8921                  left = strm.avail_out;
8922                  next = strm.next_in;
8923                  input = strm.input;
8924                  have = strm.avail_in;
8925                  hold = state.hold;
8926                  bits = state.bits;
8927                  _in = have;
8928                  _out = left;
8929                  ret = Z_OK;
8930                  inf_leave: for (; ; ) {
8931                    switch (state.mode) {
8932                      case HEAD:
8933                        if (state.wrap === 0) {
8934                          state.mode = TYPEDO;
8935                          break;
8936                        }
8937                        while (bits < 16) {
8938                          if (have === 0) {
8939                            break inf_leave;
8940                          }
8941                          have--;
8942                          hold += input[next++] << bits;
8943                          bits += 8;
8944                        }
8945                        if (state.wrap & 2 && hold === 35615) {
8946                          state.check = 0;
8947                          hbuf[0] = hold & 255;
8948                          hbuf[1] = hold >>> 8 & 255;
8949                          state.check = crc32(
8950                            state.check,
8951                            hbuf,
8952                            2,
8953                            0
8954                          );
8955                          hold = 0;
8956                          bits = 0;
8957                          state.mode = FLAGS;
8958                          break;
8959                        }
8960                        state.flags = 0;
8961                        if (state.head) {
8962                          state.head.done = false;
8963                        }
8964                        if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) {
8965                          strm.msg = "incorrect header check";
8966                          state.mode = BAD;
8967                          break;
8968                        }
8969                        if ((hold & 15) !== Z_DEFLATED) {
8970                          strm.msg = "unknown compression method";
8971                          state.mode = BAD;
8972                          break;
8973                        }
8974                        hold >>>= 4;
8975                        bits -= 4;
8976                        len = (hold & 15) + 8;
8977                        if (state.wbits === 0) {
8978                          state.wbits = len;
8979                        } else if (len > state.wbits) {
8980                          strm.msg = "invalid window size";
8981                          state.mode = BAD;
8982                          break;
8983                        }
8984                        state.dmax = 1 << len;
8985                        strm.adler = state.check = 1;
8986                        state.mode = hold & 512 ? DICTID : TYPE;
8987                        hold = 0;
8988                        bits = 0;
8989                        break;
8990                      case FLAGS:
8991                        while (bits < 16) {
8992                          if (have === 0) {
8993                            break inf_leave;
8994                          }
8995                          have--;
8996                          hold += input[next++] << bits;
8997                          bits += 8;
8998                        }
8999                        state.flags = hold;
9000                        if ((state.flags & 255) !== Z_DEFLATED) {
9001                          strm.msg = "unknown compression method";
9002                          state.mode = BAD;
9003                          break;
9004                        }
9005                        if (state.flags & 57344) {
9006                          strm.msg = "unknown header flags set";
9007                          state.mode = BAD;
9008                          break;
9009                        }
9010                        if (state.head) {
9011                          state.head.text = hold >> 8 & 1;
9012                        }
9013                        if (state.flags & 512) {
9014                          hbuf[0] = hold & 255;
9015                          hbuf[1] = hold >>> 8 & 255;
9016                          state.check = crc32(
9017                            state.check,
9018                            hbuf,
9019                            2,
9020                            0
9021                          );
9022                        }
9023                        hold = 0;
9024                        bits = 0;
9025                        state.mode = TIME;
9026                      /* falls through */
9027                      case TIME:
9028                        while (bits < 32) {
9029                          if (have === 0) {
9030                            break inf_leave;
9031                          }
9032                          have--;
9033                          hold += input[next++] << bits;
9034                          bits += 8;
9035                        }
9036                        if (state.head) {
9037                          state.head.time = hold;
9038                        }
9039                        if (state.flags & 512) {
9040                          hbuf[0] = hold & 255;
9041                          hbuf[1] = hold >>> 8 & 255;
9042                          hbuf[2] = hold >>> 16 & 255;
9043                          hbuf[3] = hold >>> 24 & 255;
9044                          state.check = crc32(
9045                            state.check,
9046                            hbuf,
9047                            4,
9048                            0
9049                          );
9050                        }
9051                        hold = 0;
9052                        bits = 0;
9053                        state.mode = OS;
9054                      /* falls through */
9055                      case OS:
9056                        while (bits < 16) {
9057                          if (have === 0) {
9058                            break inf_leave;
9059                          }
9060                          have--;
9061                          hold += input[next++] << bits;
9062                          bits += 8;
9063                        }
9064                        if (state.head) {
9065                          state.head.xflags = hold & 255;
9066                          state.head.os = hold >> 8;
9067                        }
9068                        if (state.flags & 512) {
9069                          hbuf[0] = hold & 255;
9070                          hbuf[1] = hold >>> 8 & 255;
9071                          state.check = crc32(
9072                            state.check,
9073                            hbuf,
9074                            2,
9075                            0
9076                          );
9077                        }
9078                        hold = 0;
9079                        bits = 0;
9080                        state.mode = EXLEN;
9081                      /* falls through */
9082                      case EXLEN:
9083                        if (state.flags & 1024) {
9084                          while (bits < 16) {
9085                            if (have === 0) {
9086                              break inf_leave;
9087                            }
9088                            have--;
9089                            hold += input[next++] << bits;
9090                            bits += 8;
9091                          }
9092                          state.length = hold;
9093                          if (state.head) {
9094                            state.head.extra_len = hold;
9095                          }
9096                          if (state.flags & 512) {
9097                            hbuf[0] = hold & 255;
9098                            hbuf[1] = hold >>> 8 & 255;
9099                            state.check = crc32(
9100                              state.check,
9101                              hbuf,
9102                              2,
9103                              0
9104                            );
9105                          }
9106                          hold = 0;
9107                          bits = 0;
9108                        } else if (state.head) {
9109                          state.head.extra = null;
9110                        }
9111                        state.mode = EXTRA;
9112                      /* falls through */
9113                      case EXTRA:
9114                        if (state.flags & 1024) {
9115                          copy = state.length;
9116                          if (copy > have) {
9117                            copy = have;
9118                          }
9119                          if (copy) {
9120                            if (state.head) {
9121                              len = state.head.extra_len - state.length;
9122                              if (!state.head.extra) {
9123                                state.head.extra = new Array(
9124                                  state.head.extra_len
9125                                );
9126                              }
9127                              utils.arraySet(
9128                                state.head.extra,
9129                                input,
9130                                next,
9131                                // extra field is limited to 65536 bytes
9132                                // - no need for additional size check
9133                                copy,
9134                                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
9135                                len
9136                              );
9137                            }
9138                            if (state.flags & 512) {
9139                              state.check = crc32(
9140                                state.check,
9141                                input,
9142                                copy,
9143                                next
9144                              );
9145                            }
9146                            have -= copy;
9147                            next += copy;
9148                            state.length -= copy;
9149                          }
9150                          if (state.length) {
9151                            break inf_leave;
9152                          }
9153                        }
9154                        state.length = 0;
9155                        state.mode = NAME;
9156                      /* falls through */
9157                      case NAME:
9158                        if (state.flags & 2048) {
9159                          if (have === 0) {
9160                            break inf_leave;
9161                          }
9162                          copy = 0;
9163                          do {
9164                            len = input[next + copy++];
9165                            if (state.head && len && state.length < 65536) {
9166                              state.head.name += String.fromCharCode(len);
9167                            }
9168                          } while (len && copy < have);
9169                          if (state.flags & 512) {
9170                            state.check = crc32(
9171                              state.check,
9172                              input,
9173                              copy,
9174                              next
9175                            );
9176                          }
9177                          have -= copy;
9178                          next += copy;
9179                          if (len) {
9180                            break inf_leave;
9181                          }
9182                        } else if (state.head) {
9183                          state.head.name = null;
9184                        }
9185                        state.length = 0;
9186                        state.mode = COMMENT;
9187                      /* falls through */
9188                      case COMMENT:
9189                        if (state.flags & 4096) {
9190                          if (have === 0) {
9191                            break inf_leave;
9192                          }
9193                          copy = 0;
9194                          do {
9195                            len = input[next + copy++];
9196                            if (state.head && len && state.length < 65536) {
9197                              state.head.comment += String.fromCharCode(len);
9198                            }
9199                          } while (len && copy < have);
9200                          if (state.flags & 512) {
9201                            state.check = crc32(
9202                              state.check,
9203                              input,
9204                              copy,
9205                              next
9206                            );
9207                          }
9208                          have -= copy;
9209                          next += copy;
9210                          if (len) {
9211                            break inf_leave;
9212                          }
9213                        } else if (state.head) {
9214                          state.head.comment = null;
9215                        }
9216                        state.mode = HCRC;
9217                      /* falls through */
9218                      case HCRC:
9219                        if (state.flags & 512) {
9220                          while (bits < 16) {
9221                            if (have === 0) {
9222                              break inf_leave;
9223                            }
9224                            have--;
9225                            hold += input[next++] << bits;
9226                            bits += 8;
9227                          }
9228                          if (hold !== (state.check & 65535)) {
9229                            strm.msg = "header crc mismatch";
9230                            state.mode = BAD;
9231                            break;
9232                          }
9233                          hold = 0;
9234                          bits = 0;
9235                        }
9236                        if (state.head) {
9237                          state.head.hcrc = state.flags >> 9 & 1;
9238                          state.head.done = true;
9239                        }
9240                        strm.adler = state.check = 0;
9241                        state.mode = TYPE;
9242                        break;
9243                      case DICTID:
9244                        while (bits < 32) {
9245                          if (have === 0) {
9246                            break inf_leave;
9247                          }
9248                          have--;
9249                          hold += input[next++] << bits;
9250                          bits += 8;
9251                        }
9252                        strm.adler = state.check = zswap32(hold);
9253                        hold = 0;
9254                        bits = 0;
9255                        state.mode = DICT;
9256                      /* falls through */
9257                      case DICT:
9258                        if (state.havedict === 0) {
9259                          strm.next_out = put;
9260                          strm.avail_out = left;
9261                          strm.next_in = next;
9262                          strm.avail_in = have;
9263                          state.hold = hold;
9264                          state.bits = bits;
9265                          return Z_NEED_DICT;
9266                        }
9267                        strm.adler = state.check = 1;
9268                        state.mode = TYPE;
9269                      /* falls through */
9270                      case TYPE:
9271                        if (flush === Z_BLOCK || flush === Z_TREES) {
9272                          break inf_leave;
9273                        }
9274                      /* falls through */
9275                      case TYPEDO:
9276                        if (state.last) {
9277                          hold >>>= bits & 7;
9278                          bits -= bits & 7;
9279                          state.mode = CHECK;
9280                          break;
9281                        }
9282                        while (bits < 3) {
9283                          if (have === 0) {
9284                            break inf_leave;
9285                          }
9286                          have--;
9287                          hold += input[next++] << bits;
9288                          bits += 8;
9289                        }
9290                        state.last = hold & 1;
9291                        hold >>>= 1;
9292                        bits -= 1;
9293                        switch (hold & 3) {
9294                          case 0:
9295                            state.mode = STORED;
9296                            break;
9297                          case 1:
9298                            fixedtables(state);
9299                            state.mode = LEN_;
9300                            if (flush === Z_TREES) {
9301                              hold >>>= 2;
9302                              bits -= 2;
9303                              break inf_leave;
9304                            }
9305                            break;
9306                          case 2:
9307                            state.mode = TABLE;
9308                            break;
9309                          case 3:
9310                            strm.msg = "invalid block type";
9311                            state.mode = BAD;
9312                        }
9313                        hold >>>= 2;
9314                        bits -= 2;
9315                        break;
9316                      case STORED:
9317                        hold >>>= bits & 7;
9318                        bits -= bits & 7;
9319                        while (bits < 32) {
9320                          if (have === 0) {
9321                            break inf_leave;
9322                          }
9323                          have--;
9324                          hold += input[next++] << bits;
9325                          bits += 8;
9326                        }
9327                        if ((hold & 65535) !== (hold >>> 16 ^ 65535)) {
9328                          strm.msg = "invalid stored block lengths";
9329                          state.mode = BAD;
9330                          break;
9331                        }
9332                        state.length = hold & 65535;
9333                        hold = 0;
9334                        bits = 0;
9335                        state.mode = COPY_;
9336                        if (flush === Z_TREES) {
9337                          break inf_leave;
9338                        }
9339                      /* falls through */
9340                      case COPY_:
9341                        state.mode = COPY;
9342                      /* falls through */
9343                      case COPY:
9344                        copy = state.length;
9345                        if (copy) {
9346                          if (copy > have) {
9347                            copy = have;
9348                          }
9349                          if (copy > left) {
9350                            copy = left;
9351                          }
9352                          if (copy === 0) {
9353                            break inf_leave;
9354                          }
9355                          utils.arraySet(
9356                            output,
9357                            input,
9358                            next,
9359                            copy,
9360                            put
9361                          );
9362                          have -= copy;
9363                          next += copy;
9364                          left -= copy;
9365                          put += copy;
9366                          state.length -= copy;
9367                          break;
9368                        }
9369                        state.mode = TYPE;
9370                        break;
9371                      case TABLE:
9372                        while (bits < 14) {
9373                          if (have === 0) {
9374                            break inf_leave;
9375                          }
9376                          have--;
9377                          hold += input[next++] << bits;
9378                          bits += 8;
9379                        }
9380                        state.nlen = (hold & 31) + 257;
9381                        hold >>>= 5;
9382                        bits -= 5;
9383                        state.ndist = (hold & 31) + 1;
9384                        hold >>>= 5;
9385                        bits -= 5;
9386                        state.ncode = (hold & 15) + 4;
9387                        hold >>>= 4;
9388                        bits -= 4;
9389                        if (state.nlen > 286 || state.ndist > 30) {
9390                          strm.msg = "too many length or distance symbols";
9391                          state.mode = BAD;
9392                          break;
9393                        }
9394                        state.have = 0;
9395                        state.mode = LENLENS;
9396                      /* falls through */
9397                      case LENLENS:
9398                        while (state.have < state.ncode) {
9399                          while (bits < 3) {
9400                            if (have === 0) {
9401                              break inf_leave;
9402                            }
9403                            have--;
9404                            hold += input[next++] << bits;
9405                            bits += 8;
9406                          }
9407                          state.lens[order[state.have++]] = hold & 7;
9408                          hold >>>= 3;
9409                          bits -= 3;
9410                        }
9411                        while (state.have < 19) {
9412                          state.lens[order[state.have++]] = 0;
9413                        }
9414                        state.lencode = state.lendyn;
9415                        state.lenbits = 7;
9416                        opts = { bits: state.lenbits };
9417                        ret = inflate_table(
9418                          CODES,
9419                          state.lens,
9420                          0,
9421                          19,
9422                          state.lencode,
9423                          0,
9424                          state.work,
9425                          opts
9426                        );
9427                        state.lenbits = opts.bits;
9428                        if (ret) {
9429                          strm.msg = "invalid code lengths set";
9430                          state.mode = BAD;
9431                          break;
9432                        }
9433                        state.have = 0;
9434                        state.mode = CODELENS;
9435                      /* falls through */
9436                      case CODELENS:
9437                        while (state.have < state.nlen + state.ndist) {
9438                          for (; ; ) {
9439                            here = state.lencode[hold & (1 << state.lenbits) - 1];
9440                            here_bits = here >>> 24;
9441                            here_op = here >>> 16 & 255;
9442                            here_val = here & 65535;
9443                            if (here_bits <= bits) {
9444                              break;
9445                            }
9446                            if (have === 0) {
9447                              break inf_leave;
9448                            }
9449                            have--;
9450                            hold += input[next++] << bits;
9451                            bits += 8;
9452                          }
9453                          if (here_val < 16) {
9454                            hold >>>= here_bits;
9455                            bits -= here_bits;
9456                            state.lens[state.have++] = here_val;
9457                          } else {
9458                            if (here_val === 16) {
9459                              n2 = here_bits + 2;
9460                              while (bits < n2) {
9461                                if (have === 0) {
9462                                  break inf_leave;
9463                                }
9464                                have--;
9465                                hold += input[next++] << bits;
9466                                bits += 8;
9467                              }
9468                              hold >>>= here_bits;
9469                              bits -= here_bits;
9470                              if (state.have === 0) {
9471                                strm.msg = "invalid bit length repeat";
9472                                state.mode = BAD;
9473                                break;
9474                              }
9475                              len = state.lens[state.have - 1];
9476                              copy = 3 + (hold & 3);
9477                              hold >>>= 2;
9478                              bits -= 2;
9479                            } else if (here_val === 17) {
9480                              n2 = here_bits + 3;
9481                              while (bits < n2) {
9482                                if (have === 0) {
9483                                  break inf_leave;
9484                                }
9485                                have--;
9486                                hold += input[next++] << bits;
9487                                bits += 8;
9488                              }
9489                              hold >>>= here_bits;
9490                              bits -= here_bits;
9491                              len = 0;
9492                              copy = 3 + (hold & 7);
9493                              hold >>>= 3;
9494                              bits -= 3;
9495                            } else {
9496                              n2 = here_bits + 7;
9497                              while (bits < n2) {
9498                                if (have === 0) {
9499                                  break inf_leave;
9500                                }
9501                                have--;
9502                                hold += input[next++] << bits;
9503                                bits += 8;
9504                              }
9505                              hold >>>= here_bits;
9506                              bits -= here_bits;
9507                              len = 0;
9508                              copy = 11 + (hold & 127);
9509                              hold >>>= 7;
9510                              bits -= 7;
9511                            }
9512                            if (state.have + copy > state.nlen + state.ndist) {
9513                              strm.msg = "invalid bit length repeat";
9514                              state.mode = BAD;
9515                              break;
9516                            }
9517                            while (copy--) {
9518                              state.lens[state.have++] = len;
9519                            }
9520                          }
9521                        }
9522                        if (state.mode === BAD) {
9523                          break;
9524                        }
9525                        if (state.lens[256] === 0) {
9526                          strm.msg = "invalid code -- missing end-of-block";
9527                          state.mode = BAD;
9528                          break;
9529                        }
9530                        state.lenbits = 9;
9531                        opts = { bits: state.lenbits };
9532                        ret = inflate_table(
9533                          LENS,
9534                          state.lens,
9535                          0,
9536                          state.nlen,
9537                          state.lencode,
9538                          0,
9539                          state.work,
9540                          opts
9541                        );
9542                        state.lenbits = opts.bits;
9543                        if (ret) {
9544                          strm.msg = "invalid literal/lengths set";
9545                          state.mode = BAD;
9546                          break;
9547                        }
9548                        state.distbits = 6;
9549                        state.distcode = state.distdyn;
9550                        opts = { bits: state.distbits };
9551                        ret = inflate_table(
9552                          DISTS,
9553                          state.lens,
9554                          state.nlen,
9555                          state.ndist,
9556                          state.distcode,
9557                          0,
9558                          state.work,
9559                          opts
9560                        );
9561                        state.distbits = opts.bits;
9562                        if (ret) {
9563                          strm.msg = "invalid distances set";
9564                          state.mode = BAD;
9565                          break;
9566                        }
9567                        state.mode = LEN_;
9568                        if (flush === Z_TREES) {
9569                          break inf_leave;
9570                        }
9571                      /* falls through */
9572                      case LEN_:
9573                        state.mode = LEN;
9574                      /* falls through */
9575                      case LEN:
9576                        if (have >= 6 && left >= 258) {
9577                          strm.next_out = put;
9578                          strm.avail_out = left;
9579                          strm.next_in = next;
9580                          strm.avail_in = have;
9581                          state.hold = hold;
9582                          state.bits = bits;
9583                          inflate_fast(strm, _out);
9584                          put = strm.next_out;
9585                          output = strm.output;
9586                          left = strm.avail_out;
9587                          next = strm.next_in;
9588                          input = strm.input;
9589                          have = strm.avail_in;
9590                          hold = state.hold;
9591                          bits = state.bits;
9592                          if (state.mode === TYPE) {
9593                            state.back = -1;
9594                          }
9595                          break;
9596                        }
9597                        state.back = 0;
9598                        for (; ; ) {
9599                          here = state.lencode[hold & (1 << state.lenbits) - 1];
9600                          here_bits = here >>> 24;
9601                          here_op = here >>> 16 & 255;
9602                          here_val = here & 65535;
9603                          if (here_bits <= bits) {
9604                            break;
9605                          }
9606                          if (have === 0) {
9607                            break inf_leave;
9608                          }
9609                          have--;
9610                          hold += input[next++] << bits;
9611                          bits += 8;
9612                        }
9613                        if (here_op && (here_op & 240) === 0) {
9614                          last_bits = here_bits;
9615                          last_op = here_op;
9616                          last_val = here_val;
9617                          for (; ; ) {
9618                            here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
9619                            here_bits = here >>> 24;
9620                            here_op = here >>> 16 & 255;
9621                            here_val = here & 65535;
9622                            if (last_bits + here_bits <= bits) {
9623                              break;
9624                            }
9625                            if (have === 0) {
9626                              break inf_leave;
9627                            }
9628                            have--;
9629                            hold += input[next++] << bits;
9630                            bits += 8;
9631                          }
9632                          hold >>>= last_bits;
9633                          bits -= last_bits;
9634                          state.back += last_bits;
9635                        }
9636                        hold >>>= here_bits;
9637                        bits -= here_bits;
9638                        state.back += here_bits;
9639                        state.length = here_val;
9640                        if (here_op === 0) {
9641                          state.mode = LIT;
9642                          break;
9643                        }
9644                        if (here_op & 32) {
9645                          state.back = -1;
9646                          state.mode = TYPE;
9647                          break;
9648                        }
9649                        if (here_op & 64) {
9650                          strm.msg = "invalid literal/length code";
9651                          state.mode = BAD;
9652                          break;
9653                        }
9654                        state.extra = here_op & 15;
9655                        state.mode = LENEXT;
9656                      /* falls through */
9657                      case LENEXT:
9658                        if (state.extra) {
9659                          n2 = state.extra;
9660                          while (bits < n2) {
9661                            if (have === 0) {
9662                              break inf_leave;
9663                            }
9664                            have--;
9665                            hold += input[next++] << bits;
9666                            bits += 8;
9667                          }
9668                          state.length += hold & (1 << state.extra) - 1;
9669                          hold >>>= state.extra;
9670                          bits -= state.extra;
9671                          state.back += state.extra;
9672                        }
9673                        state.was = state.length;
9674                        state.mode = DIST;
9675                      /* falls through */
9676                      case DIST:
9677                        for (; ; ) {
9678                          here = state.distcode[hold & (1 << state.distbits) - 1];
9679                          here_bits = here >>> 24;
9680                          here_op = here >>> 16 & 255;
9681                          here_val = here & 65535;
9682                          if (here_bits <= bits) {
9683                            break;
9684                          }
9685                          if (have === 0) {
9686                            break inf_leave;
9687                          }
9688                          have--;
9689                          hold += input[next++] << bits;
9690                          bits += 8;
9691                        }
9692                        if ((here_op & 240) === 0) {
9693                          last_bits = here_bits;
9694                          last_op = here_op;
9695                          last_val = here_val;
9696                          for (; ; ) {
9697                            here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
9698                            here_bits = here >>> 24;
9699                            here_op = here >>> 16 & 255;
9700                            here_val = here & 65535;
9701                            if (last_bits + here_bits <= bits) {
9702                              break;
9703                            }
9704                            if (have === 0) {
9705                              break inf_leave;
9706                            }
9707                            have--;
9708                            hold += input[next++] << bits;
9709                            bits += 8;
9710                          }
9711                          hold >>>= last_bits;
9712                          bits -= last_bits;
9713                          state.back += last_bits;
9714                        }
9715                        hold >>>= here_bits;
9716                        bits -= here_bits;
9717                        state.back += here_bits;
9718                        if (here_op & 64) {
9719                          strm.msg = "invalid distance code";
9720                          state.mode = BAD;
9721                          break;
9722                        }
9723                        state.offset = here_val;
9724                        state.extra = here_op & 15;
9725                        state.mode = DISTEXT;
9726                      /* falls through */
9727                      case DISTEXT:
9728                        if (state.extra) {
9729                          n2 = state.extra;
9730                          while (bits < n2) {
9731                            if (have === 0) {
9732                              break inf_leave;
9733                            }
9734                            have--;
9735                            hold += input[next++] << bits;
9736                            bits += 8;
9737                          }
9738                          state.offset += hold & (1 << state.extra) - 1;
9739                          hold >>>= state.extra;
9740                          bits -= state.extra;
9741                          state.back += state.extra;
9742                        }
9743                        if (state.offset > state.dmax) {
9744                          strm.msg = "invalid distance too far back";
9745                          state.mode = BAD;
9746                          break;
9747                        }
9748                        state.mode = MATCH;
9749                      /* falls through */
9750                      case MATCH:
9751                        if (left === 0) {
9752                          break inf_leave;
9753                        }
9754                        copy = _out - left;
9755                        if (state.offset > copy) {
9756                          copy = state.offset - copy;
9757                          if (copy > state.whave) {
9758                            if (state.sane) {
9759                              strm.msg = "invalid distance too far back";
9760                              state.mode = BAD;
9761                              break;
9762                            }
9763                          }
9764                          if (copy > state.wnext) {
9765                            copy -= state.wnext;
9766                            from = state.wsize - copy;
9767                          } else {
9768                            from = state.wnext - copy;
9769                          }
9770                          if (copy > state.length) {
9771                            copy = state.length;
9772                          }
9773                          from_source = state.window;
9774                        } else {
9775                          from_source = output;
9776                          from = put - state.offset;
9777                          copy = state.length;
9778                        }
9779                        if (copy > left) {
9780                          copy = left;
9781                        }
9782                        left -= copy;
9783                        state.length -= copy;
9784                        do {
9785                          output[put++] = from_source[from++];
9786                        } while (--copy);
9787                        if (state.length === 0) {
9788                          state.mode = LEN;
9789                        }
9790                        break;
9791                      case LIT:
9792                        if (left === 0) {
9793                          break inf_leave;
9794                        }
9795                        output[put++] = state.length;
9796                        left--;
9797                        state.mode = LEN;
9798                        break;
9799                      case CHECK:
9800                        if (state.wrap) {
9801                          while (bits < 32) {
9802                            if (have === 0) {
9803                              break inf_leave;
9804                            }
9805                            have--;
9806                            hold |= input[next++] << bits;
9807                            bits += 8;
9808                          }
9809                          _out -= left;
9810                          strm.total_out += _out;
9811                          state.total += _out;
9812                          if (_out) {
9813                            strm.adler = state.check = /*UPDATE(state.check, put - _out, _out);*/
9814                            state.flags ? crc32(
9815                              state.check,
9816                              output,
9817                              _out,
9818                              put - _out
9819                            ) : adler32(
9820                              state.check,
9821                              output,
9822                              _out,
9823                              put - _out
9824                            );
9825                          }
9826                          _out = left;
9827                          if ((state.flags ? hold : zswap32(hold)) !== state.check) {
9828                            strm.msg = "incorrect data check";
9829                            state.mode = BAD;
9830                            break;
9831                          }
9832                          hold = 0;
9833                          bits = 0;
9834                        }
9835                        state.mode = LENGTH;
9836                      /* falls through */
9837                      case LENGTH:
9838                        if (state.wrap && state.flags) {
9839                          while (bits < 32) {
9840                            if (have === 0) {
9841                              break inf_leave;
9842                            }
9843                            have--;
9844                            hold += input[next++] << bits;
9845                            bits += 8;
9846                          }
9847                          if (hold !== (state.total & 4294967295)) {
9848                            strm.msg = "incorrect length check";
9849                            state.mode = BAD;
9850                            break;
9851                          }
9852                          hold = 0;
9853                          bits = 0;
9854                        }
9855                        state.mode = DONE;
9856                      /* falls through */
9857                      case DONE:
9858                        ret = Z_STREAM_END;
9859                        break inf_leave;
9860                      case BAD:
9861                        ret = Z_DATA_ERROR;
9862                        break inf_leave;
9863                      case MEM:
9864                        return Z_MEM_ERROR;
9865                      case SYNC:
9866                      /* falls through */
9867                      default:
9868                        return Z_STREAM_ERROR;
9869                    }
9870                  }
9871                  strm.next_out = put;
9872                  strm.avail_out = left;
9873                  strm.next_in = next;
9874                  strm.avail_in = have;
9875                  state.hold = hold;
9876                  state.bits = bits;
9877                  if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH)) {
9878                    if (updatewindow(
9879                      strm,
9880                      strm.output,
9881                      strm.next_out,
9882                      _out - strm.avail_out
9883                    )) {
9884                      state.mode = MEM;
9885                      return Z_MEM_ERROR;
9886                    }
9887                  }
9888                  _in -= strm.avail_in;
9889                  _out -= strm.avail_out;
9890                  strm.total_in += _in;
9891                  strm.total_out += _out;
9892                  state.total += _out;
9893                  if (state.wrap && _out) {
9894                    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
9895                    state.flags ? crc32(
9896                      state.check,
9897                      output,
9898                      _out,
9899                      strm.next_out - _out
9900                    ) : adler32(
9901                      state.check,
9902                      output,
9903                      _out,
9904                      strm.next_out - _out
9905                    );
9906                  }
9907                  strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
9908                  if ((_in === 0 && _out === 0 || flush === Z_FINISH) && ret === Z_OK) {
9909                    ret = Z_BUF_ERROR;
9910                  }
9911                  return ret;
9912                }
9913                function inflateEnd(strm) {
9914                  if (!strm || !strm.state) {
9915                    return Z_STREAM_ERROR;
9916                  }
9917                  var state = strm.state;
9918                  if (state.window) {
9919                    state.window = null;
9920                  }
9921                  strm.state = null;
9922                  return Z_OK;
9923                }
9924                function inflateGetHeader(strm, head2) {
9925                  var state;
9926                  if (!strm || !strm.state) {
9927                    return Z_STREAM_ERROR;
9928                  }
9929                  state = strm.state;
9930                  if ((state.wrap & 2) === 0) {
9931                    return Z_STREAM_ERROR;
9932                  }
9933                  state.head = head2;
9934                  head2.done = false;
9935                  return Z_OK;
9936                }
9937                function inflateSetDictionary(strm, dictionary) {
9938                  var dictLength = dictionary.length;
9939                  var state;
9940                  var dictid;
9941                  var ret;
9942                  if (!strm || !strm.state) {
9943                    return Z_STREAM_ERROR;
9944                  }
9945                  state = strm.state;
9946                  if (state.wrap !== 0 && state.mode !== DICT) {
9947                    return Z_STREAM_ERROR;
9948                  }
9949                  if (state.mode === DICT) {
9950                    dictid = 1;
9951                    dictid = adler32(
9952                      dictid,
9953                      dictionary,
9954                      dictLength,
9955                      0
9956                    );
9957                    if (dictid !== state.check) {
9958                      return Z_DATA_ERROR;
9959                    }
9960                  }
9961                  ret = updatewindow(
9962                    strm,
9963                    dictionary,
9964                    dictLength,
9965                    dictLength
9966                  );
9967                  if (ret) {
9968                    state.mode = MEM;
9969                    return Z_MEM_ERROR;
9970                  }
9971                  state.havedict = 1;
9972                  return Z_OK;
9973                }
9974                exports3.inflateReset = inflateReset;
9975                exports3.inflateReset2 = inflateReset2;
9976                exports3.inflateResetKeep = inflateResetKeep;
9977                exports3.inflateInit = inflateInit;
9978                exports3.inflateInit2 = inflateInit2;
9979                exports3.inflate = inflate;
9980                exports3.inflateEnd = inflateEnd;
9981                exports3.inflateGetHeader = inflateGetHeader;
9982                exports3.inflateSetDictionary = inflateSetDictionary;
9983                exports3.inflateInfo = "pako inflate (from Nodeca project)";
9984              },
9985              {
9986                "../utils/common": 1,
9987                "./adler32": 3,
9988                "./crc32": 5,
9989                "./inffast": 7,
9990                "./inftrees": 9
9991              }
9992            ],
9993            9: [
9994              function(require2, module3, exports3) {
9995                "use strict";
9996                var utils = require2("../utils/common");
9997                var MAXBITS = 15;
9998                var ENOUGH_LENS = 852;
9999                var ENOUGH_DISTS = 592;
10000                var CODES = 0;
10001                var LENS = 1;
10002                var DISTS = 2;
10003                var lbase = [
10004                  /* Length codes 257..285 base */
10005                  3,
10006                  4,
10007                  5,
10008                  6,
10009                  7,
10010                  8,
10011                  9,
10012                  10,
10013                  11,
10014                  13,
10015                  15,
10016                  17,
10017                  19,
10018                  23,
10019                  27,
10020                  31,
10021                  35,
10022                  43,
10023                  51,
10024                  59,
10025                  67,
10026                  83,
10027                  99,
10028                  115,
10029                  131,
10030                  163,
10031                  195,
10032                  227,
10033                  258,
10034                  0,
10035                  0
10036                ];
10037                var lext = [
10038                  /* Length codes 257..285 extra */
10039                  16,
10040                  16,
10041                  16,
10042                  16,
10043                  16,
10044                  16,
10045                  16,
10046                  16,
10047                  17,
10048                  17,
10049                  17,
10050                  17,
10051                  18,
10052                  18,
10053                  18,
10054                  18,
10055                  19,
10056                  19,
10057                  19,
10058                  19,
10059                  20,
10060                  20,
10061                  20,
10062                  20,
10063                  21,
10064                  21,
10065                  21,
10066                  21,
10067                  16,
10068                  72,
10069                  78
10070                ];
10071                var dbase = [
10072                  /* Distance codes 0..29 base */
10073                  1,
10074                  2,
10075                  3,
10076                  4,
10077                  5,
10078                  7,
10079                  9,
10080                  13,
10081                  17,
10082                  25,
10083                  33,
10084                  49,
10085                  65,
10086                  97,
10087                  129,
10088                  193,
10089                  257,
10090                  385,
10091                  513,
10092                  769,
10093                  1025,
10094                  1537,
10095                  2049,
10096                  3073,
10097                  4097,
10098                  6145,
10099                  8193,
10100                  12289,
10101                  16385,
10102                  24577,
10103                  0,
10104                  0
10105                ];
10106                var dext = [
10107                  /* Distance codes 0..29 extra */
10108                  16,
10109                  16,
10110                  16,
10111                  16,
10112                  17,
10113                  17,
10114                  18,
10115                  18,
10116                  19,
10117                  19,
10118                  20,
10119                  20,
10120                  21,
10121                  21,
10122                  22,
10123                  22,
10124                  23,
10125                  23,
10126                  24,
10127                  24,
10128                  25,
10129                  25,
10130                  26,
10131                  26,
10132                  27,
10133                  27,
10134                  28,
10135                  28,
10136                  29,
10137                  29,
10138                  64,
10139                  64
10140                ];
10141                module3.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {
10142                  var bits = opts.bits;
10143                  var len = 0;
10144                  var sym = 0;
10145                  var min = 0, max = 0;
10146                  var root = 0;
10147                  var curr = 0;
10148                  var drop = 0;
10149                  var left = 0;
10150                  var used = 0;
10151                  var huff = 0;
10152                  var incr;
10153                  var fill;
10154                  var low;
10155                  var mask;
10156                  var next;
10157                  var base = null;
10158                  var base_index = 0;
10159                  var end;
10160                  var count = new utils.Buf16(MAXBITS + 1);
10161                  var offs = new utils.Buf16(MAXBITS + 1);
10162                  var extra = null;
10163                  var extra_index = 0;
10164                  var here_bits, here_op, here_val;
10165                  for (len = 0; len <= MAXBITS; len++) {
10166                    count[len] = 0;
10167                  }
10168                  for (sym = 0; sym < codes; sym++) {
10169                    count[lens[lens_index + sym]]++;
10170                  }
10171                  root = bits;
10172                  for (max = MAXBITS; max >= 1; max--) {
10173                    if (count[max] !== 0) {
10174                      break;
10175                    }
10176                  }
10177                  if (root > max) {
10178                    root = max;
10179                  }
10180                  if (max === 0) {
10181                    table[table_index++] = 1 << 24 | 64 << 16 | 0;
10182                    table[table_index++] = 1 << 24 | 64 << 16 | 0;
10183                    opts.bits = 1;
10184                    return 0;
10185                  }
10186                  for (min = 1; min < max; min++) {
10187                    if (count[min] !== 0) {
10188                      break;
10189                    }
10190                  }
10191                  if (root < min) {
10192                    root = min;
10193                  }
10194                  left = 1;
10195                  for (len = 1; len <= MAXBITS; len++) {
10196                    left <<= 1;
10197                    left -= count[len];
10198                    if (left < 0) {
10199                      return -1;
10200                    }
10201                  }
10202                  if (left > 0 && (type === CODES || max !== 1)) {
10203                    return -1;
10204                  }
10205                  offs[1] = 0;
10206                  for (len = 1; len < MAXBITS; len++) {
10207                    offs[len + 1] = offs[len] + count[len];
10208                  }
10209                  for (sym = 0; sym < codes; sym++) {
10210                    if (lens[lens_index + sym] !== 0) {
10211                      work[offs[lens[lens_index + sym]]++] = sym;
10212                    }
10213                  }
10214                  if (type === CODES) {
10215                    base = extra = work;
10216                    end = 19;
10217                  } else if (type === LENS) {
10218                    base = lbase;
10219                    base_index -= 257;
10220                    extra = lext;
10221                    extra_index -= 257;
10222                    end = 256;
10223                  } else {
10224                    base = dbase;
10225                    extra = dext;
10226                    end = -1;
10227                  }
10228                  huff = 0;
10229                  sym = 0;
10230                  len = min;
10231                  next = table_index;
10232                  curr = root;
10233                  drop = 0;
10234                  low = -1;
10235                  used = 1 << root;
10236                  mask = used - 1;
10237                  if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
10238                    return 1;
10239                  }
10240                  for (; ; ) {
10241                    here_bits = len - drop;
10242                    if (work[sym] < end) {
10243                      here_op = 0;
10244                      here_val = work[sym];
10245                    } else if (work[sym] > end) {
10246                      here_op = extra[extra_index + work[sym]];
10247                      here_val = base[base_index + work[sym]];
10248                    } else {
10249                      here_op = 32 + 64;
10250                      here_val = 0;
10251                    }
10252                    incr = 1 << len - drop;
10253                    fill = 1 << curr;
10254                    min = fill;
10255                    do {
10256                      fill -= incr;
10257                      table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;
10258                    } while (fill !== 0);
10259                    incr = 1 << len - 1;
10260                    while (huff & incr) {
10261                      incr >>= 1;
10262                    }
10263                    if (incr !== 0) {
10264                      huff &= incr - 1;
10265                      huff += incr;
10266                    } else {
10267                      huff = 0;
10268                    }
10269                    sym++;
10270                    if (--count[len] === 0) {
10271                      if (len === max) {
10272                        break;
10273                      }
10274                      len = lens[lens_index + work[sym]];
10275                    }
10276                    if (len > root && (huff & mask) !== low) {
10277                      if (drop === 0) {
10278                        drop = root;
10279                      }
10280                      next += min;
10281                      curr = len - drop;
10282                      left = 1 << curr;
10283                      while (curr + drop < max) {
10284                        left -= count[curr + drop];
10285                        if (left <= 0) {
10286                          break;
10287                        }
10288                        curr++;
10289                        left <<= 1;
10290                      }
10291                      used += 1 << curr;
10292                      if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
10293                        return 1;
10294                      }
10295                      low = huff & mask;
10296                      table[low] = root << 24 | curr << 16 | next - table_index | 0;
10297                    }
10298                  }
10299                  if (huff !== 0) {
10300                    table[next + huff] = len - drop << 24 | 64 << 16 | 0;
10301                  }
10302                  opts.bits = root;
10303                  return 0;
10304                };
10305              },
10306              { "../utils/common": 1 }
10307            ],
10308            10: [
10309              function(require2, module3, exports3) {
10310                "use strict";
10311                module3.exports = {
10312                  2: "need dictionary",
10313                  1: "stream end",
10314                  0: "",
10315                  "-1": "file error",
10316                  "-2": "stream error",
10317                  "-3": "data error",
10318                  "-4": "insufficient memory",
10319                  "-5": "buffer error",
10320                  "-6": "incompatible version"
10321                };
10322              },
10323              {}
10324            ],
10325            11: [
10326              function(require2, module3, exports3) {
10327                "use strict";
10328                function ZStream() {
10329                  this.input = null;
10330                  this.next_in = 0;
10331                  this.avail_in = 0;
10332                  this.total_in = 0;
10333                  this.output = null;
10334                  this.next_out = 0;
10335                  this.avail_out = 0;
10336                  this.total_out = 0;
10337                  this.msg = "";
10338                  this.state = null;
10339                  this.data_type = 2;
10340                  this.adler = 0;
10341                }
10342                module3.exports = ZStream;
10343              },
10344              {}
10345            ],
10346            "/lib/inflate.js": [
10347              function(require2, module3, exports3) {
10348                "use strict";
10349                var zlib_inflate = require2("./zlib/inflate");
10350                var utils = require2("./utils/common");
10351                var strings = require2("./utils/strings");
10352                var c2 = require2("./zlib/constants");
10353                var msg = require2("./zlib/messages");
10354                var ZStream = require2("./zlib/zstream");
10355                var GZheader = require2("./zlib/gzheader");
10356                var toString = Object.prototype.toString;
10357                function Inflate(options) {
10358                  if (!(this instanceof Inflate))
10359                    return new Inflate(options);
10360                  this.options = utils.assign(
10361                    {
10362                      chunkSize: 16384,
10363                      windowBits: 0,
10364                      to: ""
10365                    },
10366                    options || {}
10367                  );
10368                  var opt = this.options;
10369                  if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {
10370                    opt.windowBits = -opt.windowBits;
10371                    if (opt.windowBits === 0) {
10372                      opt.windowBits = -15;
10373                    }
10374                  }
10375                  if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) {
10376                    opt.windowBits += 32;
10377                  }
10378                  if (opt.windowBits > 15 && opt.windowBits < 48) {
10379                    if ((opt.windowBits & 15) === 0) {
10380                      opt.windowBits |= 15;
10381                    }
10382                  }
10383                  this.err = 0;
10384                  this.msg = "";
10385                  this.ended = false;
10386                  this.chunks = [];
10387                  this.strm = new ZStream();
10388                  this.strm.avail_out = 0;
10389                  var status = zlib_inflate.inflateInit2(
10390                    this.strm,
10391                    opt.windowBits
10392                  );
10393                  if (status !== c2.Z_OK) {
10394                    throw new Error(msg[status]);
10395                  }
10396                  this.header = new GZheader();
10397                  zlib_inflate.inflateGetHeader(this.strm, this.header);
10398                  if (opt.dictionary) {
10399                    if (typeof opt.dictionary === "string") {
10400                      opt.dictionary = strings.string2buf(
10401                        opt.dictionary
10402                      );
10403                    } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") {
10404                      opt.dictionary = new Uint8Array(
10405                        opt.dictionary
10406                      );
10407                    }
10408                    if (opt.raw) {
10409                      status = zlib_inflate.inflateSetDictionary(
10410                        this.strm,
10411                        opt.dictionary
10412                      );
10413                      if (status !== c2.Z_OK) {
10414                        throw new Error(msg[status]);
10415                      }
10416                    }
10417                  }
10418                }
10419                Inflate.prototype.push = function(data, mode) {
10420                  var strm = this.strm;
10421                  var chunkSize = this.options.chunkSize;
10422                  var dictionary = this.options.dictionary;
10423                  var status, _mode;
10424                  var next_out_utf8, tail, utf8str;
10425                  var allowBufError = false;
10426                  if (this.ended) {
10427                    return false;
10428                  }
10429                  _mode = mode === ~~mode ? mode : mode === true ? c2.Z_FINISH : c2.Z_NO_FLUSH;
10430                  if (typeof data === "string") {
10431                    strm.input = strings.binstring2buf(data);
10432                  } else if (toString.call(data) === "[object ArrayBuffer]") {
10433                    strm.input = new Uint8Array(data);
10434                  } else {
10435                    strm.input = data;
10436                  }
10437                  strm.next_in = 0;
10438                  strm.avail_in = strm.input.length;
10439                  do {
10440                    if (strm.avail_out === 0) {
10441                      strm.output = new utils.Buf8(chunkSize);
10442                      strm.next_out = 0;
10443                      strm.avail_out = chunkSize;
10444                    }
10445                    status = zlib_inflate.inflate(
10446                      strm,
10447                      c2.Z_NO_FLUSH
10448                    );
10449                    if (status === c2.Z_NEED_DICT && dictionary) {
10450                      status = zlib_inflate.inflateSetDictionary(
10451                        this.strm,
10452                        dictionary
10453                      );
10454                    }
10455                    if (status === c2.Z_BUF_ERROR && allowBufError === true) {
10456                      status = c2.Z_OK;
10457                      allowBufError = false;
10458                    }
10459                    if (status !== c2.Z_STREAM_END && status !== c2.Z_OK) {
10460                      this.onEnd(status);
10461                      this.ended = true;
10462                      return false;
10463                    }
10464                    if (strm.next_out) {
10465                      if (strm.avail_out === 0 || status === c2.Z_STREAM_END || strm.avail_in === 0 && (_mode === c2.Z_FINISH || _mode === c2.Z_SYNC_FLUSH)) {
10466                        if (this.options.to === "string") {
10467                          next_out_utf8 = strings.utf8border(
10468                            strm.output,
10469                            strm.next_out
10470                          );
10471                          tail = strm.next_out - next_out_utf8;
10472                          utf8str = strings.buf2string(
10473                            strm.output,
10474                            next_out_utf8
10475                          );
10476                          strm.next_out = tail;
10477                          strm.avail_out = chunkSize - tail;
10478                          if (tail) {
10479                            utils.arraySet(
10480                              strm.output,
10481                              strm.output,
10482                              next_out_utf8,
10483                              tail,
10484                              0
10485                            );
10486                          }
10487                          this.onData(utf8str);
10488                        } else {
10489                          this.onData(
10490                            utils.shrinkBuf(
10491                              strm.output,
10492                              strm.next_out
10493                            )
10494                          );
10495                        }
10496                      }
10497                    }
10498                    if (strm.avail_in === 0 && strm.avail_out === 0) {
10499                      allowBufError = true;
10500                    }
10501                  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c2.Z_STREAM_END);
10502                  if (status === c2.Z_STREAM_END) {
10503                    _mode = c2.Z_FINISH;
10504                  }
10505                  if (_mode === c2.Z_FINISH) {
10506                    status = zlib_inflate.inflateEnd(this.strm);
10507                    this.onEnd(status);
10508                    this.ended = true;
10509                    return status === c2.Z_OK;
10510                  }
10511                  if (_mode === c2.Z_SYNC_FLUSH) {
10512                    this.onEnd(c2.Z_OK);
10513                    strm.avail_out = 0;
10514                    return true;
10515                  }
10516                  return true;
10517                };
10518                Inflate.prototype.onData = function(chunk) {
10519                  this.chunks.push(chunk);
10520                };
10521                Inflate.prototype.onEnd = function(status) {
10522                  if (status === c2.Z_OK) {
10523                    if (this.options.to === "string") {
10524                      this.result = this.chunks.join("");
10525                    } else {
10526                      this.result = utils.flattenChunks(
10527                        this.chunks
10528                      );
10529                    }
10530                  }
10531                  this.chunks = [];
10532                  this.err = status;
10533                  this.msg = this.strm.msg;
10534                };
10535                function inflate(input, options) {
10536                  var inflator = new Inflate(options);
10537                  inflator.push(input, true);
10538                  if (inflator.err) {
10539                    throw inflator.msg || msg[inflator.err];
10540                  }
10541                  return inflator.result;
10542                }
10543                function inflateRaw(input, options) {
10544                  options = options || {};
10545                  options.raw = true;
10546                  return inflate(input, options);
10547                }
10548                exports3.Inflate = Inflate;
10549                exports3.inflate = inflate;
10550                exports3.inflateRaw = inflateRaw;
10551                exports3.ungzip = inflate;
10552              },
10553              {
10554                "./utils/common": 1,
10555                "./utils/strings": 2,
10556                "./zlib/constants": 4,
10557                "./zlib/gzheader": 6,
10558                "./zlib/inflate": 8,
10559                "./zlib/messages": 10,
10560                "./zlib/zstream": 11
10561              }
10562            ]
10563          },
10564          {},
10565          []
10566        )("/lib/inflate.js");
10567      });
10568    }
10569  });
10570  var inflate_default = require_inflate();
10571  
10572  // packages/global-styles-ui/build-module/font-library/lib/lib-font.browser.js
10573  var fetchFunction = globalThis.fetch;
10574  var Event2 = class {
10575    constructor(type, detail = {}, msg) {
10576      this.type = type;
10577      this.detail = detail;
10578      this.msg = msg;
10579      Object.defineProperty(this, `__mayPropagate`, {
10580        enumerable: false,
10581        writable: true
10582      });
10583      this.__mayPropagate = true;
10584    }
10585    preventDefault() {
10586    }
10587    stopPropagation() {
10588      this.__mayPropagate = false;
10589    }
10590    valueOf() {
10591      return this;
10592    }
10593    toString() {
10594      return this.msg ? `[$this.type} event]: $this.msg}` : `[$this.type} event]`;
10595    }
10596  };
10597  var EventManager = class {
10598    constructor() {
10599      this.listeners = {};
10600    }
10601    addEventListener(type, listener, useCapture) {
10602      let bin = this.listeners[type] || [];
10603      if (useCapture) bin.unshift(listener);
10604      else bin.push(listener);
10605      this.listeners[type] = bin;
10606    }
10607    removeEventListener(type, listener) {
10608      let bin = this.listeners[type] || [];
10609      let pos = bin.findIndex((e2) => e2 === listener);
10610      if (pos > -1) {
10611        bin.splice(pos, 1);
10612        this.listeners[type] = bin;
10613      }
10614    }
10615    dispatch(event) {
10616      let bin = this.listeners[event.type];
10617      if (bin) {
10618        for (let l2 = 0, e2 = bin.length; l2 < e2; l2++) {
10619          if (!event.__mayPropagate) break;
10620          bin[l2](event);
10621        }
10622      }
10623    }
10624  };
10625  var startDate = (/* @__PURE__ */ new Date(`1904-01-01T00:00:00+0000`)).getTime();
10626  function asText(data) {
10627    return Array.from(data).map((v2) => String.fromCharCode(v2)).join(``);
10628  }
10629  var Parser = class {
10630    constructor(dict, dataview, name2) {
10631      this.name = (name2 || dict.tag || ``).trim();
10632      this.length = dict.length;
10633      this.start = dict.offset;
10634      this.offset = 0;
10635      this.data = dataview;
10636      [
10637        `getInt8`,
10638        `getUint8`,
10639        `getInt16`,
10640        `getUint16`,
10641        `getInt32`,
10642        `getUint32`,
10643        `getBigInt64`,
10644        `getBigUint64`
10645      ].forEach((name3) => {
10646        let fn = name3.replace(/get(Big)?/, "").toLowerCase();
10647        let increment = parseInt(name3.replace(/[^\d]/g, "")) / 8;
10648        Object.defineProperty(this, fn, {
10649          get: () => this.getValue(name3, increment)
10650        });
10651      });
10652    }
10653    get currentPosition() {
10654      return this.start + this.offset;
10655    }
10656    set currentPosition(position) {
10657      this.start = position;
10658      this.offset = 0;
10659    }
10660    skip(n2 = 0, bits = 8) {
10661      this.offset += n2 * bits / 8;
10662    }
10663    getValue(type, increment) {
10664      let pos = this.start + this.offset;
10665      this.offset += increment;
10666      try {
10667        return this.data[type](pos);
10668      } catch (e2) {
10669        console.error(`parser`, type, increment, this);
10670        console.error(`parser`, this.start, this.offset);
10671        throw e2;
10672      }
10673    }
10674    flags(n2) {
10675      if (n2 === 8 || n2 === 16 || n2 === 32 || n2 === 64) {
10676        return this[`uint$n2}`].toString(2).padStart(n2, 0).split(``).map((v2) => v2 === "1");
10677      }
10678      console.error(
10679        `Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long`
10680      );
10681      console.trace();
10682    }
10683    get tag() {
10684      const t3 = this.uint32;
10685      return asText([
10686        t3 >> 24 & 255,
10687        t3 >> 16 & 255,
10688        t3 >> 8 & 255,
10689        t3 & 255
10690      ]);
10691    }
10692    get fixed() {
10693      let major = this.int16;
10694      let minor = Math.round(1e3 * this.uint16 / 65356);
10695      return major + minor / 1e3;
10696    }
10697    get legacyFixed() {
10698      let major = this.uint16;
10699      let minor = this.uint16.toString(16).padStart(4, 0);
10700      return parseFloat(`$major}.$minor}`);
10701    }
10702    get uint24() {
10703      return (this.uint8 << 16) + (this.uint8 << 8) + this.uint8;
10704    }
10705    get uint128() {
10706      let value = 0;
10707      for (let i2 = 0; i2 < 5; i2++) {
10708        let byte = this.uint8;
10709        value = value * 128 + (byte & 127);
10710        if (byte < 128) break;
10711      }
10712      return value;
10713    }
10714    get longdatetime() {
10715      return new Date(startDate + 1e3 * parseInt(this.int64.toString()));
10716    }
10717    get fword() {
10718      return this.int16;
10719    }
10720    get ufword() {
10721      return this.uint16;
10722    }
10723    get Offset16() {
10724      return this.uint16;
10725    }
10726    get Offset32() {
10727      return this.uint32;
10728    }
10729    get F2DOT14() {
10730      const bits = p.uint16;
10731      const integer = [0, 1, -2, -1][bits >> 14];
10732      const fraction = bits & 16383;
10733      return integer + fraction / 16384;
10734    }
10735    verifyLength() {
10736      if (this.offset != this.length) {
10737        console.error(
10738          `unexpected parsed table size ($this.offset}) for "$this.name}" (expected $this.length})`
10739        );
10740      }
10741    }
10742    readBytes(n2 = 0, position = 0, bits = 8, signed = false) {
10743      n2 = n2 || this.length;
10744      if (n2 === 0) return [];
10745      if (position) this.currentPosition = position;
10746      const fn = `$signed ? `` : `u`}int$bits}`, slice = [];
10747      while (n2--) slice.push(this[fn]);
10748      return slice;
10749    }
10750  };
10751  var ParsedData = class {
10752    constructor(parser) {
10753      const pGetter = { enumerable: false, get: () => parser };
10754      Object.defineProperty(this, `parser`, pGetter);
10755      const start = parser.currentPosition;
10756      const startGetter = { enumerable: false, get: () => start };
10757      Object.defineProperty(this, `start`, startGetter);
10758    }
10759    load(struct) {
10760      Object.keys(struct).forEach((p22) => {
10761        let props = Object.getOwnPropertyDescriptor(struct, p22);
10762        if (props.get) {
10763          this[p22] = props.get.bind(this);
10764        } else if (props.value !== void 0) {
10765          this[p22] = props.value;
10766        }
10767      });
10768      if (this.parser.length) {
10769        this.parser.verifyLength();
10770      }
10771    }
10772  };
10773  var SimpleTable = class extends ParsedData {
10774    constructor(dict, dataview, name2) {
10775      const { parser, start } = super(
10776        new Parser(dict, dataview, name2)
10777      );
10778      const pGetter = { enumerable: false, get: () => parser };
10779      Object.defineProperty(this, `p`, pGetter);
10780      const startGetter = { enumerable: false, get: () => start };
10781      Object.defineProperty(this, `tableStart`, startGetter);
10782    }
10783  };
10784  function lazy$1(object, property, getter) {
10785    let val;
10786    Object.defineProperty(object, property, {
10787      get: () => {
10788        if (val) return val;
10789        val = getter();
10790        return val;
10791      },
10792      enumerable: true
10793    });
10794  }
10795  var SFNT = class extends SimpleTable {
10796    constructor(font2, dataview, createTable2) {
10797      const { p: p22 } = super({ offset: 0, length: 12 }, dataview, `sfnt`);
10798      this.version = p22.uint32;
10799      this.numTables = p22.uint16;
10800      this.searchRange = p22.uint16;
10801      this.entrySelector = p22.uint16;
10802      this.rangeShift = p22.uint16;
10803      p22.verifyLength();
10804      this.directory = [...new Array(this.numTables)].map(
10805        (_) => new TableRecord(p22)
10806      );
10807      this.tables = {};
10808      this.directory.forEach((entry) => {
10809        const getter = () => createTable2(
10810          this.tables,
10811          {
10812            tag: entry.tag,
10813            offset: entry.offset,
10814            length: entry.length
10815          },
10816          dataview
10817        );
10818        lazy$1(this.tables, entry.tag.trim(), getter);
10819      });
10820    }
10821  };
10822  var TableRecord = class {
10823    constructor(p22) {
10824      this.tag = p22.tag;
10825      this.checksum = p22.uint32;
10826      this.offset = p22.uint32;
10827      this.length = p22.uint32;
10828    }
10829  };
10830  var gzipDecode = inflate_default.inflate || void 0;
10831  var nativeGzipDecode = void 0;
10832  var WOFF$1 = class extends SimpleTable {
10833    constructor(font2, dataview, createTable2) {
10834      const { p: p22 } = super({ offset: 0, length: 44 }, dataview, `woff`);
10835      this.signature = p22.tag;
10836      this.flavor = p22.uint32;
10837      this.length = p22.uint32;
10838      this.numTables = p22.uint16;
10839      p22.uint16;
10840      this.totalSfntSize = p22.uint32;
10841      this.majorVersion = p22.uint16;
10842      this.minorVersion = p22.uint16;
10843      this.metaOffset = p22.uint32;
10844      this.metaLength = p22.uint32;
10845      this.metaOrigLength = p22.uint32;
10846      this.privOffset = p22.uint32;
10847      this.privLength = p22.uint32;
10848      p22.verifyLength();
10849      this.directory = [...new Array(this.numTables)].map(
10850        (_) => new WoffTableDirectoryEntry(p22)
10851      );
10852      buildWoffLazyLookups(this, dataview, createTable2);
10853    }
10854  };
10855  var WoffTableDirectoryEntry = class {
10856    constructor(p22) {
10857      this.tag = p22.tag;
10858      this.offset = p22.uint32;
10859      this.compLength = p22.uint32;
10860      this.origLength = p22.uint32;
10861      this.origChecksum = p22.uint32;
10862    }
10863  };
10864  function buildWoffLazyLookups(woff, dataview, createTable2) {
10865    woff.tables = {};
10866    woff.directory.forEach((entry) => {
10867      lazy$1(woff.tables, entry.tag.trim(), () => {
10868        let offset = 0;
10869        let view = dataview;
10870        if (entry.compLength !== entry.origLength) {
10871          const data = dataview.buffer.slice(
10872            entry.offset,
10873            entry.offset + entry.compLength
10874          );
10875          let unpacked;
10876          if (gzipDecode) {
10877            unpacked = gzipDecode(new Uint8Array(data));
10878          } else if (nativeGzipDecode) {
10879            unpacked = nativeGzipDecode(new Uint8Array(data));
10880          } else {
10881            const msg = `no brotli decoder available to decode WOFF2 font`;
10882            if (font.onerror) font.onerror(msg);
10883            throw new Error(msg);
10884          }
10885          view = new DataView(unpacked.buffer);
10886        } else {
10887          offset = entry.offset;
10888        }
10889        return createTable2(
10890          woff.tables,
10891          { tag: entry.tag, offset, length: entry.origLength },
10892          view
10893        );
10894      });
10895    });
10896  }
10897  var brotliDecode = unbrotli_default;
10898  var nativeBrotliDecode = void 0;
10899  var WOFF2$1 = class extends SimpleTable {
10900    constructor(font2, dataview, createTable2) {
10901      const { p: p22 } = super({ offset: 0, length: 48 }, dataview, `woff2`);
10902      this.signature = p22.tag;
10903      this.flavor = p22.uint32;
10904      this.length = p22.uint32;
10905      this.numTables = p22.uint16;
10906      p22.uint16;
10907      this.totalSfntSize = p22.uint32;
10908      this.totalCompressedSize = p22.uint32;
10909      this.majorVersion = p22.uint16;
10910      this.minorVersion = p22.uint16;
10911      this.metaOffset = p22.uint32;
10912      this.metaLength = p22.uint32;
10913      this.metaOrigLength = p22.uint32;
10914      this.privOffset = p22.uint32;
10915      this.privLength = p22.uint32;
10916      p22.verifyLength();
10917      this.directory = [...new Array(this.numTables)].map(
10918        (_) => new Woff2TableDirectoryEntry(p22)
10919      );
10920      let dictOffset = p22.currentPosition;
10921      this.directory[0].offset = 0;
10922      this.directory.forEach((e2, i2) => {
10923        let next = this.directory[i2 + 1];
10924        if (next) {
10925          next.offset = e2.offset + (e2.transformLength !== void 0 ? e2.transformLength : e2.origLength);
10926        }
10927      });
10928      let decoded;
10929      let buffer = dataview.buffer.slice(dictOffset);
10930      if (brotliDecode) {
10931        decoded = brotliDecode(new Uint8Array(buffer));
10932      } else if (nativeBrotliDecode) {
10933        decoded = new Uint8Array(nativeBrotliDecode(buffer));
10934      } else {
10935        const msg = `no brotli decoder available to decode WOFF2 font`;
10936        if (font2.onerror) font2.onerror(msg);
10937        throw new Error(msg);
10938      }
10939      buildWoff2LazyLookups(this, decoded, createTable2);
10940    }
10941  };
10942  var Woff2TableDirectoryEntry = class {
10943    constructor(p22) {
10944      this.flags = p22.uint8;
10945      const tagNumber = this.tagNumber = this.flags & 63;
10946      if (tagNumber === 63) {
10947        this.tag = p22.tag;
10948      } else {
10949        this.tag = getWOFF2Tag(tagNumber);
10950      }
10951      const transformVersion = this.transformVersion = (this.flags & 192) >> 6;
10952      let hasTransforms = transformVersion !== 0;
10953      if (this.tag === `glyf` || this.tag === `loca`) {
10954        hasTransforms = this.transformVersion !== 3;
10955      }
10956      this.origLength = p22.uint128;
10957      if (hasTransforms) {
10958        this.transformLength = p22.uint128;
10959      }
10960    }
10961  };
10962  function buildWoff2LazyLookups(woff2, decoded, createTable2) {
10963    woff2.tables = {};
10964    woff2.directory.forEach((entry) => {
10965      lazy$1(woff2.tables, entry.tag.trim(), () => {
10966        const start = entry.offset;
10967        const end = start + (entry.transformLength ? entry.transformLength : entry.origLength);
10968        const data = new DataView(decoded.slice(start, end).buffer);
10969        try {
10970          return createTable2(
10971            woff2.tables,
10972            { tag: entry.tag, offset: 0, length: entry.origLength },
10973            data
10974          );
10975        } catch (e2) {
10976          console.error(e2);
10977        }
10978      });
10979    });
10980  }
10981  function getWOFF2Tag(flag) {
10982    return [
10983      `cmap`,
10984      `head`,
10985      `hhea`,
10986      `hmtx`,
10987      `maxp`,
10988      `name`,
10989      `OS/2`,
10990      `post`,
10991      `cvt `,
10992      `fpgm`,
10993      `glyf`,
10994      `loca`,
10995      `prep`,
10996      `CFF `,
10997      `VORG`,
10998      `EBDT`,
10999      `EBLC`,
11000      `gasp`,
11001      `hdmx`,
11002      `kern`,
11003      `LTSH`,
11004      `PCLT`,
11005      `VDMX`,
11006      `vhea`,
11007      `vmtx`,
11008      `BASE`,
11009      `GDEF`,
11010      `GPOS`,
11011      `GSUB`,
11012      `EBSC`,
11013      `JSTF`,
11014      `MATH`,
11015      `CBDT`,
11016      `CBLC`,
11017      `COLR`,
11018      `CPAL`,
11019      `SVG `,
11020      `sbix`,
11021      `acnt`,
11022      `avar`,
11023      `bdat`,
11024      `bloc`,
11025      `bsln`,
11026      `cvar`,
11027      `fdsc`,
11028      `feat`,
11029      `fmtx`,
11030      `fvar`,
11031      `gvar`,
11032      `hsty`,
11033      `just`,
11034      `lcar`,
11035      `mort`,
11036      `morx`,
11037      `opbd`,
11038      `prop`,
11039      `trak`,
11040      `Zapf`,
11041      `Silf`,
11042      `Glat`,
11043      `Gloc`,
11044      `Feat`,
11045      `Sill`
11046    ][flag & 63];
11047  }
11048  var tableClasses = {};
11049  var tableClassesLoaded = false;
11050  Promise.all([
11051    Promise.resolve().then(function() {
11052      return cmap$1;
11053    }),
11054    Promise.resolve().then(function() {
11055      return head$1;
11056    }),
11057    Promise.resolve().then(function() {
11058      return hhea$1;
11059    }),
11060    Promise.resolve().then(function() {
11061      return hmtx$1;
11062    }),
11063    Promise.resolve().then(function() {
11064      return maxp$1;
11065    }),
11066    Promise.resolve().then(function() {
11067      return name$1;
11068    }),
11069    Promise.resolve().then(function() {
11070      return OS2$1;
11071    }),
11072    Promise.resolve().then(function() {
11073      return post$1;
11074    }),
11075    Promise.resolve().then(function() {
11076      return BASE$1;
11077    }),
11078    Promise.resolve().then(function() {
11079      return GDEF$1;
11080    }),
11081    Promise.resolve().then(function() {
11082      return GSUB$1;
11083    }),
11084    Promise.resolve().then(function() {
11085      return GPOS$1;
11086    }),
11087    Promise.resolve().then(function() {
11088      return SVG$1;
11089    }),
11090    Promise.resolve().then(function() {
11091      return fvar$1;
11092    }),
11093    Promise.resolve().then(function() {
11094      return cvt$1;
11095    }),
11096    Promise.resolve().then(function() {
11097      return fpgm$1;
11098    }),
11099    Promise.resolve().then(function() {
11100      return gasp$1;
11101    }),
11102    Promise.resolve().then(function() {
11103      return glyf$1;
11104    }),
11105    Promise.resolve().then(function() {
11106      return loca$1;
11107    }),
11108    Promise.resolve().then(function() {
11109      return prep$1;
11110    }),
11111    Promise.resolve().then(function() {
11112      return CFF$1;
11113    }),
11114    Promise.resolve().then(function() {
11115      return CFF2$1;
11116    }),
11117    Promise.resolve().then(function() {
11118      return VORG$1;
11119    }),
11120    Promise.resolve().then(function() {
11121      return EBLC$1;
11122    }),
11123    Promise.resolve().then(function() {
11124      return EBDT$1;
11125    }),
11126    Promise.resolve().then(function() {
11127      return EBSC$1;
11128    }),
11129    Promise.resolve().then(function() {
11130      return CBLC$1;
11131    }),
11132    Promise.resolve().then(function() {
11133      return CBDT$1;
11134    }),
11135    Promise.resolve().then(function() {
11136      return sbix$1;
11137    }),
11138    Promise.resolve().then(function() {
11139      return COLR$1;
11140    }),
11141    Promise.resolve().then(function() {
11142      return CPAL$1;
11143    }),
11144    Promise.resolve().then(function() {
11145      return DSIG$1;
11146    }),
11147    Promise.resolve().then(function() {
11148      return hdmx$1;
11149    }),
11150    Promise.resolve().then(function() {
11151      return kern$1;
11152    }),
11153    Promise.resolve().then(function() {
11154      return LTSH$1;
11155    }),
11156    Promise.resolve().then(function() {
11157      return MERG$1;
11158    }),
11159    Promise.resolve().then(function() {
11160      return meta$1;
11161    }),
11162    Promise.resolve().then(function() {
11163      return PCLT$1;
11164    }),
11165    Promise.resolve().then(function() {
11166      return VDMX$1;
11167    }),
11168    Promise.resolve().then(function() {
11169      return vhea$1;
11170    }),
11171    Promise.resolve().then(function() {
11172      return vmtx$1;
11173    })
11174  ]).then((data) => {
11175    data.forEach((e2) => {
11176      let name2 = Object.keys(e2)[0];
11177      tableClasses[name2] = e2[name2];
11178    });
11179    tableClassesLoaded = true;
11180  });
11181  function createTable(tables, dict, dataview) {
11182    let name2 = dict.tag.replace(/[^\w\d]/g, ``);
11183    let Type = tableClasses[name2];
11184    if (Type) return new Type(dict, dataview, tables);
11185    console.warn(
11186      `lib-font has no definition for $name2}. The table was skipped.`
11187    );
11188    return {};
11189  }
11190  function loadTableClasses() {
11191    let count = 0;
11192    function checkLoaded(resolve, reject) {
11193      if (!tableClassesLoaded) {
11194        if (count > 10) {
11195          return reject(new Error(`loading took too long`));
11196        }
11197        count++;
11198        return setTimeout(() => checkLoaded(resolve), 250);
11199      }
11200      resolve(createTable);
11201    }
11202    return new Promise((resolve, reject) => checkLoaded(resolve));
11203  }
11204  function getFontCSSFormat(path, errorOnStyle) {
11205    let pos = path.lastIndexOf(`.`);
11206    let ext = (path.substring(pos + 1) || ``).toLowerCase();
11207    let format = {
11208      ttf: `truetype`,
11209      otf: `opentype`,
11210      woff: `woff`,
11211      woff2: `woff2`
11212    }[ext];
11213    if (format) return format;
11214    let msg = {
11215      eot: `The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.`,
11216      svg: `The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.`,
11217      fon: `The .fon format is not supported: this is an ancient Windows bitmap font format.`,
11218      ttc: `Based on the current CSS specification, font collections are not (yet?) supported.`
11219    }[ext];
11220    if (!msg) msg = `$path} is not a known webfont format.`;
11221    if (errorOnStyle) {
11222      throw new Error(msg);
11223    } else {
11224      console.warn(`Could not load font: $msg}`);
11225    }
11226  }
11227  async function setupFontFace(name2, url, options = {}) {
11228    if (!globalThis.document) return;
11229    let format = getFontCSSFormat(url, options.errorOnStyle);
11230    if (!format) return;
11231    let style = document.createElement(`style`);
11232    style.className = `injected-by-Font-js`;
11233    let rules = [];
11234    if (options.styleRules) {
11235      rules = Object.entries(options.styleRules).map(
11236        ([key, value]) => `$key}: $value};`
11237      );
11238    }
11239    style.textContent = `
11240  @font-face {
11241      font-family: "$name2}";
11242      $rules.join(
11243      `
11244      `
11245    )}
11246      src: url("$url}") format("$format}");
11247  }`;
11248    globalThis.document.head.appendChild(style);
11249    return style;
11250  }
11251  var TTF = [0, 1, 0, 0];
11252  var OTF = [79, 84, 84, 79];
11253  var WOFF = [119, 79, 70, 70];
11254  var WOFF2 = [119, 79, 70, 50];
11255  function match(ar1, ar2) {
11256    if (ar1.length !== ar2.length) return;
11257    for (let i2 = 0; i2 < ar1.length; i2++) {
11258      if (ar1[i2] !== ar2[i2]) return;
11259    }
11260    return true;
11261  }
11262  function validFontFormat(dataview) {
11263    const LEAD_BYTES = [
11264      dataview.getUint8(0),
11265      dataview.getUint8(1),
11266      dataview.getUint8(2),
11267      dataview.getUint8(3)
11268    ];
11269    if (match(LEAD_BYTES, TTF) || match(LEAD_BYTES, OTF)) return `SFNT`;
11270    if (match(LEAD_BYTES, WOFF)) return `WOFF`;
11271    if (match(LEAD_BYTES, WOFF2)) return `WOFF2`;
11272  }
11273  function checkFetchResponseStatus(response) {
11274    if (!response.ok) {
11275      throw new Error(
11276        `HTTP $response.status} - $response.statusText}`
11277      );
11278    }
11279    return response;
11280  }
11281  var Font = class extends EventManager {
11282    constructor(name2, options = {}) {
11283      super();
11284      this.name = name2;
11285      this.options = options;
11286      this.metrics = false;
11287    }
11288    get src() {
11289      return this.__src;
11290    }
11291    set src(src) {
11292      this.__src = src;
11293      (async () => {
11294        if (globalThis.document && !this.options.skipStyleSheet) {
11295          await setupFontFace(this.name, src, this.options);
11296        }
11297        this.loadFont(src);
11298      })();
11299    }
11300    async loadFont(url, filename) {
11301      fetch(url).then(
11302        (response) => checkFetchResponseStatus(response) && response.arrayBuffer()
11303      ).then(
11304        (buffer) => this.fromDataBuffer(buffer, filename || url)
11305      ).catch((err) => {
11306        const evt = new Event2(
11307          `error`,
11308          err,
11309          `Failed to load font at $filename || url}`
11310        );
11311        this.dispatch(evt);
11312        if (this.onerror) this.onerror(evt);
11313      });
11314    }
11315    async fromDataBuffer(buffer, filenameOrUrL) {
11316      this.fontData = new DataView(buffer);
11317      let type = validFontFormat(this.fontData);
11318      if (!type) {
11319        throw new Error(
11320          `$filenameOrUrL} is either an unsupported font format, or not a font at all.`
11321        );
11322      }
11323      await this.parseBasicData(type);
11324      const evt = new Event2("load", { font: this });
11325      this.dispatch(evt);
11326      if (this.onload) this.onload(evt);
11327    }
11328    async parseBasicData(type) {
11329      return loadTableClasses().then((createTable2) => {
11330        if (type === `SFNT`) {
11331          this.opentype = new SFNT(this, this.fontData, createTable2);
11332        }
11333        if (type === `WOFF`) {
11334          this.opentype = new WOFF$1(this, this.fontData, createTable2);
11335        }
11336        if (type === `WOFF2`) {
11337          this.opentype = new WOFF2$1(this, this.fontData, createTable2);
11338        }
11339        return this.opentype;
11340      });
11341    }
11342    getGlyphId(char) {
11343      return this.opentype.tables.cmap.getGlyphId(char);
11344    }
11345    reverse(glyphid) {
11346      return this.opentype.tables.cmap.reverse(glyphid);
11347    }
11348    supports(char) {
11349      return this.getGlyphId(char) !== 0;
11350    }
11351    supportsVariation(variation) {
11352      return this.opentype.tables.cmap.supportsVariation(variation) !== false;
11353    }
11354    measureText(text, size = 16) {
11355      if (this.__unloaded)
11356        throw new Error(
11357          "Cannot measure text: font was unloaded. Please reload before calling measureText()"
11358        );
11359      let d2 = document.createElement("div");
11360      d2.textContent = text;
11361      d2.style.fontFamily = this.name;
11362      d2.style.fontSize = `$size}px`;
11363      d2.style.color = `transparent`;
11364      d2.style.background = `transparent`;
11365      d2.style.top = `0`;
11366      d2.style.left = `0`;
11367      d2.style.position = `absolute`;
11368      document.body.appendChild(d2);
11369      let bbox = d2.getBoundingClientRect();
11370      document.body.removeChild(d2);
11371      const OS22 = this.opentype.tables["OS/2"];
11372      bbox.fontSize = size;
11373      bbox.ascender = OS22.sTypoAscender;
11374      bbox.descender = OS22.sTypoDescender;
11375      return bbox;
11376    }
11377    unload() {
11378      if (this.styleElement.parentNode) {
11379        this.styleElement.parentNode.removeElement(this.styleElement);
11380        const evt = new Event2("unload", { font: this });
11381        this.dispatch(evt);
11382        if (this.onunload) this.onunload(evt);
11383      }
11384      this._unloaded = true;
11385    }
11386    load() {
11387      if (this.__unloaded) {
11388        delete this.__unloaded;
11389        document.head.appendChild(this.styleElement);
11390        const evt = new Event2("load", { font: this });
11391        this.dispatch(evt);
11392        if (this.onload) this.onload(evt);
11393      }
11394    }
11395  };
11396  globalThis.Font = Font;
11397  var Subtable = class extends ParsedData {
11398    constructor(p22, plaformID, encodingID) {
11399      super(p22);
11400      this.plaformID = plaformID;
11401      this.encodingID = encodingID;
11402    }
11403  };
11404  var Format0 = class extends Subtable {
11405    constructor(p22, platformID, encodingID) {
11406      super(p22, platformID, encodingID);
11407      this.format = 0;
11408      this.length = p22.uint16;
11409      this.language = p22.uint16;
11410      this.glyphIdArray = [...new Array(256)].map((_) => p22.uint8);
11411    }
11412    supports(charCode) {
11413      if (charCode.charCodeAt) {
11414        charCode = -1;
11415        console.warn(
11416          `supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.`
11417        );
11418      }
11419      return 0 <= charCode && charCode <= 255;
11420    }
11421    reverse(glyphID) {
11422      console.warn(`reverse not implemented for cmap subtable format 0`);
11423      return {};
11424    }
11425    getSupportedCharCodes() {
11426      return [{ start: 1, end: 256 }];
11427    }
11428  };
11429  var Format2 = class extends Subtable {
11430    constructor(p22, platformID, encodingID) {
11431      super(p22, platformID, encodingID);
11432      this.format = 2;
11433      this.length = p22.uint16;
11434      this.language = p22.uint16;
11435      this.subHeaderKeys = [...new Array(256)].map((_) => p22.uint16);
11436      const subHeaderCount = Math.max(...this.subHeaderKeys);
11437      const subHeaderOffset = p22.currentPosition;
11438      lazy$1(this, `subHeaders`, () => {
11439        p22.currentPosition = subHeaderOffset;
11440        return [...new Array(subHeaderCount)].map(
11441          (_) => new SubHeader(p22)
11442        );
11443      });
11444      const glyphIndexOffset = subHeaderOffset + subHeaderCount * 8;
11445      lazy$1(this, `glyphIndexArray`, () => {
11446        p22.currentPosition = glyphIndexOffset;
11447        return [...new Array(subHeaderCount)].map((_) => p22.uint16);
11448      });
11449    }
11450    supports(charCode) {
11451      if (charCode.charCodeAt) {
11452        charCode = -1;
11453        console.warn(
11454          `supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented.`
11455        );
11456      }
11457      const low = charCode && 255;
11458      const high = charCode && 65280;
11459      const subHeaderKey = this.subHeaders[high];
11460      const subheader = this.subHeaders[subHeaderKey];
11461      const first = subheader.firstCode;
11462      const last = first + subheader.entryCount;
11463      return first <= low && low <= last;
11464    }
11465    reverse(glyphID) {
11466      console.warn(`reverse not implemented for cmap subtable format 2`);
11467      return {};
11468    }
11469    getSupportedCharCodes(preservePropNames = false) {
11470      if (preservePropNames) {
11471        return this.subHeaders.map((h2) => ({
11472          firstCode: h2.firstCode,
11473          lastCode: h2.lastCode
11474        }));
11475      }
11476      return this.subHeaders.map((h2) => ({
11477        start: h2.firstCode,
11478        end: h2.lastCode
11479      }));
11480    }
11481  };
11482  var SubHeader = class {
11483    constructor(p22) {
11484      this.firstCode = p22.uint16;
11485      this.entryCount = p22.uint16;
11486      this.lastCode = this.first + this.entryCount;
11487      this.idDelta = p22.int16;
11488      this.idRangeOffset = p22.uint16;
11489    }
11490  };
11491  var Format4 = class extends Subtable {
11492    constructor(p22, platformID, encodingID) {
11493      super(p22, platformID, encodingID);
11494      this.format = 4;
11495      this.length = p22.uint16;
11496      this.language = p22.uint16;
11497      this.segCountX2 = p22.uint16;
11498      this.segCount = this.segCountX2 / 2;
11499      this.searchRange = p22.uint16;
11500      this.entrySelector = p22.uint16;
11501      this.rangeShift = p22.uint16;
11502      const endCodePosition = p22.currentPosition;
11503      lazy$1(
11504        this,
11505        `endCode`,
11506        () => p22.readBytes(this.segCount, endCodePosition, 16)
11507      );
11508      const startCodePosition = endCodePosition + 2 + this.segCountX2;
11509      lazy$1(
11510        this,
11511        `startCode`,
11512        () => p22.readBytes(this.segCount, startCodePosition, 16)
11513      );
11514      const idDeltaPosition = startCodePosition + this.segCountX2;
11515      lazy$1(
11516        this,
11517        `idDelta`,
11518        () => p22.readBytes(this.segCount, idDeltaPosition, 16, true)
11519      );
11520      const idRangePosition = idDeltaPosition + this.segCountX2;
11521      lazy$1(
11522        this,
11523        `idRangeOffset`,
11524        () => p22.readBytes(this.segCount, idRangePosition, 16)
11525      );
11526      const glyphIdArrayPosition = idRangePosition + this.segCountX2;
11527      const glyphIdArrayLength = this.length - (glyphIdArrayPosition - this.tableStart);
11528      lazy$1(
11529        this,
11530        `glyphIdArray`,
11531        () => p22.readBytes(glyphIdArrayLength, glyphIdArrayPosition, 16)
11532      );
11533      lazy$1(
11534        this,
11535        `segments`,
11536        () => this.buildSegments(idRangePosition, glyphIdArrayPosition, p22)
11537      );
11538    }
11539    buildSegments(idRangePosition, glyphIdArrayPosition, p22) {
11540      const build = (_, i2) => {
11541        let startCode = this.startCode[i2], endCode = this.endCode[i2], idDelta = this.idDelta[i2], idRangeOffset = this.idRangeOffset[i2], idRangeOffsetPointer = idRangePosition + 2 * i2, glyphIDs = [];
11542        if (idRangeOffset === 0) {
11543          for (let i22 = startCode + idDelta, e2 = endCode + idDelta; i22 <= e2; i22++) {
11544            glyphIDs.push(i22);
11545          }
11546        } else {
11547          for (let i22 = 0, e2 = endCode - startCode; i22 <= e2; i22++) {
11548            p22.currentPosition = idRangeOffsetPointer + idRangeOffset + i22 * 2;
11549            glyphIDs.push(p22.uint16);
11550          }
11551        }
11552        return {
11553          startCode,
11554          endCode,
11555          idDelta,
11556          idRangeOffset,
11557          glyphIDs
11558        };
11559      };
11560      return [...new Array(this.segCount)].map(build);
11561    }
11562    reverse(glyphID) {
11563      let s2 = this.segments.find((v2) => v2.glyphIDs.includes(glyphID));
11564      if (!s2) return {};
11565      const code = s2.startCode + s2.glyphIDs.indexOf(glyphID);
11566      return { code, unicode: String.fromCodePoint(code) };
11567    }
11568    getGlyphId(charCode) {
11569      if (charCode.charCodeAt) charCode = charCode.charCodeAt(0);
11570      if (55296 <= charCode && charCode <= 57343) return 0;
11571      if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535)
11572        return 0;
11573      let segment = this.segments.find(
11574        (s2) => s2.startCode <= charCode && charCode <= s2.endCode
11575      );
11576      if (!segment) return 0;
11577      return segment.glyphIDs[charCode - segment.startCode];
11578    }
11579    supports(charCode) {
11580      return this.getGlyphId(charCode) !== 0;
11581    }
11582    getSupportedCharCodes(preservePropNames = false) {
11583      if (preservePropNames) return this.segments;
11584      return this.segments.map((v2) => ({
11585        start: v2.startCode,
11586        end: v2.endCode
11587      }));
11588    }
11589  };
11590  var Format6 = class extends Subtable {
11591    constructor(p22, platformID, encodingID) {
11592      super(p22, platformID, encodingID);
11593      this.format = 6;
11594      this.length = p22.uint16;
11595      this.language = p22.uint16;
11596      this.firstCode = p22.uint16;
11597      this.entryCount = p22.uint16;
11598      this.lastCode = this.firstCode + this.entryCount - 1;
11599      const getter = () => [...new Array(this.entryCount)].map((_) => p22.uint16);
11600      lazy$1(this, `glyphIdArray`, getter);
11601    }
11602    supports(charCode) {
11603      if (charCode.charCodeAt) {
11604        charCode = -1;
11605        console.warn(
11606          `supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.`
11607        );
11608      }
11609      if (charCode < this.firstCode) return {};
11610      if (charCode > this.firstCode + this.entryCount) return {};
11611      const code = charCode - this.firstCode;
11612      return { code, unicode: String.fromCodePoint(code) };
11613    }
11614    reverse(glyphID) {
11615      let pos = this.glyphIdArray.indexOf(glyphID);
11616      if (pos > -1) return this.firstCode + pos;
11617    }
11618    getSupportedCharCodes(preservePropNames = false) {
11619      if (preservePropNames) {
11620        return [{ firstCode: this.firstCode, lastCode: this.lastCode }];
11621      }
11622      return [{ start: this.firstCode, end: this.lastCode }];
11623    }
11624  };
11625  var Format8 = class extends Subtable {
11626    constructor(p22, platformID, encodingID) {
11627      super(p22, platformID, encodingID);
11628      this.format = 8;
11629      p22.uint16;
11630      this.length = p22.uint32;
11631      this.language = p22.uint32;
11632      this.is32 = [...new Array(8192)].map((_) => p22.uint8);
11633      this.numGroups = p22.uint32;
11634      const getter = () => [...new Array(this.numGroups)].map(
11635        (_) => new SequentialMapGroup$1(p22)
11636      );
11637      lazy$1(this, `groups`, getter);
11638    }
11639    supports(charCode) {
11640      if (charCode.charCodeAt) {
11641        charCode = -1;
11642        console.warn(
11643          `supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.`
11644        );
11645      }
11646      return this.groups.findIndex(
11647        (s2) => s2.startcharCode <= charCode && charCode <= s2.endcharCode
11648      ) !== -1;
11649    }
11650    reverse(glyphID) {
11651      console.warn(`reverse not implemented for cmap subtable format 8`);
11652      return {};
11653    }
11654    getSupportedCharCodes(preservePropNames = false) {
11655      if (preservePropNames) return this.groups;
11656      return this.groups.map((v2) => ({
11657        start: v2.startcharCode,
11658        end: v2.endcharCode
11659      }));
11660    }
11661  };
11662  var SequentialMapGroup$1 = class {
11663    constructor(p22) {
11664      this.startcharCode = p22.uint32;
11665      this.endcharCode = p22.uint32;
11666      this.startGlyphID = p22.uint32;
11667    }
11668  };
11669  var Format10 = class extends Subtable {
11670    constructor(p22, platformID, encodingID) {
11671      super(p22, platformID, encodingID);
11672      this.format = 10;
11673      p22.uint16;
11674      this.length = p22.uint32;
11675      this.language = p22.uint32;
11676      this.startCharCode = p22.uint32;
11677      this.numChars = p22.uint32;
11678      this.endCharCode = this.startCharCode + this.numChars;
11679      const getter = () => [...new Array(this.numChars)].map((_) => p22.uint16);
11680      lazy$1(this, `glyphs`, getter);
11681    }
11682    supports(charCode) {
11683      if (charCode.charCodeAt) {
11684        charCode = -1;
11685        console.warn(
11686          `supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.`
11687        );
11688      }
11689      if (charCode < this.startCharCode) return false;
11690      if (charCode > this.startCharCode + this.numChars) return false;
11691      return charCode - this.startCharCode;
11692    }
11693    reverse(glyphID) {
11694      console.warn(`reverse not implemented for cmap subtable format 10`);
11695      return {};
11696    }
11697    getSupportedCharCodes(preservePropNames = false) {
11698      if (preservePropNames) {
11699        return [
11700          {
11701            startCharCode: this.startCharCode,
11702            endCharCode: this.endCharCode
11703          }
11704        ];
11705      }
11706      return [{ start: this.startCharCode, end: this.endCharCode }];
11707    }
11708  };
11709  var Format12 = class extends Subtable {
11710    constructor(p22, platformID, encodingID) {
11711      super(p22, platformID, encodingID);
11712      this.format = 12;
11713      p22.uint16;
11714      this.length = p22.uint32;
11715      this.language = p22.uint32;
11716      this.numGroups = p22.uint32;
11717      const getter = () => [...new Array(this.numGroups)].map(
11718        (_) => new SequentialMapGroup(p22)
11719      );
11720      lazy$1(this, `groups`, getter);
11721    }
11722    supports(charCode) {
11723      if (charCode.charCodeAt) charCode = charCode.charCodeAt(0);
11724      if (55296 <= charCode && charCode <= 57343) return 0;
11725      if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535)
11726        return 0;
11727      return this.groups.findIndex(
11728        (s2) => s2.startCharCode <= charCode && charCode <= s2.endCharCode
11729      ) !== -1;
11730    }
11731    reverse(glyphID) {
11732      for (let group of this.groups) {
11733        let start = group.startGlyphID;
11734        if (start > glyphID) continue;
11735        if (start === glyphID) return group.startCharCode;
11736        let end = start + (group.endCharCode - group.startCharCode);
11737        if (end < glyphID) continue;
11738        const code = group.startCharCode + (glyphID - start);
11739        return { code, unicode: String.fromCodePoint(code) };
11740      }
11741      return {};
11742    }
11743    getSupportedCharCodes(preservePropNames = false) {
11744      if (preservePropNames) return this.groups;
11745      return this.groups.map((v2) => ({
11746        start: v2.startCharCode,
11747        end: v2.endCharCode
11748      }));
11749    }
11750  };
11751  var SequentialMapGroup = class {
11752    constructor(p22) {
11753      this.startCharCode = p22.uint32;
11754      this.endCharCode = p22.uint32;
11755      this.startGlyphID = p22.uint32;
11756    }
11757  };
11758  var Format13 = class extends Subtable {
11759    constructor(p22, platformID, encodingID) {
11760      super(p22, platformID, encodingID);
11761      this.format = 13;
11762      p22.uint16;
11763      this.length = p22.uint32;
11764      this.language = p22.uint32;
11765      this.numGroups = p22.uint32;
11766      const getter = [...new Array(this.numGroups)].map(
11767        (_) => new ConstantMapGroup(p22)
11768      );
11769      lazy$1(this, `groups`, getter);
11770    }
11771    supports(charCode) {
11772      if (charCode.charCodeAt) charCode = charCode.charCodeAt(0);
11773      return this.groups.findIndex(
11774        (s2) => s2.startCharCode <= charCode && charCode <= s2.endCharCode
11775      ) !== -1;
11776    }
11777    reverse(glyphID) {
11778      console.warn(`reverse not implemented for cmap subtable format 13`);
11779      return {};
11780    }
11781    getSupportedCharCodes(preservePropNames = false) {
11782      if (preservePropNames) return this.groups;
11783      return this.groups.map((v2) => ({
11784        start: v2.startCharCode,
11785        end: v2.endCharCode
11786      }));
11787    }
11788  };
11789  var ConstantMapGroup = class {
11790    constructor(p22) {
11791      this.startCharCode = p22.uint32;
11792      this.endCharCode = p22.uint32;
11793      this.glyphID = p22.uint32;
11794    }
11795  };
11796  var Format14 = class extends Subtable {
11797    constructor(p22, platformID, encodingID) {
11798      super(p22, platformID, encodingID);
11799      this.subTableStart = p22.currentPosition;
11800      this.format = 14;
11801      this.length = p22.uint32;
11802      this.numVarSelectorRecords = p22.uint32;
11803      lazy$1(
11804        this,
11805        `varSelectors`,
11806        () => [...new Array(this.numVarSelectorRecords)].map(
11807          (_) => new VariationSelector(p22)
11808        )
11809      );
11810    }
11811    supports() {
11812      console.warn(`supports not implemented for cmap subtable format 14`);
11813      return 0;
11814    }
11815    getSupportedCharCodes() {
11816      console.warn(
11817        `getSupportedCharCodes not implemented for cmap subtable format 14`
11818      );
11819      return [];
11820    }
11821    reverse(glyphID) {
11822      console.warn(`reverse not implemented for cmap subtable format 14`);
11823      return {};
11824    }
11825    supportsVariation(variation) {
11826      let v2 = this.varSelector.find(
11827        (uvs) => uvs.varSelector === variation
11828      );
11829      return v2 ? v2 : false;
11830    }
11831    getSupportedVariations() {
11832      return this.varSelectors.map((v2) => v2.varSelector);
11833    }
11834  };
11835  var VariationSelector = class {
11836    constructor(p22) {
11837      this.varSelector = p22.uint24;
11838      this.defaultUVSOffset = p22.Offset32;
11839      this.nonDefaultUVSOffset = p22.Offset32;
11840    }
11841  };
11842  function createSubTable(parser, platformID, encodingID) {
11843    const format = parser.uint16;
11844    if (format === 0) return new Format0(parser, platformID, encodingID);
11845    if (format === 2) return new Format2(parser, platformID, encodingID);
11846    if (format === 4) return new Format4(parser, platformID, encodingID);
11847    if (format === 6) return new Format6(parser, platformID, encodingID);
11848    if (format === 8) return new Format8(parser, platformID, encodingID);
11849    if (format === 10) return new Format10(parser, platformID, encodingID);
11850    if (format === 12) return new Format12(parser, platformID, encodingID);
11851    if (format === 13) return new Format13(parser, platformID, encodingID);
11852    if (format === 14) return new Format14(parser, platformID, encodingID);
11853    return {};
11854  }
11855  var cmap = class extends SimpleTable {
11856    constructor(dict, dataview) {
11857      const { p: p22 } = super(dict, dataview);
11858      this.version = p22.uint16;
11859      this.numTables = p22.uint16;
11860      this.encodingRecords = [...new Array(this.numTables)].map(
11861        (_) => new EncodingRecord(p22, this.tableStart)
11862      );
11863    }
11864    getSubTable(tableID) {
11865      return this.encodingRecords[tableID].table;
11866    }
11867    getSupportedEncodings() {
11868      return this.encodingRecords.map((r3) => ({
11869        platformID: r3.platformID,
11870        encodingId: r3.encodingID
11871      }));
11872    }
11873    getSupportedCharCodes(platformID, encodingID) {
11874      const recordID = this.encodingRecords.findIndex(
11875        (r3) => r3.platformID === platformID && r3.encodingID === encodingID
11876      );
11877      if (recordID === -1) return false;
11878      const subtable = this.getSubTable(recordID);
11879      return subtable.getSupportedCharCodes();
11880    }
11881    reverse(glyphid) {
11882      for (let i2 = 0; i2 < this.numTables; i2++) {
11883        let code = this.getSubTable(i2).reverse(glyphid);
11884        if (code) return code;
11885      }
11886    }
11887    getGlyphId(char) {
11888      let last = 0;
11889      this.encodingRecords.some((_, tableID) => {
11890        let t3 = this.getSubTable(tableID);
11891        if (!t3.getGlyphId) return false;
11892        last = t3.getGlyphId(char);
11893        return last !== 0;
11894      });
11895      return last;
11896    }
11897    supports(char) {
11898      return this.encodingRecords.some((_, tableID) => {
11899        const t3 = this.getSubTable(tableID);
11900        return t3.supports && t3.supports(char) !== false;
11901      });
11902    }
11903    supportsVariation(variation) {
11904      return this.encodingRecords.some((_, tableID) => {
11905        const t3 = this.getSubTable(tableID);
11906        return t3.supportsVariation && t3.supportsVariation(variation) !== false;
11907      });
11908    }
11909  };
11910  var EncodingRecord = class {
11911    constructor(p22, tableStart) {
11912      const platformID = this.platformID = p22.uint16;
11913      const encodingID = this.encodingID = p22.uint16;
11914      const offset = this.offset = p22.Offset32;
11915      lazy$1(this, `table`, () => {
11916        p22.currentPosition = tableStart + offset;
11917        return createSubTable(p22, platformID, encodingID);
11918      });
11919    }
11920  };
11921  var cmap$1 = Object.freeze({ __proto__: null, cmap });
11922  var head = class extends SimpleTable {
11923    constructor(dict, dataview) {
11924      const { p: p22 } = super(dict, dataview);
11925      this.load({
11926        majorVersion: p22.uint16,
11927        minorVersion: p22.uint16,
11928        fontRevision: p22.fixed,
11929        checkSumAdjustment: p22.uint32,
11930        magicNumber: p22.uint32,
11931        flags: p22.flags(16),
11932        unitsPerEm: p22.uint16,
11933        created: p22.longdatetime,
11934        modified: p22.longdatetime,
11935        xMin: p22.int16,
11936        yMin: p22.int16,
11937        xMax: p22.int16,
11938        yMax: p22.int16,
11939        macStyle: p22.flags(16),
11940        lowestRecPPEM: p22.uint16,
11941        fontDirectionHint: p22.uint16,
11942        indexToLocFormat: p22.uint16,
11943        glyphDataFormat: p22.uint16
11944      });
11945    }
11946  };
11947  var head$1 = Object.freeze({ __proto__: null, head });
11948  var hhea = class extends SimpleTable {
11949    constructor(dict, dataview) {
11950      const { p: p22 } = super(dict, dataview);
11951      this.majorVersion = p22.uint16;
11952      this.minorVersion = p22.uint16;
11953      this.ascender = p22.fword;
11954      this.descender = p22.fword;
11955      this.lineGap = p22.fword;
11956      this.advanceWidthMax = p22.ufword;
11957      this.minLeftSideBearing = p22.fword;
11958      this.minRightSideBearing = p22.fword;
11959      this.xMaxExtent = p22.fword;
11960      this.caretSlopeRise = p22.int16;
11961      this.caretSlopeRun = p22.int16;
11962      this.caretOffset = p22.int16;
11963      p22.int16;
11964      p22.int16;
11965      p22.int16;
11966      p22.int16;
11967      this.metricDataFormat = p22.int16;
11968      this.numberOfHMetrics = p22.uint16;
11969      p22.verifyLength();
11970    }
11971  };
11972  var hhea$1 = Object.freeze({ __proto__: null, hhea });
11973  var hmtx = class extends SimpleTable {
11974    constructor(dict, dataview, tables) {
11975      const { p: p22 } = super(dict, dataview);
11976      const numberOfHMetrics = tables.hhea.numberOfHMetrics;
11977      const numGlyphs = tables.maxp.numGlyphs;
11978      const metricsStart = p22.currentPosition;
11979      lazy$1(this, `hMetrics`, () => {
11980        p22.currentPosition = metricsStart;
11981        return [...new Array(numberOfHMetrics)].map(
11982          (_) => new LongHorMetric(p22.uint16, p22.int16)
11983        );
11984      });
11985      if (numberOfHMetrics < numGlyphs) {
11986        const lsbStart = metricsStart + numberOfHMetrics * 4;
11987        lazy$1(this, `leftSideBearings`, () => {
11988          p22.currentPosition = lsbStart;
11989          return [...new Array(numGlyphs - numberOfHMetrics)].map(
11990            (_) => p22.int16
11991          );
11992        });
11993      }
11994    }
11995  };
11996  var LongHorMetric = class {
11997    constructor(w2, b2) {
11998      this.advanceWidth = w2;
11999      this.lsb = b2;
12000    }
12001  };
12002  var hmtx$1 = Object.freeze({ __proto__: null, hmtx });
12003  var maxp = class extends SimpleTable {
12004    constructor(dict, dataview) {
12005      const { p: p22 } = super(dict, dataview);
12006      this.version = p22.legacyFixed;
12007      this.numGlyphs = p22.uint16;
12008      if (this.version === 1) {
12009        this.maxPoints = p22.uint16;
12010        this.maxContours = p22.uint16;
12011        this.maxCompositePoints = p22.uint16;
12012        this.maxCompositeContours = p22.uint16;
12013        this.maxZones = p22.uint16;
12014        this.maxTwilightPoints = p22.uint16;
12015        this.maxStorage = p22.uint16;
12016        this.maxFunctionDefs = p22.uint16;
12017        this.maxInstructionDefs = p22.uint16;
12018        this.maxStackElements = p22.uint16;
12019        this.maxSizeOfInstructions = p22.uint16;
12020        this.maxComponentElements = p22.uint16;
12021        this.maxComponentDepth = p22.uint16;
12022      }
12023      p22.verifyLength();
12024    }
12025  };
12026  var maxp$1 = Object.freeze({ __proto__: null, maxp });
12027  var name = class extends SimpleTable {
12028    constructor(dict, dataview) {
12029      const { p: p22 } = super(dict, dataview);
12030      this.format = p22.uint16;
12031      this.count = p22.uint16;
12032      this.stringOffset = p22.Offset16;
12033      this.nameRecords = [...new Array(this.count)].map(
12034        (_) => new NameRecord(p22, this)
12035      );
12036      if (this.format === 1) {
12037        this.langTagCount = p22.uint16;
12038        this.langTagRecords = [...new Array(this.langTagCount)].map(
12039          (_) => new LangTagRecord(p22.uint16, p22.Offset16)
12040        );
12041      }
12042      this.stringStart = this.tableStart + this.stringOffset;
12043    }
12044    get(nameID) {
12045      let record = this.nameRecords.find(
12046        (record2) => record2.nameID === nameID
12047      );
12048      if (record) return record.string;
12049    }
12050  };
12051  var LangTagRecord = class {
12052    constructor(length, offset) {
12053      this.length = length;
12054      this.offset = offset;
12055    }
12056  };
12057  var NameRecord = class {
12058    constructor(p22, nameTable) {
12059      this.platformID = p22.uint16;
12060      this.encodingID = p22.uint16;
12061      this.languageID = p22.uint16;
12062      this.nameID = p22.uint16;
12063      this.length = p22.uint16;
12064      this.offset = p22.Offset16;
12065      lazy$1(this, `string`, () => {
12066        p22.currentPosition = nameTable.stringStart + this.offset;
12067        return decodeString(p22, this);
12068      });
12069    }
12070  };
12071  function decodeString(p22, record) {
12072    const { platformID, length } = record;
12073    if (length === 0) return ``;
12074    if (platformID === 0 || platformID === 3) {
12075      const str2 = [];
12076      for (let i2 = 0, e2 = length / 2; i2 < e2; i2++)
12077        str2[i2] = String.fromCharCode(p22.uint16);
12078      return str2.join(``);
12079    }
12080    const bytes = p22.readBytes(length);
12081    const str = [];
12082    bytes.forEach(function(b2, i2) {
12083      str[i2] = String.fromCharCode(b2);
12084    });
12085    return str.join(``);
12086  }
12087  var name$1 = Object.freeze({ __proto__: null, name });
12088  var OS2 = class extends SimpleTable {
12089    constructor(dict, dataview) {
12090      const { p: p22 } = super(dict, dataview);
12091      this.version = p22.uint16;
12092      this.xAvgCharWidth = p22.int16;
12093      this.usWeightClass = p22.uint16;
12094      this.usWidthClass = p22.uint16;
12095      this.fsType = p22.uint16;
12096      this.ySubscriptXSize = p22.int16;
12097      this.ySubscriptYSize = p22.int16;
12098      this.ySubscriptXOffset = p22.int16;
12099      this.ySubscriptYOffset = p22.int16;
12100      this.ySuperscriptXSize = p22.int16;
12101      this.ySuperscriptYSize = p22.int16;
12102      this.ySuperscriptXOffset = p22.int16;
12103      this.ySuperscriptYOffset = p22.int16;
12104      this.yStrikeoutSize = p22.int16;
12105      this.yStrikeoutPosition = p22.int16;
12106      this.sFamilyClass = p22.int16;
12107      this.panose = [...new Array(10)].map((_) => p22.uint8);
12108      this.ulUnicodeRange1 = p22.flags(32);
12109      this.ulUnicodeRange2 = p22.flags(32);
12110      this.ulUnicodeRange3 = p22.flags(32);
12111      this.ulUnicodeRange4 = p22.flags(32);
12112      this.achVendID = p22.tag;
12113      this.fsSelection = p22.uint16;
12114      this.usFirstCharIndex = p22.uint16;
12115      this.usLastCharIndex = p22.uint16;
12116      this.sTypoAscender = p22.int16;
12117      this.sTypoDescender = p22.int16;
12118      this.sTypoLineGap = p22.int16;
12119      this.usWinAscent = p22.uint16;
12120      this.usWinDescent = p22.uint16;
12121      if (this.version === 0) return p22.verifyLength();
12122      this.ulCodePageRange1 = p22.flags(32);
12123      this.ulCodePageRange2 = p22.flags(32);
12124      if (this.version === 1) return p22.verifyLength();
12125      this.sxHeight = p22.int16;
12126      this.sCapHeight = p22.int16;
12127      this.usDefaultChar = p22.uint16;
12128      this.usBreakChar = p22.uint16;
12129      this.usMaxContext = p22.uint16;
12130      if (this.version <= 4) return p22.verifyLength();
12131      this.usLowerOpticalPointSize = p22.uint16;
12132      this.usUpperOpticalPointSize = p22.uint16;
12133      if (this.version === 5) return p22.verifyLength();
12134    }
12135  };
12136  var OS2$1 = Object.freeze({ __proto__: null, OS2 });
12137  var post = class extends SimpleTable {
12138    constructor(dict, dataview) {
12139      const { p: p22 } = super(dict, dataview);
12140      this.version = p22.legacyFixed;
12141      this.italicAngle = p22.fixed;
12142      this.underlinePosition = p22.fword;
12143      this.underlineThickness = p22.fword;
12144      this.isFixedPitch = p22.uint32;
12145      this.minMemType42 = p22.uint32;
12146      this.maxMemType42 = p22.uint32;
12147      this.minMemType1 = p22.uint32;
12148      this.maxMemType1 = p22.uint32;
12149      if (this.version === 1 || this.version === 3) return p22.verifyLength();
12150      this.numGlyphs = p22.uint16;
12151      if (this.version === 2) {
12152        this.glyphNameIndex = [...new Array(this.numGlyphs)].map(
12153          (_) => p22.uint16
12154        );
12155        this.namesOffset = p22.currentPosition;
12156        this.glyphNameOffsets = [1];
12157        for (let i2 = 0; i2 < this.numGlyphs; i2++) {
12158          let index = this.glyphNameIndex[i2];
12159          if (index < macStrings.length) {
12160            this.glyphNameOffsets.push(this.glyphNameOffsets[i2]);
12161            continue;
12162          }
12163          let bytelength = p22.int8;
12164          p22.skip(bytelength);
12165          this.glyphNameOffsets.push(
12166            this.glyphNameOffsets[i2] + bytelength + 1
12167          );
12168        }
12169      }
12170      if (this.version === 2.5) {
12171        this.offset = [...new Array(this.numGlyphs)].map(
12172          (_) => p22.int8
12173        );
12174      }
12175    }
12176    getGlyphName(glyphid) {
12177      if (this.version !== 2) {
12178        console.warn(
12179          `post table version $this.version} does not support glyph name lookups`
12180        );
12181        return ``;
12182      }
12183      let index = this.glyphNameIndex[glyphid];
12184      if (index < 258) return macStrings[index];
12185      let offset = this.glyphNameOffsets[glyphid];
12186      let next = this.glyphNameOffsets[glyphid + 1];
12187      let len = next - offset - 1;
12188      if (len === 0) return `.notdef.`;
12189      this.parser.currentPosition = this.namesOffset + offset;
12190      const data = this.parser.readBytes(
12191        len,
12192        this.namesOffset + offset,
12193        8,
12194        true
12195      );
12196      return data.map((b2) => String.fromCharCode(b2)).join(``);
12197    }
12198  };
12199  var macStrings = [
12200    `.notdef`,
12201    `.null`,
12202    `nonmarkingreturn`,
12203    `space`,
12204    `exclam`,
12205    `quotedbl`,
12206    `numbersign`,
12207    `dollar`,
12208    `percent`,
12209    `ampersand`,
12210    `quotesingle`,
12211    `parenleft`,
12212    `parenright`,
12213    `asterisk`,
12214    `plus`,
12215    `comma`,
12216    `hyphen`,
12217    `period`,
12218    `slash`,
12219    `zero`,
12220    `one`,
12221    `two`,
12222    `three`,
12223    `four`,
12224    `five`,
12225    `six`,
12226    `seven`,
12227    `eight`,
12228    `nine`,
12229    `colon`,
12230    `semicolon`,
12231    `less`,
12232    `equal`,
12233    `greater`,
12234    `question`,
12235    `at`,
12236    `A`,
12237    `B`,
12238    `C`,
12239    `D`,
12240    `E`,
12241    `F`,
12242    `G`,
12243    `H`,
12244    `I`,
12245    `J`,
12246    `K`,
12247    `L`,
12248    `M`,
12249    `N`,
12250    `O`,
12251    `P`,
12252    `Q`,
12253    `R`,
12254    `S`,
12255    `T`,
12256    `U`,
12257    `V`,
12258    `W`,
12259    `X`,
12260    `Y`,
12261    `Z`,
12262    `bracketleft`,
12263    `backslash`,
12264    `bracketright`,
12265    `asciicircum`,
12266    `underscore`,
12267    `grave`,
12268    `a`,
12269    `b`,
12270    `c`,
12271    `d`,
12272    `e`,
12273    `f`,
12274    `g`,
12275    `h`,
12276    `i`,
12277    `j`,
12278    `k`,
12279    `l`,
12280    `m`,
12281    `n`,
12282    `o`,
12283    `p`,
12284    `q`,
12285    `r`,
12286    `s`,
12287    `t`,
12288    `u`,
12289    `v`,
12290    `w`,
12291    `x`,
12292    `y`,
12293    `z`,
12294    `braceleft`,
12295    `bar`,
12296    `braceright`,
12297    `asciitilde`,
12298    `Adieresis`,
12299    `Aring`,
12300    `Ccedilla`,
12301    `Eacute`,
12302    `Ntilde`,
12303    `Odieresis`,
12304    `Udieresis`,
12305    `aacute`,
12306    `agrave`,
12307    `acircumflex`,
12308    `adieresis`,
12309    `atilde`,
12310    `aring`,
12311    `ccedilla`,
12312    `eacute`,
12313    `egrave`,
12314    `ecircumflex`,
12315    `edieresis`,
12316    `iacute`,
12317    `igrave`,
12318    `icircumflex`,
12319    `idieresis`,
12320    `ntilde`,
12321    `oacute`,
12322    `ograve`,
12323    `ocircumflex`,
12324    `odieresis`,
12325    `otilde`,
12326    `uacute`,
12327    `ugrave`,
12328    `ucircumflex`,
12329    `udieresis`,
12330    `dagger`,
12331    `degree`,
12332    `cent`,
12333    `sterling`,
12334    `section`,
12335    `bullet`,
12336    `paragraph`,
12337    `germandbls`,
12338    `registered`,
12339    `copyright`,
12340    `trademark`,
12341    `acute`,
12342    `dieresis`,
12343    `notequal`,
12344    `AE`,
12345    `Oslash`,
12346    `infinity`,
12347    `plusminus`,
12348    `lessequal`,
12349    `greaterequal`,
12350    `yen`,
12351    `mu`,
12352    `partialdiff`,
12353    `summation`,
12354    `product`,
12355    `pi`,
12356    `integral`,
12357    `ordfeminine`,
12358    `ordmasculine`,
12359    `Omega`,
12360    `ae`,
12361    `oslash`,
12362    `questiondown`,
12363    `exclamdown`,
12364    `logicalnot`,
12365    `radical`,
12366    `florin`,
12367    `approxequal`,
12368    `Delta`,
12369    `guillemotleft`,
12370    `guillemotright`,
12371    `ellipsis`,
12372    `nonbreakingspace`,
12373    `Agrave`,
12374    `Atilde`,
12375    `Otilde`,
12376    `OE`,
12377    `oe`,
12378    `endash`,
12379    `emdash`,
12380    `quotedblleft`,
12381    `quotedblright`,
12382    `quoteleft`,
12383    `quoteright`,
12384    `divide`,
12385    `lozenge`,
12386    `ydieresis`,
12387    `Ydieresis`,
12388    `fraction`,
12389    `currency`,
12390    `guilsinglleft`,
12391    `guilsinglright`,
12392    `fi`,
12393    `fl`,
12394    `daggerdbl`,
12395    `periodcentered`,
12396    `quotesinglbase`,
12397    `quotedblbase`,
12398    `perthousand`,
12399    `Acircumflex`,
12400    `Ecircumflex`,
12401    `Aacute`,
12402    `Edieresis`,
12403    `Egrave`,
12404    `Iacute`,
12405    `Icircumflex`,
12406    `Idieresis`,
12407    `Igrave`,
12408    `Oacute`,
12409    `Ocircumflex`,
12410    `apple`,
12411    `Ograve`,
12412    `Uacute`,
12413    `Ucircumflex`,
12414    `Ugrave`,
12415    `dotlessi`,
12416    `circumflex`,
12417    `tilde`,
12418    `macron`,
12419    `breve`,
12420    `dotaccent`,
12421    `ring`,
12422    `cedilla`,
12423    `hungarumlaut`,
12424    `ogonek`,
12425    `caron`,
12426    `Lslash`,
12427    `lslash`,
12428    `Scaron`,
12429    `scaron`,
12430    `Zcaron`,
12431    `zcaron`,
12432    `brokenbar`,
12433    `Eth`,
12434    `eth`,
12435    `Yacute`,
12436    `yacute`,
12437    `Thorn`,
12438    `thorn`,
12439    `minus`,
12440    `multiply`,
12441    `onesuperior`,
12442    `twosuperior`,
12443    `threesuperior`,
12444    `onehalf`,
12445    `onequarter`,
12446    `threequarters`,
12447    `franc`,
12448    `Gbreve`,
12449    `gbreve`,
12450    `Idotaccent`,
12451    `Scedilla`,
12452    `scedilla`,
12453    `Cacute`,
12454    `cacute`,
12455    `Ccaron`,
12456    `ccaron`,
12457    `dcroat`
12458  ];
12459  var post$1 = Object.freeze({ __proto__: null, post });
12460  var BASE = class extends SimpleTable {
12461    constructor(dict, dataview) {
12462      const { p: p22 } = super(dict, dataview);
12463      this.majorVersion = p22.uint16;
12464      this.minorVersion = p22.uint16;
12465      this.horizAxisOffset = p22.Offset16;
12466      this.vertAxisOffset = p22.Offset16;
12467      lazy$1(
12468        this,
12469        `horizAxis`,
12470        () => new AxisTable(
12471          { offset: dict.offset + this.horizAxisOffset },
12472          dataview
12473        )
12474      );
12475      lazy$1(
12476        this,
12477        `vertAxis`,
12478        () => new AxisTable(
12479          { offset: dict.offset + this.vertAxisOffset },
12480          dataview
12481        )
12482      );
12483      if (this.majorVersion === 1 && this.minorVersion === 1) {
12484        this.itemVarStoreOffset = p22.Offset32;
12485        lazy$1(
12486          this,
12487          `itemVarStore`,
12488          () => new AxisTable(
12489            { offset: dict.offset + this.itemVarStoreOffset },
12490            dataview
12491          )
12492        );
12493      }
12494    }
12495  };
12496  var AxisTable = class extends SimpleTable {
12497    constructor(dict, dataview) {
12498      const { p: p22 } = super(dict, dataview, `AxisTable`);
12499      this.baseTagListOffset = p22.Offset16;
12500      this.baseScriptListOffset = p22.Offset16;
12501      lazy$1(
12502        this,
12503        `baseTagList`,
12504        () => new BaseTagListTable(
12505          { offset: dict.offset + this.baseTagListOffset },
12506          dataview
12507        )
12508      );
12509      lazy$1(
12510        this,
12511        `baseScriptList`,
12512        () => new BaseScriptListTable(
12513          { offset: dict.offset + this.baseScriptListOffset },
12514          dataview
12515        )
12516      );
12517    }
12518  };
12519  var BaseTagListTable = class extends SimpleTable {
12520    constructor(dict, dataview) {
12521      const { p: p22 } = super(dict, dataview, `BaseTagListTable`);
12522      this.baseTagCount = p22.uint16;
12523      this.baselineTags = [...new Array(this.baseTagCount)].map(
12524        (_) => p22.tag
12525      );
12526    }
12527  };
12528  var BaseScriptListTable = class extends SimpleTable {
12529    constructor(dict, dataview) {
12530      const { p: p22 } = super(dict, dataview, `BaseScriptListTable`);
12531      this.baseScriptCount = p22.uint16;
12532      const recordStart = p22.currentPosition;
12533      lazy$1(this, `baseScriptRecords`, () => {
12534        p22.currentPosition = recordStart;
12535        return [...new Array(this.baseScriptCount)].map(
12536          (_) => new BaseScriptRecord(this.start, p22)
12537        );
12538      });
12539    }
12540  };
12541  var BaseScriptRecord = class {
12542    constructor(baseScriptListTableStart, p22) {
12543      this.baseScriptTag = p22.tag;
12544      this.baseScriptOffset = p22.Offset16;
12545      lazy$1(this, `baseScriptTable`, () => {
12546        p22.currentPosition = baseScriptListTableStart + this.baseScriptOffset;
12547        return new BaseScriptTable(p22);
12548      });
12549    }
12550  };
12551  var BaseScriptTable = class {
12552    constructor(p22) {
12553      this.start = p22.currentPosition;
12554      this.baseValuesOffset = p22.Offset16;
12555      this.defaultMinMaxOffset = p22.Offset16;
12556      this.baseLangSysCount = p22.uint16;
12557      this.baseLangSysRecords = [...new Array(this.baseLangSysCount)].map(
12558        (_) => new BaseLangSysRecord(this.start, p22)
12559      );
12560      lazy$1(this, `baseValues`, () => {
12561        p22.currentPosition = this.start + this.baseValuesOffset;
12562        return new BaseValuesTable(p22);
12563      });
12564      lazy$1(this, `defaultMinMax`, () => {
12565        p22.currentPosition = this.start + this.defaultMinMaxOffset;
12566        return new MinMaxTable(p22);
12567      });
12568    }
12569  };
12570  var BaseLangSysRecord = class {
12571    constructor(baseScriptTableStart, p22) {
12572      this.baseLangSysTag = p22.tag;
12573      this.minMaxOffset = p22.Offset16;
12574      lazy$1(this, `minMax`, () => {
12575        p22.currentPosition = baseScriptTableStart + this.minMaxOffset;
12576        return new MinMaxTable(p22);
12577      });
12578    }
12579  };
12580  var BaseValuesTable = class {
12581    constructor(p22) {
12582      this.parser = p22;
12583      this.start = p22.currentPosition;
12584      this.defaultBaselineIndex = p22.uint16;
12585      this.baseCoordCount = p22.uint16;
12586      this.baseCoords = [...new Array(this.baseCoordCount)].map(
12587        (_) => p22.Offset16
12588      );
12589    }
12590    getTable(id) {
12591      this.parser.currentPosition = this.start + this.baseCoords[id];
12592      return new BaseCoordTable(this.parser);
12593    }
12594  };
12595  var MinMaxTable = class {
12596    constructor(p22) {
12597      this.minCoord = p22.Offset16;
12598      this.maxCoord = p22.Offset16;
12599      this.featMinMaxCount = p22.uint16;
12600      const recordStart = p22.currentPosition;
12601      lazy$1(this, `featMinMaxRecords`, () => {
12602        p22.currentPosition = recordStart;
12603        return [...new Array(this.featMinMaxCount)].map(
12604          (_) => new FeatMinMaxRecord(p22)
12605        );
12606      });
12607    }
12608  };
12609  var FeatMinMaxRecord = class {
12610    constructor(p22) {
12611      this.featureTableTag = p22.tag;
12612      this.minCoord = p22.Offset16;
12613      this.maxCoord = p22.Offset16;
12614    }
12615  };
12616  var BaseCoordTable = class {
12617    constructor(p22) {
12618      this.baseCoordFormat = p22.uint16;
12619      this.coordinate = p22.int16;
12620      if (this.baseCoordFormat === 2) {
12621        this.referenceGlyph = p22.uint16;
12622        this.baseCoordPoint = p22.uint16;
12623      }
12624      if (this.baseCoordFormat === 3) {
12625        this.deviceTable = p22.Offset16;
12626      }
12627    }
12628  };
12629  var BASE$1 = Object.freeze({ __proto__: null, BASE });
12630  var ClassDefinition = class {
12631    constructor(p22) {
12632      this.classFormat = p22.uint16;
12633      if (this.classFormat === 1) {
12634        this.startGlyphID = p22.uint16;
12635        this.glyphCount = p22.uint16;
12636        this.classValueArray = [...new Array(this.glyphCount)].map(
12637          (_) => p22.uint16
12638        );
12639      }
12640      if (this.classFormat === 2) {
12641        this.classRangeCount = p22.uint16;
12642        this.classRangeRecords = [
12643          ...new Array(this.classRangeCount)
12644        ].map((_) => new ClassRangeRecord(p22));
12645      }
12646    }
12647  };
12648  var ClassRangeRecord = class {
12649    constructor(p22) {
12650      this.startGlyphID = p22.uint16;
12651      this.endGlyphID = p22.uint16;
12652      this.class = p22.uint16;
12653    }
12654  };
12655  var CoverageTable = class extends ParsedData {
12656    constructor(p22) {
12657      super(p22);
12658      this.coverageFormat = p22.uint16;
12659      if (this.coverageFormat === 1) {
12660        this.glyphCount = p22.uint16;
12661        this.glyphArray = [...new Array(this.glyphCount)].map(
12662          (_) => p22.uint16
12663        );
12664      }
12665      if (this.coverageFormat === 2) {
12666        this.rangeCount = p22.uint16;
12667        this.rangeRecords = [...new Array(this.rangeCount)].map(
12668          (_) => new CoverageRangeRecord(p22)
12669        );
12670      }
12671    }
12672  };
12673  var CoverageRangeRecord = class {
12674    constructor(p22) {
12675      this.startGlyphID = p22.uint16;
12676      this.endGlyphID = p22.uint16;
12677      this.startCoverageIndex = p22.uint16;
12678    }
12679  };
12680  var ItemVariationStoreTable = class {
12681    constructor(table, p22) {
12682      this.table = table;
12683      this.parser = p22;
12684      this.start = p22.currentPosition;
12685      this.format = p22.uint16;
12686      this.variationRegionListOffset = p22.Offset32;
12687      this.itemVariationDataCount = p22.uint16;
12688      this.itemVariationDataOffsets = [
12689        ...new Array(this.itemVariationDataCount)
12690      ].map((_) => p22.Offset32);
12691    }
12692  };
12693  var GDEF = class extends SimpleTable {
12694    constructor(dict, dataview) {
12695      const { p: p22 } = super(dict, dataview);
12696      this.majorVersion = p22.uint16;
12697      this.minorVersion = p22.uint16;
12698      this.glyphClassDefOffset = p22.Offset16;
12699      lazy$1(this, `glyphClassDefs`, () => {
12700        if (this.glyphClassDefOffset === 0) return void 0;
12701        p22.currentPosition = this.tableStart + this.glyphClassDefOffset;
12702        return new ClassDefinition(p22);
12703      });
12704      this.attachListOffset = p22.Offset16;
12705      lazy$1(this, `attachList`, () => {
12706        if (this.attachListOffset === 0) return void 0;
12707        p22.currentPosition = this.tableStart + this.attachListOffset;
12708        return new AttachList(p22);
12709      });
12710      this.ligCaretListOffset = p22.Offset16;
12711      lazy$1(this, `ligCaretList`, () => {
12712        if (this.ligCaretListOffset === 0) return void 0;
12713        p22.currentPosition = this.tableStart + this.ligCaretListOffset;
12714        return new LigCaretList(p22);
12715      });
12716      this.markAttachClassDefOffset = p22.Offset16;
12717      lazy$1(this, `markAttachClassDef`, () => {
12718        if (this.markAttachClassDefOffset === 0) return void 0;
12719        p22.currentPosition = this.tableStart + this.markAttachClassDefOffset;
12720        return new ClassDefinition(p22);
12721      });
12722      if (this.minorVersion >= 2) {
12723        this.markGlyphSetsDefOffset = p22.Offset16;
12724        lazy$1(this, `markGlyphSetsDef`, () => {
12725          if (this.markGlyphSetsDefOffset === 0) return void 0;
12726          p22.currentPosition = this.tableStart + this.markGlyphSetsDefOffset;
12727          return new MarkGlyphSetsTable(p22);
12728        });
12729      }
12730      if (this.minorVersion === 3) {
12731        this.itemVarStoreOffset = p22.Offset32;
12732        lazy$1(this, `itemVarStore`, () => {
12733          if (this.itemVarStoreOffset === 0) return void 0;
12734          p22.currentPosition = this.tableStart + this.itemVarStoreOffset;
12735          return new ItemVariationStoreTable(p22);
12736        });
12737      }
12738    }
12739  };
12740  var AttachList = class extends ParsedData {
12741    constructor(p22) {
12742      super(p22);
12743      this.coverageOffset = p22.Offset16;
12744      this.glyphCount = p22.uint16;
12745      this.attachPointOffsets = [...new Array(this.glyphCount)].map(
12746        (_) => p22.Offset16
12747      );
12748    }
12749    getPoint(pointID) {
12750      this.parser.currentPosition = this.start + this.attachPointOffsets[pointID];
12751      return new AttachPoint(this.parser);
12752    }
12753  };
12754  var AttachPoint = class {
12755    constructor(p22) {
12756      this.pointCount = p22.uint16;
12757      this.pointIndices = [...new Array(this.pointCount)].map(
12758        (_) => p22.uint16
12759      );
12760    }
12761  };
12762  var LigCaretList = class extends ParsedData {
12763    constructor(p22) {
12764      super(p22);
12765      this.coverageOffset = p22.Offset16;
12766      lazy$1(this, `coverage`, () => {
12767        p22.currentPosition = this.start + this.coverageOffset;
12768        return new CoverageTable(p22);
12769      });
12770      this.ligGlyphCount = p22.uint16;
12771      this.ligGlyphOffsets = [...new Array(this.ligGlyphCount)].map(
12772        (_) => p22.Offset16
12773      );
12774    }
12775    getLigGlyph(ligGlyphID) {
12776      this.parser.currentPosition = this.start + this.ligGlyphOffsets[ligGlyphID];
12777      return new LigGlyph(this.parser);
12778    }
12779  };
12780  var LigGlyph = class extends ParsedData {
12781    constructor(p22) {
12782      super(p22);
12783      this.caretCount = p22.uint16;
12784      this.caretValueOffsets = [...new Array(this.caretCount)].map(
12785        (_) => p22.Offset16
12786      );
12787    }
12788    getCaretValue(caretID) {
12789      this.parser.currentPosition = this.start + this.caretValueOffsets[caretID];
12790      return new CaretValue(this.parser);
12791    }
12792  };
12793  var CaretValue = class {
12794    constructor(p22) {
12795      this.caretValueFormat = p22.uint16;
12796      if (this.caretValueFormat === 1) {
12797        this.coordinate = p22.int16;
12798      }
12799      if (this.caretValueFormat === 2) {
12800        this.caretValuePointIndex = p22.uint16;
12801      }
12802      if (this.caretValueFormat === 3) {
12803        this.coordinate = p22.int16;
12804        this.deviceOffset = p22.Offset16;
12805      }
12806    }
12807  };
12808  var MarkGlyphSetsTable = class extends ParsedData {
12809    constructor(p22) {
12810      super(p22);
12811      this.markGlyphSetTableFormat = p22.uint16;
12812      this.markGlyphSetCount = p22.uint16;
12813      this.coverageOffsets = [...new Array(this.markGlyphSetCount)].map(
12814        (_) => p22.Offset32
12815      );
12816    }
12817    getMarkGlyphSet(markGlyphSetID) {
12818      this.parser.currentPosition = this.start + this.coverageOffsets[markGlyphSetID];
12819      return new CoverageTable(this.parser);
12820    }
12821  };
12822  var GDEF$1 = Object.freeze({ __proto__: null, GDEF });
12823  var ScriptList = class extends ParsedData {
12824    static EMPTY = { scriptCount: 0, scriptRecords: [] };
12825    constructor(p22) {
12826      super(p22);
12827      this.scriptCount = p22.uint16;
12828      this.scriptRecords = [...new Array(this.scriptCount)].map(
12829        (_) => new ScriptRecord(p22)
12830      );
12831    }
12832  };
12833  var ScriptRecord = class {
12834    constructor(p22) {
12835      this.scriptTag = p22.tag;
12836      this.scriptOffset = p22.Offset16;
12837    }
12838  };
12839  var ScriptTable = class extends ParsedData {
12840    constructor(p22) {
12841      super(p22);
12842      this.defaultLangSys = p22.Offset16;
12843      this.langSysCount = p22.uint16;
12844      this.langSysRecords = [...new Array(this.langSysCount)].map(
12845        (_) => new LangSysRecord(p22)
12846      );
12847    }
12848  };
12849  var LangSysRecord = class {
12850    constructor(p22) {
12851      this.langSysTag = p22.tag;
12852      this.langSysOffset = p22.Offset16;
12853    }
12854  };
12855  var LangSysTable = class {
12856    constructor(p22) {
12857      this.lookupOrder = p22.Offset16;
12858      this.requiredFeatureIndex = p22.uint16;
12859      this.featureIndexCount = p22.uint16;
12860      this.featureIndices = [...new Array(this.featureIndexCount)].map(
12861        (_) => p22.uint16
12862      );
12863    }
12864  };
12865  var FeatureList = class extends ParsedData {
12866    static EMPTY = { featureCount: 0, featureRecords: [] };
12867    constructor(p22) {
12868      super(p22);
12869      this.featureCount = p22.uint16;
12870      this.featureRecords = [...new Array(this.featureCount)].map(
12871        (_) => new FeatureRecord(p22)
12872      );
12873    }
12874  };
12875  var FeatureRecord = class {
12876    constructor(p22) {
12877      this.featureTag = p22.tag;
12878      this.featureOffset = p22.Offset16;
12879    }
12880  };
12881  var FeatureTable = class extends ParsedData {
12882    constructor(p22) {
12883      super(p22);
12884      this.featureParams = p22.Offset16;
12885      this.lookupIndexCount = p22.uint16;
12886      this.lookupListIndices = [...new Array(this.lookupIndexCount)].map(
12887        (_) => p22.uint16
12888      );
12889    }
12890    getFeatureParams() {
12891      if (this.featureParams > 0) {
12892        const p22 = this.parser;
12893        p22.currentPosition = this.start + this.featureParams;
12894        const tag = this.featureTag;
12895        if (tag === `size`) return new Size(p22);
12896        if (tag.startsWith(`cc`)) return new CharacterVariant(p22);
12897        if (tag.startsWith(`ss`)) return new StylisticSet(p22);
12898      }
12899    }
12900  };
12901  var CharacterVariant = class {
12902    constructor(p22) {
12903      this.format = p22.uint16;
12904      this.featUiLabelNameId = p22.uint16;
12905      this.featUiTooltipTextNameId = p22.uint16;
12906      this.sampleTextNameId = p22.uint16;
12907      this.numNamedParameters = p22.uint16;
12908      this.firstParamUiLabelNameId = p22.uint16;
12909      this.charCount = p22.uint16;
12910      this.character = [...new Array(this.charCount)].map(
12911        (_) => p22.uint24
12912      );
12913    }
12914  };
12915  var Size = class {
12916    constructor(p22) {
12917      this.designSize = p22.uint16;
12918      this.subfamilyIdentifier = p22.uint16;
12919      this.subfamilyNameID = p22.uint16;
12920      this.smallEnd = p22.uint16;
12921      this.largeEnd = p22.uint16;
12922    }
12923  };
12924  var StylisticSet = class {
12925    constructor(p22) {
12926      this.version = p22.uint16;
12927      this.UINameID = p22.uint16;
12928    }
12929  };
12930  function undoCoverageOffsetParsing(instance) {
12931    instance.parser.currentPosition -= 2;
12932    delete instance.coverageOffset;
12933    delete instance.getCoverageTable;
12934  }
12935  var LookupType$1 = class extends ParsedData {
12936    constructor(p22) {
12937      super(p22);
12938      this.substFormat = p22.uint16;
12939      this.coverageOffset = p22.Offset16;
12940    }
12941    getCoverageTable() {
12942      let p22 = this.parser;
12943      p22.currentPosition = this.start + this.coverageOffset;
12944      return new CoverageTable(p22);
12945    }
12946  };
12947  var SubstLookupRecord = class {
12948    constructor(p22) {
12949      this.glyphSequenceIndex = p22.uint16;
12950      this.lookupListIndex = p22.uint16;
12951    }
12952  };
12953  var LookupType1$1 = class extends LookupType$1 {
12954    constructor(p22) {
12955      super(p22);
12956      this.deltaGlyphID = p22.int16;
12957    }
12958  };
12959  var LookupType2$1 = class extends LookupType$1 {
12960    constructor(p22) {
12961      super(p22);
12962      this.sequenceCount = p22.uint16;
12963      this.sequenceOffsets = [...new Array(this.sequenceCount)].map(
12964        (_) => p22.Offset16
12965      );
12966    }
12967    getSequence(index) {
12968      let p22 = this.parser;
12969      p22.currentPosition = this.start + this.sequenceOffsets[index];
12970      return new SequenceTable(p22);
12971    }
12972  };
12973  var SequenceTable = class {
12974    constructor(p22) {
12975      this.glyphCount = p22.uint16;
12976      this.substituteGlyphIDs = [...new Array(this.glyphCount)].map(
12977        (_) => p22.uint16
12978      );
12979    }
12980  };
12981  var LookupType3$1 = class extends LookupType$1 {
12982    constructor(p22) {
12983      super(p22);
12984      this.alternateSetCount = p22.uint16;
12985      this.alternateSetOffsets = [
12986        ...new Array(this.alternateSetCount)
12987      ].map((_) => p22.Offset16);
12988    }
12989    getAlternateSet(index) {
12990      let p22 = this.parser;
12991      p22.currentPosition = this.start + this.alternateSetOffsets[index];
12992      return new AlternateSetTable(p22);
12993    }
12994  };
12995  var AlternateSetTable = class {
12996    constructor(p22) {
12997      this.glyphCount = p22.uint16;
12998      this.alternateGlyphIDs = [...new Array(this.glyphCount)].map(
12999        (_) => p22.uint16
13000      );
13001    }
13002  };
13003  var LookupType4$1 = class extends LookupType$1 {
13004    constructor(p22) {
13005      super(p22);
13006      this.ligatureSetCount = p22.uint16;
13007      this.ligatureSetOffsets = [...new Array(this.ligatureSetCount)].map(
13008        (_) => p22.Offset16
13009      );
13010    }
13011    getLigatureSet(index) {
13012      let p22 = this.parser;
13013      p22.currentPosition = this.start + this.ligatureSetOffsets[index];
13014      return new LigatureSetTable(p22);
13015    }
13016  };
13017  var LigatureSetTable = class extends ParsedData {
13018    constructor(p22) {
13019      super(p22);
13020      this.ligatureCount = p22.uint16;
13021      this.ligatureOffsets = [...new Array(this.ligatureCount)].map(
13022        (_) => p22.Offset16
13023      );
13024    }
13025    getLigature(index) {
13026      let p22 = this.parser;
13027      p22.currentPosition = this.start + this.ligatureOffsets[index];
13028      return new LigatureTable(p22);
13029    }
13030  };
13031  var LigatureTable = class {
13032    constructor(p22) {
13033      this.ligatureGlyph = p22.uint16;
13034      this.componentCount = p22.uint16;
13035      this.componentGlyphIDs = [
13036        ...new Array(this.componentCount - 1)
13037      ].map((_) => p22.uint16);
13038    }
13039  };
13040  var LookupType5$1 = class extends LookupType$1 {
13041    constructor(p22) {
13042      super(p22);
13043      if (this.substFormat === 1) {
13044        this.subRuleSetCount = p22.uint16;
13045        this.subRuleSetOffsets = [
13046          ...new Array(this.subRuleSetCount)
13047        ].map((_) => p22.Offset16);
13048      }
13049      if (this.substFormat === 2) {
13050        this.classDefOffset = p22.Offset16;
13051        this.subClassSetCount = p22.uint16;
13052        this.subClassSetOffsets = [
13053          ...new Array(this.subClassSetCount)
13054        ].map((_) => p22.Offset16);
13055      }
13056      if (this.substFormat === 3) {
13057        undoCoverageOffsetParsing(this);
13058        this.glyphCount = p22.uint16;
13059        this.substitutionCount = p22.uint16;
13060        this.coverageOffsets = [...new Array(this.glyphCount)].map(
13061          (_) => p22.Offset16
13062        );
13063        this.substLookupRecords = [
13064          ...new Array(this.substitutionCount)
13065        ].map((_) => new SubstLookupRecord(p22));
13066      }
13067    }
13068    getSubRuleSet(index) {
13069      if (this.substFormat !== 1)
13070        throw new Error(
13071          `lookup type 5.$this.substFormat} has no subrule sets.`
13072        );
13073      let p22 = this.parser;
13074      p22.currentPosition = this.start + this.subRuleSetOffsets[index];
13075      return new SubRuleSetTable(p22);
13076    }
13077    getSubClassSet(index) {
13078      if (this.substFormat !== 2)
13079        throw new Error(
13080          `lookup type 5.$this.substFormat} has no subclass sets.`
13081        );
13082      let p22 = this.parser;
13083      p22.currentPosition = this.start + this.subClassSetOffsets[index];
13084      return new SubClassSetTable(p22);
13085    }
13086    getCoverageTable(index) {
13087      if (this.substFormat !== 3 && !index)
13088        return super.getCoverageTable();
13089      if (!index)
13090        throw new Error(
13091          `lookup type 5.$this.substFormat} requires an coverage table index.`
13092        );
13093      let p22 = this.parser;
13094      p22.currentPosition = this.start + this.coverageOffsets[index];
13095      return new CoverageTable(p22);
13096    }
13097  };
13098  var SubRuleSetTable = class extends ParsedData {
13099    constructor(p22) {
13100      super(p22);
13101      this.subRuleCount = p22.uint16;
13102      this.subRuleOffsets = [...new Array(this.subRuleCount)].map(
13103        (_) => p22.Offset16
13104      );
13105    }
13106    getSubRule(index) {
13107      let p22 = this.parser;
13108      p22.currentPosition = this.start + this.subRuleOffsets[index];
13109      return new SubRuleTable(p22);
13110    }
13111  };
13112  var SubRuleTable = class {
13113    constructor(p22) {
13114      this.glyphCount = p22.uint16;
13115      this.substitutionCount = p22.uint16;
13116      this.inputSequence = [...new Array(this.glyphCount - 1)].map(
13117        (_) => p22.uint16
13118      );
13119      this.substLookupRecords = [
13120        ...new Array(this.substitutionCount)
13121      ].map((_) => new SubstLookupRecord(p22));
13122    }
13123  };
13124  var SubClassSetTable = class extends ParsedData {
13125    constructor(p22) {
13126      super(p22);
13127      this.subClassRuleCount = p22.uint16;
13128      this.subClassRuleOffsets = [
13129        ...new Array(this.subClassRuleCount)
13130      ].map((_) => p22.Offset16);
13131    }
13132    getSubClass(index) {
13133      let p22 = this.parser;
13134      p22.currentPosition = this.start + this.subClassRuleOffsets[index];
13135      return new SubClassRuleTable(p22);
13136    }
13137  };
13138  var SubClassRuleTable = class extends SubRuleTable {
13139    constructor(p22) {
13140      super(p22);
13141    }
13142  };
13143  var LookupType6$1 = class extends LookupType$1 {
13144    constructor(p22) {
13145      super(p22);
13146      if (this.substFormat === 1) {
13147        this.chainSubRuleSetCount = p22.uint16;
13148        this.chainSubRuleSetOffsets = [
13149          ...new Array(this.chainSubRuleSetCount)
13150        ].map((_) => p22.Offset16);
13151      }
13152      if (this.substFormat === 2) {
13153        this.backtrackClassDefOffset = p22.Offset16;
13154        this.inputClassDefOffset = p22.Offset16;
13155        this.lookaheadClassDefOffset = p22.Offset16;
13156        this.chainSubClassSetCount = p22.uint16;
13157        this.chainSubClassSetOffsets = [
13158          ...new Array(this.chainSubClassSetCount)
13159        ].map((_) => p22.Offset16);
13160      }
13161      if (this.substFormat === 3) {
13162        undoCoverageOffsetParsing(this);
13163        this.backtrackGlyphCount = p22.uint16;
13164        this.backtrackCoverageOffsets = [
13165          ...new Array(this.backtrackGlyphCount)
13166        ].map((_) => p22.Offset16);
13167        this.inputGlyphCount = p22.uint16;
13168        this.inputCoverageOffsets = [
13169          ...new Array(this.inputGlyphCount)
13170        ].map((_) => p22.Offset16);
13171        this.lookaheadGlyphCount = p22.uint16;
13172        this.lookaheadCoverageOffsets = [
13173          ...new Array(this.lookaheadGlyphCount)
13174        ].map((_) => p22.Offset16);
13175        this.seqLookupCount = p22.uint16;
13176        this.seqLookupRecords = [
13177          ...new Array(this.substitutionCount)
13178        ].map((_) => new SequenceLookupRecord(p22));
13179      }
13180    }
13181    getChainSubRuleSet(index) {
13182      if (this.substFormat !== 1)
13183        throw new Error(
13184          `lookup type 6.$this.substFormat} has no chainsubrule sets.`
13185        );
13186      let p22 = this.parser;
13187      p22.currentPosition = this.start + this.chainSubRuleSetOffsets[index];
13188      return new ChainSubRuleSetTable(p22);
13189    }
13190    getChainSubClassSet(index) {
13191      if (this.substFormat !== 2)
13192        throw new Error(
13193          `lookup type 6.$this.substFormat} has no chainsubclass sets.`
13194        );
13195      let p22 = this.parser;
13196      p22.currentPosition = this.start + this.chainSubClassSetOffsets[index];
13197      return new ChainSubClassSetTable(p22);
13198    }
13199    getCoverageFromOffset(offset) {
13200      if (this.substFormat !== 3)
13201        throw new Error(
13202          `lookup type 6.$this.substFormat} does not use contextual coverage offsets.`
13203        );
13204      let p22 = this.parser;
13205      p22.currentPosition = this.start + offset;
13206      return new CoverageTable(p22);
13207    }
13208  };
13209  var ChainSubRuleSetTable = class extends ParsedData {
13210    constructor(p22) {
13211      super(p22);
13212      this.chainSubRuleCount = p22.uint16;
13213      this.chainSubRuleOffsets = [
13214        ...new Array(this.chainSubRuleCount)
13215      ].map((_) => p22.Offset16);
13216    }
13217    getSubRule(index) {
13218      let p22 = this.parser;
13219      p22.currentPosition = this.start + this.chainSubRuleOffsets[index];
13220      return new ChainSubRuleTable(p22);
13221    }
13222  };
13223  var ChainSubRuleTable = class {
13224    constructor(p22) {
13225      this.backtrackGlyphCount = p22.uint16;
13226      this.backtrackSequence = [
13227        ...new Array(this.backtrackGlyphCount)
13228      ].map((_) => p22.uint16);
13229      this.inputGlyphCount = p22.uint16;
13230      this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map(
13231        (_) => p22.uint16
13232      );
13233      this.lookaheadGlyphCount = p22.uint16;
13234      this.lookAheadSequence = [
13235        ...new Array(this.lookAheadGlyphCount)
13236      ].map((_) => p22.uint16);
13237      this.substitutionCount = p22.uint16;
13238      this.substLookupRecords = [...new Array(this.SubstCount)].map(
13239        (_) => new SubstLookupRecord(p22)
13240      );
13241    }
13242  };
13243  var ChainSubClassSetTable = class extends ParsedData {
13244    constructor(p22) {
13245      super(p22);
13246      this.chainSubClassRuleCount = p22.uint16;
13247      this.chainSubClassRuleOffsets = [
13248        ...new Array(this.chainSubClassRuleCount)
13249      ].map((_) => p22.Offset16);
13250    }
13251    getSubClass(index) {
13252      let p22 = this.parser;
13253      p22.currentPosition = this.start + this.chainSubRuleOffsets[index];
13254      return new ChainSubClassRuleTable(p22);
13255    }
13256  };
13257  var ChainSubClassRuleTable = class {
13258    constructor(p22) {
13259      this.backtrackGlyphCount = p22.uint16;
13260      this.backtrackSequence = [
13261        ...new Array(this.backtrackGlyphCount)
13262      ].map((_) => p22.uint16);
13263      this.inputGlyphCount = p22.uint16;
13264      this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map(
13265        (_) => p22.uint16
13266      );
13267      this.lookaheadGlyphCount = p22.uint16;
13268      this.lookAheadSequence = [
13269        ...new Array(this.lookAheadGlyphCount)
13270      ].map((_) => p22.uint16);
13271      this.substitutionCount = p22.uint16;
13272      this.substLookupRecords = [
13273        ...new Array(this.substitutionCount)
13274      ].map((_) => new SequenceLookupRecord(p22));
13275    }
13276  };
13277  var SequenceLookupRecord = class extends ParsedData {
13278    constructor(p22) {
13279      super(p22);
13280      this.sequenceIndex = p22.uint16;
13281      this.lookupListIndex = p22.uint16;
13282    }
13283  };
13284  var LookupType7$1 = class extends ParsedData {
13285    constructor(p22) {
13286      super(p22);
13287      this.substFormat = p22.uint16;
13288      this.extensionLookupType = p22.uint16;
13289      this.extensionOffset = p22.Offset32;
13290    }
13291  };
13292  var LookupType8$1 = class extends LookupType$1 {
13293    constructor(p22) {
13294      super(p22);
13295      this.backtrackGlyphCount = p22.uint16;
13296      this.backtrackCoverageOffsets = [
13297        ...new Array(this.backtrackGlyphCount)
13298      ].map((_) => p22.Offset16);
13299      this.lookaheadGlyphCount = p22.uint16;
13300      this.lookaheadCoverageOffsets = [
13301        new Array(this.lookaheadGlyphCount)
13302      ].map((_) => p22.Offset16);
13303      this.glyphCount = p22.uint16;
13304      this.substituteGlyphIDs = [...new Array(this.glyphCount)].map(
13305        (_) => p22.uint16
13306      );
13307    }
13308  };
13309  var GSUBtables = {
13310    buildSubtable: function(type, p22) {
13311      const subtable = new [
13312        void 0,
13313        LookupType1$1,
13314        LookupType2$1,
13315        LookupType3$1,
13316        LookupType4$1,
13317        LookupType5$1,
13318        LookupType6$1,
13319        LookupType7$1,
13320        LookupType8$1
13321      ][type](p22);
13322      subtable.type = type;
13323      return subtable;
13324    }
13325  };
13326  var LookupType = class extends ParsedData {
13327    constructor(p22) {
13328      super(p22);
13329    }
13330  };
13331  var LookupType1 = class extends LookupType {
13332    constructor(p22) {
13333      super(p22);
13334      console.log(`lookup type 1`);
13335    }
13336  };
13337  var LookupType2 = class extends LookupType {
13338    constructor(p22) {
13339      super(p22);
13340      console.log(`lookup type 2`);
13341    }
13342  };
13343  var LookupType3 = class extends LookupType {
13344    constructor(p22) {
13345      super(p22);
13346      console.log(`lookup type 3`);
13347    }
13348  };
13349  var LookupType4 = class extends LookupType {
13350    constructor(p22) {
13351      super(p22);
13352      console.log(`lookup type 4`);
13353    }
13354  };
13355  var LookupType5 = class extends LookupType {
13356    constructor(p22) {
13357      super(p22);
13358      console.log(`lookup type 5`);
13359    }
13360  };
13361  var LookupType6 = class extends LookupType {
13362    constructor(p22) {
13363      super(p22);
13364      console.log(`lookup type 6`);
13365    }
13366  };
13367  var LookupType7 = class extends LookupType {
13368    constructor(p22) {
13369      super(p22);
13370      console.log(`lookup type 7`);
13371    }
13372  };
13373  var LookupType8 = class extends LookupType {
13374    constructor(p22) {
13375      super(p22);
13376      console.log(`lookup type 8`);
13377    }
13378  };
13379  var LookupType9 = class extends LookupType {
13380    constructor(p22) {
13381      super(p22);
13382      console.log(`lookup type 9`);
13383    }
13384  };
13385  var GPOStables = {
13386    buildSubtable: function(type, p22) {
13387      const subtable = new [
13388        void 0,
13389        LookupType1,
13390        LookupType2,
13391        LookupType3,
13392        LookupType4,
13393        LookupType5,
13394        LookupType6,
13395        LookupType7,
13396        LookupType8,
13397        LookupType9
13398      ][type](p22);
13399      subtable.type = type;
13400      return subtable;
13401    }
13402  };
13403  var LookupList = class extends ParsedData {
13404    static EMPTY = { lookupCount: 0, lookups: [] };
13405    constructor(p22) {
13406      super(p22);
13407      this.lookupCount = p22.uint16;
13408      this.lookups = [...new Array(this.lookupCount)].map(
13409        (_) => p22.Offset16
13410      );
13411    }
13412  };
13413  var LookupTable = class extends ParsedData {
13414    constructor(p22, type) {
13415      super(p22);
13416      this.ctType = type;
13417      this.lookupType = p22.uint16;
13418      this.lookupFlag = p22.uint16;
13419      this.subTableCount = p22.uint16;
13420      this.subtableOffsets = [...new Array(this.subTableCount)].map(
13421        (_) => p22.Offset16
13422      );
13423      this.markFilteringSet = p22.uint16;
13424    }
13425    get rightToLeft() {
13426      return this.lookupFlag & true;
13427    }
13428    get ignoreBaseGlyphs() {
13429      return this.lookupFlag & true;
13430    }
13431    get ignoreLigatures() {
13432      return this.lookupFlag & true;
13433    }
13434    get ignoreMarks() {
13435      return this.lookupFlag & true;
13436    }
13437    get useMarkFilteringSet() {
13438      return this.lookupFlag & true;
13439    }
13440    get markAttachmentType() {
13441      return this.lookupFlag & true;
13442    }
13443    getSubTable(index) {
13444      const builder = this.ctType === `GSUB` ? GSUBtables : GPOStables;
13445      this.parser.currentPosition = this.start + this.subtableOffsets[index];
13446      return builder.buildSubtable(this.lookupType, this.parser);
13447    }
13448  };
13449  var CommonLayoutTable = class extends SimpleTable {
13450    constructor(dict, dataview, name2) {
13451      const { p: p22, tableStart } = super(dict, dataview, name2);
13452      this.majorVersion = p22.uint16;
13453      this.minorVersion = p22.uint16;
13454      this.scriptListOffset = p22.Offset16;
13455      this.featureListOffset = p22.Offset16;
13456      this.lookupListOffset = p22.Offset16;
13457      if (this.majorVersion === 1 && this.minorVersion === 1) {
13458        this.featureVariationsOffset = p22.Offset32;
13459      }
13460      const no_content = !(this.scriptListOffset || this.featureListOffset || this.lookupListOffset);
13461      lazy$1(this, `scriptList`, () => {
13462        if (no_content) return ScriptList.EMPTY;
13463        p22.currentPosition = tableStart + this.scriptListOffset;
13464        return new ScriptList(p22);
13465      });
13466      lazy$1(this, `featureList`, () => {
13467        if (no_content) return FeatureList.EMPTY;
13468        p22.currentPosition = tableStart + this.featureListOffset;
13469        return new FeatureList(p22);
13470      });
13471      lazy$1(this, `lookupList`, () => {
13472        if (no_content) return LookupList.EMPTY;
13473        p22.currentPosition = tableStart + this.lookupListOffset;
13474        return new LookupList(p22);
13475      });
13476      if (this.featureVariationsOffset) {
13477        lazy$1(this, `featureVariations`, () => {
13478          if (no_content) return FeatureVariations.EMPTY;
13479          p22.currentPosition = tableStart + this.featureVariationsOffset;
13480          return new FeatureVariations(p22);
13481        });
13482      }
13483    }
13484    getSupportedScripts() {
13485      return this.scriptList.scriptRecords.map((r3) => r3.scriptTag);
13486    }
13487    getScriptTable(scriptTag) {
13488      let record = this.scriptList.scriptRecords.find(
13489        (r3) => r3.scriptTag === scriptTag
13490      );
13491      this.parser.currentPosition = this.scriptList.start + record.scriptOffset;
13492      let table = new ScriptTable(this.parser);
13493      table.scriptTag = scriptTag;
13494      return table;
13495    }
13496    ensureScriptTable(arg) {
13497      if (typeof arg === "string") {
13498        return this.getScriptTable(arg);
13499      }
13500      return arg;
13501    }
13502    getSupportedLangSys(scriptTable) {
13503      scriptTable = this.ensureScriptTable(scriptTable);
13504      const hasDefault = scriptTable.defaultLangSys !== 0;
13505      const supported = scriptTable.langSysRecords.map(
13506        (l2) => l2.langSysTag
13507      );
13508      if (hasDefault) supported.unshift(`dflt`);
13509      return supported;
13510    }
13511    getDefaultLangSysTable(scriptTable) {
13512      scriptTable = this.ensureScriptTable(scriptTable);
13513      let offset = scriptTable.defaultLangSys;
13514      if (offset !== 0) {
13515        this.parser.currentPosition = scriptTable.start + offset;
13516        let table = new LangSysTable(this.parser);
13517        table.langSysTag = ``;
13518        table.defaultForScript = scriptTable.scriptTag;
13519        return table;
13520      }
13521    }
13522    getLangSysTable(scriptTable, langSysTag = `dflt`) {
13523      if (langSysTag === `dflt`)
13524        return this.getDefaultLangSysTable(scriptTable);
13525      scriptTable = this.ensureScriptTable(scriptTable);
13526      let record = scriptTable.langSysRecords.find(
13527        (l2) => l2.langSysTag === langSysTag
13528      );
13529      this.parser.currentPosition = scriptTable.start + record.langSysOffset;
13530      let table = new LangSysTable(this.parser);
13531      table.langSysTag = langSysTag;
13532      return table;
13533    }
13534    getFeatures(langSysTable) {
13535      return langSysTable.featureIndices.map(
13536        (index) => this.getFeature(index)
13537      );
13538    }
13539    getFeature(indexOrTag) {
13540      let record;
13541      if (parseInt(indexOrTag) == indexOrTag) {
13542        record = this.featureList.featureRecords[indexOrTag];
13543      } else {
13544        record = this.featureList.featureRecords.find(
13545          (f2) => f2.featureTag === indexOrTag
13546        );
13547      }
13548      if (!record) return;
13549      this.parser.currentPosition = this.featureList.start + record.featureOffset;
13550      let table = new FeatureTable(this.parser);
13551      table.featureTag = record.featureTag;
13552      return table;
13553    }
13554    getLookups(featureTable) {
13555      return featureTable.lookupListIndices.map(
13556        (index) => this.getLookup(index)
13557      );
13558    }
13559    getLookup(lookupIndex, type) {
13560      let lookupOffset = this.lookupList.lookups[lookupIndex];
13561      this.parser.currentPosition = this.lookupList.start + lookupOffset;
13562      return new LookupTable(this.parser, type);
13563    }
13564  };
13565  var GSUB = class extends CommonLayoutTable {
13566    constructor(dict, dataview) {
13567      super(dict, dataview, `GSUB`);
13568    }
13569    getLookup(lookupIndex) {
13570      return super.getLookup(lookupIndex, `GSUB`);
13571    }
13572  };
13573  var GSUB$1 = Object.freeze({ __proto__: null, GSUB });
13574  var GPOS = class extends CommonLayoutTable {
13575    constructor(dict, dataview) {
13576      super(dict, dataview, `GPOS`);
13577    }
13578    getLookup(lookupIndex) {
13579      return super.getLookup(lookupIndex, `GPOS`);
13580    }
13581  };
13582  var GPOS$1 = Object.freeze({ __proto__: null, GPOS });
13583  var SVG6 = class extends SimpleTable {
13584    constructor(dict, dataview) {
13585      const { p: p22 } = super(dict, dataview);
13586      this.version = p22.uint16;
13587      this.offsetToSVGDocumentList = p22.Offset32;
13588      p22.currentPosition = this.tableStart + this.offsetToSVGDocumentList;
13589      this.documentList = new SVGDocumentList(p22);
13590    }
13591  };
13592  var SVGDocumentList = class extends ParsedData {
13593    constructor(p22) {
13594      super(p22);
13595      this.numEntries = p22.uint16;
13596      this.documentRecords = [...new Array(this.numEntries)].map(
13597        (_) => new SVGDocumentRecord(p22)
13598      );
13599    }
13600    getDocument(documentID) {
13601      let record = this.documentRecords[documentID];
13602      if (!record) return "";
13603      let offset = this.start + record.svgDocOffset;
13604      this.parser.currentPosition = offset;
13605      return this.parser.readBytes(record.svgDocLength);
13606    }
13607    getDocumentForGlyph(glyphID) {
13608      let id = this.documentRecords.findIndex(
13609        (d2) => d2.startGlyphID <= glyphID && glyphID <= d2.endGlyphID
13610      );
13611      if (id === -1) return "";
13612      return this.getDocument(id);
13613    }
13614  };
13615  var SVGDocumentRecord = class {
13616    constructor(p22) {
13617      this.startGlyphID = p22.uint16;
13618      this.endGlyphID = p22.uint16;
13619      this.svgDocOffset = p22.Offset32;
13620      this.svgDocLength = p22.uint32;
13621    }
13622  };
13623  var SVG$1 = Object.freeze({ __proto__: null, SVG: SVG6 });
13624  var fvar = class extends SimpleTable {
13625    constructor(dict, dataview) {
13626      const { p: p22 } = super(dict, dataview);
13627      this.majorVersion = p22.uint16;
13628      this.minorVersion = p22.uint16;
13629      this.axesArrayOffset = p22.Offset16;
13630      p22.uint16;
13631      this.axisCount = p22.uint16;
13632      this.axisSize = p22.uint16;
13633      this.instanceCount = p22.uint16;
13634      this.instanceSize = p22.uint16;
13635      const axisStart = this.tableStart + this.axesArrayOffset;
13636      lazy$1(this, `axes`, () => {
13637        p22.currentPosition = axisStart;
13638        return [...new Array(this.axisCount)].map(
13639          (_) => new VariationAxisRecord(p22)
13640        );
13641      });
13642      const instanceStart = axisStart + this.axisCount * this.axisSize;
13643      lazy$1(this, `instances`, () => {
13644        let instances = [];
13645        for (let i2 = 0; i2 < this.instanceCount; i2++) {
13646          p22.currentPosition = instanceStart + i2 * this.instanceSize;
13647          instances.push(
13648            new InstanceRecord(p22, this.axisCount, this.instanceSize)
13649          );
13650        }
13651        return instances;
13652      });
13653    }
13654    getSupportedAxes() {
13655      return this.axes.map((a2) => a2.tag);
13656    }
13657    getAxis(name2) {
13658      return this.axes.find((a2) => a2.tag === name2);
13659    }
13660  };
13661  var VariationAxisRecord = class {
13662    constructor(p22) {
13663      this.tag = p22.tag;
13664      this.minValue = p22.fixed;
13665      this.defaultValue = p22.fixed;
13666      this.maxValue = p22.fixed;
13667      this.flags = p22.flags(16);
13668      this.axisNameID = p22.uint16;
13669    }
13670  };
13671  var InstanceRecord = class {
13672    constructor(p22, axisCount, size) {
13673      let start = p22.currentPosition;
13674      this.subfamilyNameID = p22.uint16;
13675      p22.uint16;
13676      this.coordinates = [...new Array(axisCount)].map(
13677        (_) => p22.fixed
13678      );
13679      if (p22.currentPosition - start < size) {
13680        this.postScriptNameID = p22.uint16;
13681      }
13682    }
13683  };
13684  var fvar$1 = Object.freeze({ __proto__: null, fvar });
13685  var cvt = class extends SimpleTable {
13686    constructor(dict, dataview) {
13687      const { p: p22 } = super(dict, dataview);
13688      const n2 = dict.length / 2;
13689      lazy$1(
13690        this,
13691        `items`,
13692        () => [...new Array(n2)].map((_) => p22.fword)
13693      );
13694    }
13695  };
13696  var cvt$1 = Object.freeze({ __proto__: null, cvt });
13697  var fpgm = class extends SimpleTable {
13698    constructor(dict, dataview) {
13699      const { p: p22 } = super(dict, dataview);
13700      lazy$1(
13701        this,
13702        `instructions`,
13703        () => [...new Array(dict.length)].map((_) => p22.uint8)
13704      );
13705    }
13706  };
13707  var fpgm$1 = Object.freeze({ __proto__: null, fpgm });
13708  var gasp = class extends SimpleTable {
13709    constructor(dict, dataview) {
13710      const { p: p22 } = super(dict, dataview);
13711      this.version = p22.uint16;
13712      this.numRanges = p22.uint16;
13713      const getter = () => [...new Array(this.numRanges)].map(
13714        (_) => new GASPRange(p22)
13715      );
13716      lazy$1(this, `gaspRanges`, getter);
13717    }
13718  };
13719  var GASPRange = class {
13720    constructor(p22) {
13721      this.rangeMaxPPEM = p22.uint16;
13722      this.rangeGaspBehavior = p22.uint16;
13723    }
13724  };
13725  var gasp$1 = Object.freeze({ __proto__: null, gasp });
13726  var glyf = class extends SimpleTable {
13727    constructor(dict, dataview) {
13728      super(dict, dataview);
13729    }
13730    getGlyphData(offset, length) {
13731      this.parser.currentPosition = this.tableStart + offset;
13732      return this.parser.readBytes(length);
13733    }
13734  };
13735  var glyf$1 = Object.freeze({ __proto__: null, glyf });
13736  var loca = class extends SimpleTable {
13737    constructor(dict, dataview, tables) {
13738      const { p: p22 } = super(dict, dataview);
13739      const n2 = tables.maxp.numGlyphs + 1;
13740      if (tables.head.indexToLocFormat === 0) {
13741        this.x2 = true;
13742        lazy$1(
13743          this,
13744          `offsets`,
13745          () => [...new Array(n2)].map((_) => p22.Offset16)
13746        );
13747      } else {
13748        lazy$1(
13749          this,
13750          `offsets`,
13751          () => [...new Array(n2)].map((_) => p22.Offset32)
13752        );
13753      }
13754    }
13755    getGlyphDataOffsetAndLength(glyphID) {
13756      let offset = this.offsets[glyphID] * this.x2 ? 2 : 1;
13757      let nextOffset = this.offsets[glyphID + 1] * this.x2 ? 2 : 1;
13758      return { offset, length: nextOffset - offset };
13759    }
13760  };
13761  var loca$1 = Object.freeze({ __proto__: null, loca });
13762  var prep = class extends SimpleTable {
13763    constructor(dict, dataview) {
13764      const { p: p22 } = super(dict, dataview);
13765      lazy$1(
13766        this,
13767        `instructions`,
13768        () => [...new Array(dict.length)].map((_) => p22.uint8)
13769      );
13770    }
13771  };
13772  var prep$1 = Object.freeze({ __proto__: null, prep });
13773  var CFF = class extends SimpleTable {
13774    constructor(dict, dataview) {
13775      const { p: p22 } = super(dict, dataview);
13776      lazy$1(this, `data`, () => p22.readBytes());
13777    }
13778  };
13779  var CFF$1 = Object.freeze({ __proto__: null, CFF });
13780  var CFF2 = class extends SimpleTable {
13781    constructor(dict, dataview) {
13782      const { p: p22 } = super(dict, dataview);
13783      lazy$1(this, `data`, () => p22.readBytes());
13784    }
13785  };
13786  var CFF2$1 = Object.freeze({ __proto__: null, CFF2 });
13787  var VORG = class extends SimpleTable {
13788    constructor(dict, dataview) {
13789      const { p: p22 } = super(dict, dataview);
13790      this.majorVersion = p22.uint16;
13791      this.minorVersion = p22.uint16;
13792      this.defaultVertOriginY = p22.int16;
13793      this.numVertOriginYMetrics = p22.uint16;
13794      lazy$1(
13795        this,
13796        `vertORiginYMetrics`,
13797        () => [...new Array(this.numVertOriginYMetrics)].map(
13798          (_) => new VertOriginYMetric(p22)
13799        )
13800      );
13801    }
13802  };
13803  var VertOriginYMetric = class {
13804    constructor(p22) {
13805      this.glyphIndex = p22.uint16;
13806      this.vertOriginY = p22.int16;
13807    }
13808  };
13809  var VORG$1 = Object.freeze({ __proto__: null, VORG });
13810  var BitmapSize = class {
13811    constructor(p22) {
13812      this.indexSubTableArrayOffset = p22.Offset32;
13813      this.indexTablesSize = p22.uint32;
13814      this.numberofIndexSubTables = p22.uint32;
13815      this.colorRef = p22.uint32;
13816      this.hori = new SbitLineMetrics(p22);
13817      this.vert = new SbitLineMetrics(p22);
13818      this.startGlyphIndex = p22.uint16;
13819      this.endGlyphIndex = p22.uint16;
13820      this.ppemX = p22.uint8;
13821      this.ppemY = p22.uint8;
13822      this.bitDepth = p22.uint8;
13823      this.flags = p22.int8;
13824    }
13825  };
13826  var BitmapScale = class {
13827    constructor(p22) {
13828      this.hori = new SbitLineMetrics(p22);
13829      this.vert = new SbitLineMetrics(p22);
13830      this.ppemX = p22.uint8;
13831      this.ppemY = p22.uint8;
13832      this.substitutePpemX = p22.uint8;
13833      this.substitutePpemY = p22.uint8;
13834    }
13835  };
13836  var SbitLineMetrics = class {
13837    constructor(p22) {
13838      this.ascender = p22.int8;
13839      this.descender = p22.int8;
13840      this.widthMax = p22.uint8;
13841      this.caretSlopeNumerator = p22.int8;
13842      this.caretSlopeDenominator = p22.int8;
13843      this.caretOffset = p22.int8;
13844      this.minOriginSB = p22.int8;
13845      this.minAdvanceSB = p22.int8;
13846      this.maxBeforeBL = p22.int8;
13847      this.minAfterBL = p22.int8;
13848      this.pad1 = p22.int8;
13849      this.pad2 = p22.int8;
13850    }
13851  };
13852  var EBLC = class extends SimpleTable {
13853    constructor(dict, dataview, name2) {
13854      const { p: p22 } = super(dict, dataview, name2);
13855      this.majorVersion = p22.uint16;
13856      this.minorVersion = p22.uint16;
13857      this.numSizes = p22.uint32;
13858      lazy$1(
13859        this,
13860        `bitMapSizes`,
13861        () => [...new Array(this.numSizes)].map(
13862          (_) => new BitmapSize(p22)
13863        )
13864      );
13865    }
13866  };
13867  var EBLC$1 = Object.freeze({ __proto__: null, EBLC });
13868  var EBDT = class extends SimpleTable {
13869    constructor(dict, dataview, name2) {
13870      const { p: p22 } = super(dict, dataview, name2);
13871      this.majorVersion = p22.uint16;
13872      this.minorVersion = p22.uint16;
13873    }
13874  };
13875  var EBDT$1 = Object.freeze({ __proto__: null, EBDT });
13876  var EBSC = class extends SimpleTable {
13877    constructor(dict, dataview) {
13878      const { p: p22 } = super(dict, dataview);
13879      this.majorVersion = p22.uint16;
13880      this.minorVersion = p22.uint16;
13881      this.numSizes = p22.uint32;
13882      lazy$1(
13883        this,
13884        `bitmapScales`,
13885        () => [...new Array(this.numSizes)].map(
13886          (_) => new BitmapScale(p22)
13887        )
13888      );
13889    }
13890  };
13891  var EBSC$1 = Object.freeze({ __proto__: null, EBSC });
13892  var CBLC = class extends EBLC {
13893    constructor(dict, dataview) {
13894      super(dict, dataview, `CBLC`);
13895    }
13896  };
13897  var CBLC$1 = Object.freeze({ __proto__: null, CBLC });
13898  var CBDT = class extends EBDT {
13899    constructor(dict, dataview) {
13900      super(dict, dataview, `CBDT`);
13901    }
13902  };
13903  var CBDT$1 = Object.freeze({ __proto__: null, CBDT });
13904  var sbix = class extends SimpleTable {
13905    constructor(dict, dataview) {
13906      const { p: p22 } = super(dict, dataview);
13907      this.version = p22.uint16;
13908      this.flags = p22.flags(16);
13909      this.numStrikes = p22.uint32;
13910      lazy$1(
13911        this,
13912        `strikeOffsets`,
13913        () => [...new Array(this.numStrikes)].map((_) => p22.Offset32)
13914      );
13915    }
13916  };
13917  var sbix$1 = Object.freeze({ __proto__: null, sbix });
13918  var COLR = class extends SimpleTable {
13919    constructor(dict, dataview) {
13920      const { p: p22 } = super(dict, dataview);
13921      this.version = p22.uint16;
13922      this.numBaseGlyphRecords = p22.uint16;
13923      this.baseGlyphRecordsOffset = p22.Offset32;
13924      this.layerRecordsOffset = p22.Offset32;
13925      this.numLayerRecords = p22.uint16;
13926    }
13927    getBaseGlyphRecord(glyphID) {
13928      let start = this.tableStart + this.baseGlyphRecordsOffset;
13929      this.parser.currentPosition = start;
13930      let first = new BaseGlyphRecord(this.parser);
13931      let firstID = first.gID;
13932      let end = this.tableStart + this.layerRecordsOffset - 6;
13933      this.parser.currentPosition = end;
13934      let last = new BaseGlyphRecord(this.parser);
13935      let lastID = last.gID;
13936      if (firstID === glyphID) return first;
13937      if (lastID === glyphID) return last;
13938      while (true) {
13939        if (start === end) break;
13940        let mid = start + (end - start) / 12;
13941        this.parser.currentPosition = mid;
13942        let middle = new BaseGlyphRecord(this.parser);
13943        let midID = middle.gID;
13944        if (midID === glyphID) return middle;
13945        else if (midID > glyphID) {
13946          end = mid;
13947        } else if (midID < glyphID) {
13948          start = mid;
13949        }
13950      }
13951      return false;
13952    }
13953    getLayers(glyphID) {
13954      let record = this.getBaseGlyphRecord(glyphID);
13955      this.parser.currentPosition = this.tableStart + this.layerRecordsOffset + 4 * record.firstLayerIndex;
13956      return [...new Array(record.numLayers)].map(
13957        (_) => new LayerRecord(p)
13958      );
13959    }
13960  };
13961  var BaseGlyphRecord = class {
13962    constructor(p22) {
13963      this.gID = p22.uint16;
13964      this.firstLayerIndex = p22.uint16;
13965      this.numLayers = p22.uint16;
13966    }
13967  };
13968  var LayerRecord = class {
13969    constructor(p22) {
13970      this.gID = p22.uint16;
13971      this.paletteIndex = p22.uint16;
13972    }
13973  };
13974  var COLR$1 = Object.freeze({ __proto__: null, COLR });
13975  var CPAL = class extends SimpleTable {
13976    constructor(dict, dataview) {
13977      const { p: p22 } = super(dict, dataview);
13978      this.version = p22.uint16;
13979      this.numPaletteEntries = p22.uint16;
13980      const numPalettes = this.numPalettes = p22.uint16;
13981      this.numColorRecords = p22.uint16;
13982      this.offsetFirstColorRecord = p22.Offset32;
13983      this.colorRecordIndices = [...new Array(this.numPalettes)].map(
13984        (_) => p22.uint16
13985      );
13986      lazy$1(this, `colorRecords`, () => {
13987        p22.currentPosition = this.tableStart + this.offsetFirstColorRecord;
13988        return [...new Array(this.numColorRecords)].map(
13989          (_) => new ColorRecord(p22)
13990        );
13991      });
13992      if (this.version === 1) {
13993        this.offsetPaletteTypeArray = p22.Offset32;
13994        this.offsetPaletteLabelArray = p22.Offset32;
13995        this.offsetPaletteEntryLabelArray = p22.Offset32;
13996        lazy$1(this, `paletteTypeArray`, () => {
13997          p22.currentPosition = this.tableStart + this.offsetPaletteTypeArray;
13998          return new PaletteTypeArray(p22, numPalettes);
13999        });
14000        lazy$1(this, `paletteLabelArray`, () => {
14001          p22.currentPosition = this.tableStart + this.offsetPaletteLabelArray;
14002          return new PaletteLabelsArray(p22, numPalettes);
14003        });
14004        lazy$1(this, `paletteEntryLabelArray`, () => {
14005          p22.currentPosition = this.tableStart + this.offsetPaletteEntryLabelArray;
14006          return new PaletteEntryLabelArray(p22, numPalettes);
14007        });
14008      }
14009    }
14010  };
14011  var ColorRecord = class {
14012    constructor(p22) {
14013      this.blue = p22.uint8;
14014      this.green = p22.uint8;
14015      this.red = p22.uint8;
14016      this.alpha = p22.uint8;
14017    }
14018  };
14019  var PaletteTypeArray = class {
14020    constructor(p22, numPalettes) {
14021      this.paletteTypes = [...new Array(numPalettes)].map(
14022        (_) => p22.uint32
14023      );
14024    }
14025  };
14026  var PaletteLabelsArray = class {
14027    constructor(p22, numPalettes) {
14028      this.paletteLabels = [...new Array(numPalettes)].map(
14029        (_) => p22.uint16
14030      );
14031    }
14032  };
14033  var PaletteEntryLabelArray = class {
14034    constructor(p22, numPalettes) {
14035      this.paletteEntryLabels = [...new Array(numPalettes)].map(
14036        (_) => p22.uint16
14037      );
14038    }
14039  };
14040  var CPAL$1 = Object.freeze({ __proto__: null, CPAL });
14041  var DSIG = class extends SimpleTable {
14042    constructor(dict, dataview) {
14043      const { p: p22 } = super(dict, dataview);
14044      this.version = p22.uint32;
14045      this.numSignatures = p22.uint16;
14046      this.flags = p22.uint16;
14047      this.signatureRecords = [...new Array(this.numSignatures)].map(
14048        (_) => new SignatureRecord(p22)
14049      );
14050    }
14051    getData(signatureID) {
14052      const record = this.signatureRecords[signatureID];
14053      this.parser.currentPosition = this.tableStart + record.offset;
14054      return new SignatureBlockFormat1(this.parser);
14055    }
14056  };
14057  var SignatureRecord = class {
14058    constructor(p22) {
14059      this.format = p22.uint32;
14060      this.length = p22.uint32;
14061      this.offset = p22.Offset32;
14062    }
14063  };
14064  var SignatureBlockFormat1 = class {
14065    constructor(p22) {
14066      p22.uint16;
14067      p22.uint16;
14068      this.signatureLength = p22.uint32;
14069      this.signature = p22.readBytes(this.signatureLength);
14070    }
14071  };
14072  var DSIG$1 = Object.freeze({ __proto__: null, DSIG });
14073  var hdmx = class extends SimpleTable {
14074    constructor(dict, dataview, tables) {
14075      const { p: p22 } = super(dict, dataview);
14076      const numGlyphs = tables.hmtx.numGlyphs;
14077      this.version = p22.uint16;
14078      this.numRecords = p22.int16;
14079      this.sizeDeviceRecord = p22.int32;
14080      this.records = [...new Array(numRecords)].map(
14081        (_) => new DeviceRecord(p22, numGlyphs)
14082      );
14083    }
14084  };
14085  var DeviceRecord = class {
14086    constructor(p22, numGlyphs) {
14087      this.pixelSize = p22.uint8;
14088      this.maxWidth = p22.uint8;
14089      this.widths = p22.readBytes(numGlyphs);
14090    }
14091  };
14092  var hdmx$1 = Object.freeze({ __proto__: null, hdmx });
14093  var kern = class extends SimpleTable {
14094    constructor(dict, dataview) {
14095      const { p: p22 } = super(dict, dataview);
14096      this.version = p22.uint16;
14097      this.nTables = p22.uint16;
14098      lazy$1(this, `tables`, () => {
14099        let offset = this.tableStart + 4;
14100        const tables = [];
14101        for (let i2 = 0; i2 < this.nTables; i2++) {
14102          p22.currentPosition = offset;
14103          let subtable = new KernSubTable(p22);
14104          tables.push(subtable);
14105          offset += subtable;
14106        }
14107        return tables;
14108      });
14109    }
14110  };
14111  var KernSubTable = class {
14112    constructor(p22) {
14113      this.version = p22.uint16;
14114      this.length = p22.uint16;
14115      this.coverage = p22.flags(8);
14116      this.format = p22.uint8;
14117      if (this.format === 0) {
14118        this.nPairs = p22.uint16;
14119        this.searchRange = p22.uint16;
14120        this.entrySelector = p22.uint16;
14121        this.rangeShift = p22.uint16;
14122        lazy$1(
14123          this,
14124          `pairs`,
14125          () => [...new Array(this.nPairs)].map((_) => new Pair(p22))
14126        );
14127      }
14128      if (this.format === 2) {
14129        console.warn(
14130          `Kern subtable format 2 is not supported: this parser currently only parses universal table data.`
14131        );
14132      }
14133    }
14134    get horizontal() {
14135      return this.coverage[0];
14136    }
14137    get minimum() {
14138      return this.coverage[1];
14139    }
14140    get crossstream() {
14141      return this.coverage[2];
14142    }
14143    get override() {
14144      return this.coverage[3];
14145    }
14146  };
14147  var Pair = class {
14148    constructor(p22) {
14149      this.left = p22.uint16;
14150      this.right = p22.uint16;
14151      this.value = p22.fword;
14152    }
14153  };
14154  var kern$1 = Object.freeze({ __proto__: null, kern });
14155  var LTSH = class extends SimpleTable {
14156    constructor(dict, dataview) {
14157      const { p: p22 } = super(dict, dataview);
14158      this.version = p22.uint16;
14159      this.numGlyphs = p22.uint16;
14160      this.yPels = p22.readBytes(this.numGlyphs);
14161    }
14162  };
14163  var LTSH$1 = Object.freeze({ __proto__: null, LTSH });
14164  var MERG = class extends SimpleTable {
14165    constructor(dict, dataview) {
14166      const { p: p22 } = super(dict, dataview);
14167      this.version = p22.uint16;
14168      this.mergeClassCount = p22.uint16;
14169      this.mergeDataOffset = p22.Offset16;
14170      this.classDefCount = p22.uint16;
14171      this.offsetToClassDefOffsets = p22.Offset16;
14172      lazy$1(
14173        this,
14174        `mergeEntryMatrix`,
14175        () => [...new Array(this.mergeClassCount)].map(
14176          (_) => p22.readBytes(this.mergeClassCount)
14177        )
14178      );
14179      console.warn(`Full MERG parsing is currently not supported.`);
14180      console.warn(
14181        `If you need this table parsed, please file an issue, or better yet, a PR.`
14182      );
14183    }
14184  };
14185  var MERG$1 = Object.freeze({ __proto__: null, MERG });
14186  var meta = class extends SimpleTable {
14187    constructor(dict, dataview) {
14188      const { p: p22 } = super(dict, dataview);
14189      this.version = p22.uint32;
14190      this.flags = p22.uint32;
14191      p22.uint32;
14192      this.dataMapsCount = p22.uint32;
14193      this.dataMaps = [...new Array(this.dataMapsCount)].map(
14194        (_) => new DataMap(this.tableStart, p22)
14195      );
14196    }
14197  };
14198  var DataMap = class {
14199    constructor(tableStart, p22) {
14200      this.tableStart = tableStart;
14201      this.parser = p22;
14202      this.tag = p22.tag;
14203      this.dataOffset = p22.Offset32;
14204      this.dataLength = p22.uint32;
14205    }
14206    getData() {
14207      this.parser.currentField = this.tableStart + this.dataOffset;
14208      return this.parser.readBytes(this.dataLength);
14209    }
14210  };
14211  var meta$1 = Object.freeze({ __proto__: null, meta });
14212  var PCLT = class extends SimpleTable {
14213    constructor(dict, dataview) {
14214      super(dict, dataview);
14215      console.warn(
14216        `This font uses a PCLT table, which is currently not supported by this parser.`
14217      );
14218      console.warn(
14219        `If you need this table parsed, please file an issue, or better yet, a PR.`
14220      );
14221    }
14222  };
14223  var PCLT$1 = Object.freeze({ __proto__: null, PCLT });
14224  var VDMX = class extends SimpleTable {
14225    constructor(dict, dataview) {
14226      const { p: p22 } = super(dict, dataview);
14227      this.version = p22.uint16;
14228      this.numRecs = p22.uint16;
14229      this.numRatios = p22.uint16;
14230      this.ratRanges = [...new Array(this.numRatios)].map(
14231        (_) => new RatioRange(p22)
14232      );
14233      this.offsets = [...new Array(this.numRatios)].map(
14234        (_) => p22.Offset16
14235      );
14236      this.VDMXGroups = [...new Array(this.numRecs)].map(
14237        (_) => new VDMXGroup(p22)
14238      );
14239    }
14240  };
14241  var RatioRange = class {
14242    constructor(p22) {
14243      this.bCharSet = p22.uint8;
14244      this.xRatio = p22.uint8;
14245      this.yStartRatio = p22.uint8;
14246      this.yEndRatio = p22.uint8;
14247    }
14248  };
14249  var VDMXGroup = class {
14250    constructor(p22) {
14251      this.recs = p22.uint16;
14252      this.startsz = p22.uint8;
14253      this.endsz = p22.uint8;
14254      this.records = [...new Array(this.recs)].map(
14255        (_) => new vTable(p22)
14256      );
14257    }
14258  };
14259  var vTable = class {
14260    constructor(p22) {
14261      this.yPelHeight = p22.uint16;
14262      this.yMax = p22.int16;
14263      this.yMin = p22.int16;
14264    }
14265  };
14266  var VDMX$1 = Object.freeze({ __proto__: null, VDMX });
14267  var vhea = class extends SimpleTable {
14268    constructor(dict, dataview) {
14269      const { p: p22 } = super(dict, dataview);
14270      this.version = p22.fixed;
14271      this.ascent = this.vertTypoAscender = p22.int16;
14272      this.descent = this.vertTypoDescender = p22.int16;
14273      this.lineGap = this.vertTypoLineGap = p22.int16;
14274      this.advanceHeightMax = p22.int16;
14275      this.minTopSideBearing = p22.int16;
14276      this.minBottomSideBearing = p22.int16;
14277      this.yMaxExtent = p22.int16;
14278      this.caretSlopeRise = p22.int16;
14279      this.caretSlopeRun = p22.int16;
14280      this.caretOffset = p22.int16;
14281      this.reserved = p22.int16;
14282      this.reserved = p22.int16;
14283      this.reserved = p22.int16;
14284      this.reserved = p22.int16;
14285      this.metricDataFormat = p22.int16;
14286      this.numOfLongVerMetrics = p22.uint16;
14287      p22.verifyLength();
14288    }
14289  };
14290  var vhea$1 = Object.freeze({ __proto__: null, vhea });
14291  var vmtx = class extends SimpleTable {
14292    constructor(dict, dataview, tables) {
14293      super(dict, dataview);
14294      const numOfLongVerMetrics = tables.vhea.numOfLongVerMetrics;
14295      const numGlyphs = tables.maxp.numGlyphs;
14296      const metricsStart = p.currentPosition;
14297      lazy(this, `vMetrics`, () => {
14298        p.currentPosition = metricsStart;
14299        return [...new Array(numOfLongVerMetrics)].map(
14300          (_) => new LongVertMetric(p.uint16, p.int16)
14301        );
14302      });
14303      if (numOfLongVerMetrics < numGlyphs) {
14304        const tsbStart = metricsStart + numOfLongVerMetrics * 4;
14305        lazy(this, `topSideBearings`, () => {
14306          p.currentPosition = tsbStart;
14307          return [...new Array(numGlyphs - numOfLongVerMetrics)].map(
14308            (_) => p.int16
14309          );
14310        });
14311      }
14312    }
14313  };
14314  var LongVertMetric = class {
14315    constructor(h2, b2) {
14316      this.advanceHeight = h2;
14317      this.topSideBearing = b2;
14318    }
14319  };
14320  var vmtx$1 = Object.freeze({ __proto__: null, vmtx });
14321  
14322  // packages/global-styles-ui/build-module/font-library/utils/make-families-from-faces.js
14323  var import_components29 = __toESM(require_components());
14324  var { kebabCase: kebabCase2 } = unlock(import_components29.privateApis);
14325  function makeFamiliesFromFaces(fontFaces) {
14326    const fontFamiliesObject = fontFaces.reduce(
14327      (acc, item) => {
14328        if (!acc[item.fontFamily]) {
14329          acc[item.fontFamily] = {
14330            name: item.fontFamily,
14331            fontFamily: item.fontFamily,
14332            slug: kebabCase2(item.fontFamily.toLowerCase()),
14333            fontFace: []
14334          };
14335        }
14336        acc[item.fontFamily].fontFace.push(item);
14337        return acc;
14338      },
14339      {}
14340    );
14341    return Object.values(fontFamiliesObject);
14342  }
14343  
14344  // packages/global-styles-ui/build-module/font-library/upload-fonts.js
14345  var import_jsx_runtime37 = __toESM(require_jsx_runtime());
14346  function UploadFonts() {
14347    const { installFonts } = (0, import_element18.useContext)(FontLibraryContext);
14348    const [isUploading, setIsUploading] = (0, import_element18.useState)(false);
14349    const [notice, setNotice] = (0, import_element18.useState)(null);
14350    const handleDropZone = (files) => {
14351      handleFilesUpload(files);
14352    };
14353    const onFilesUpload = (event) => {
14354      handleFilesUpload(event.target.files);
14355    };
14356    const handleFilesUpload = async (files) => {
14357      if (!files) {
14358        return;
14359      }
14360      setNotice(null);
14361      setIsUploading(true);
14362      const uniqueFilenames = /* @__PURE__ */ new Set();
14363      const selectedFiles = [...files];
14364      let hasInvalidFiles = false;
14365      const checkFilesPromises = selectedFiles.map(async (file) => {
14366        const isFont = await isFontFile(file);
14367        if (!isFont) {
14368          hasInvalidFiles = true;
14369          return null;
14370        }
14371        if (uniqueFilenames.has(file.name)) {
14372          return null;
14373        }
14374        const fileExtension = (((file.name ?? "").split(".") ?? []).pop() ?? "").toLowerCase();
14375        if (ALLOWED_FILE_EXTENSIONS.includes(fileExtension)) {
14376          uniqueFilenames.add(file.name);
14377          return file;
14378        }
14379        return null;
14380      });
14381      const allowedFiles = (await Promise.all(checkFilesPromises)).filter((file) => null !== file);
14382      if (allowedFiles.length > 0) {
14383        loadFiles(allowedFiles);
14384      } else {
14385        const message = hasInvalidFiles ? (0, import_i18n16.__)("Sorry, you are not allowed to upload this file type.") : (0, import_i18n16.__)("No fonts found to install.");
14386        setNotice({
14387          type: "error",
14388          message
14389        });
14390        setIsUploading(false);
14391      }
14392    };
14393    const loadFiles = async (files) => {
14394      const fontFacesLoaded = await Promise.all(
14395        files.map(async (fontFile) => {
14396          const fontFaceData = await getFontFaceMetadata(fontFile);
14397          await loadFontFaceInBrowser(
14398            fontFaceData,
14399            fontFaceData.file,
14400            "all"
14401          );
14402          return fontFaceData;
14403        })
14404      );
14405      handleInstall(fontFacesLoaded);
14406    };
14407    async function isFontFile(file) {
14408      const font2 = new Font("Uploaded Font");
14409      try {
14410        const buffer = await readFileAsArrayBuffer(file);
14411        await font2.fromDataBuffer(buffer, "font");
14412        return true;
14413      } catch (error) {
14414        return false;
14415      }
14416    }
14417    async function readFileAsArrayBuffer(file) {
14418      return new Promise((resolve, reject) => {
14419        const reader = new window.FileReader();
14420        reader.readAsArrayBuffer(file);
14421        reader.onload = () => resolve(reader.result);
14422        reader.onerror = reject;
14423      });
14424    }
14425    const getFontFaceMetadata = async (fontFile) => {
14426      const buffer = await readFileAsArrayBuffer(fontFile);
14427      const fontObj = new Font("Uploaded Font");
14428      fontObj.fromDataBuffer(buffer, fontFile.name);
14429      const onloadEvent = await new Promise(
14430        (resolve) => fontObj.onload = resolve
14431      );
14432      const font2 = onloadEvent.detail.font;
14433      const { name: name2 } = font2.opentype.tables;
14434      const fontName = name2.get(16) || name2.get(1);
14435      const isItalic = name2.get(2).toLowerCase().includes("italic");
14436      const fontWeight = font2.opentype.tables["OS/2"].usWeightClass || "normal";
14437      const isVariable = !!font2.opentype.tables.fvar;
14438      const weightAxis = isVariable && font2.opentype.tables.fvar.axes.find(
14439        ({ tag }) => tag === "wght"
14440      );
14441      const weightRange = weightAxis ? `$weightAxis.minValue} $weightAxis.maxValue}` : null;
14442      return {
14443        file: fontFile,
14444        fontFamily: fontName,
14445        fontStyle: isItalic ? "italic" : "normal",
14446        fontWeight: weightRange || fontWeight
14447      };
14448    };
14449    const handleInstall = async (fontFaces) => {
14450      const fontFamilies = makeFamiliesFromFaces(fontFaces);
14451      try {
14452        await installFonts(fontFamilies);
14453        setNotice({
14454          type: "success",
14455          message: (0, import_i18n16.__)("Fonts were installed successfully.")
14456        });
14457      } catch (error) {
14458        const typedError = error;
14459        setNotice({
14460          type: "error",
14461          message: typedError.message,
14462          errors: typedError?.installationErrors
14463        });
14464      }
14465      setIsUploading(false);
14466    };
14467    return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "font-library__tabpanel-layout", children: [
14468      /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components30.DropZone, { onFilesDrop: handleDropZone }),
14469      /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_components30.__experimentalVStack, { className: "font-library__local-fonts", children: [
14470        notice && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
14471          import_components30.Notice,
14472          {
14473            status: notice.type,
14474            __unstableHTML: true,
14475            onRemove: () => setNotice(null),
14476            children: [
14477              notice.message,
14478              notice.errors && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("ul", { children: notice.errors.map((error, index) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { children: error }, index)) })
14479            ]
14480          }
14481        ),
14482        isUploading && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components30.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "font-library__upload-area", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components30.ProgressBar, {}) }) }),
14483        !isUploading && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
14484          import_components30.FormFileUpload,
14485          {
14486            accept: ALLOWED_FILE_EXTENSIONS.map(
14487              (ext) => `.$ext}`
14488            ).join(","),
14489            multiple: true,
14490            onChange: onFilesUpload,
14491            render: ({ openFileDialog }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
14492              import_components30.Button,
14493              {
14494                __next40pxDefaultSize: true,
14495                className: "font-library__upload-area",
14496                onClick: openFileDialog,
14497                children: (0, import_i18n16.__)("Upload font")
14498              }
14499            )
14500          }
14501        ),
14502        /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components30.__experimentalSpacer, { margin: 2 }),
14503        /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components30.__experimentalText, { className: "font-library__upload-area__text", children: (0, import_i18n16.__)(
14504          "Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2."
14505        ) })
14506      ] })
14507    ] });
14508  }
14509  var upload_fonts_default = UploadFonts;
14510  
14511  // packages/global-styles-ui/build-module/font-library/modal.js
14512  var import_jsx_runtime38 = __toESM(require_jsx_runtime());
14513  var { Tabs } = unlock(import_components31.privateApis);
14514  var DEFAULT_TAB = {
14515    id: "installed-fonts",
14516    title: (0, import_i18n17._x)("Library", "Font library")
14517  };
14518  var UPLOAD_TAB = {
14519    id: "upload-fonts",
14520    title: (0, import_i18n17._x)("Upload", "noun")
14521  };
14522  
14523  // packages/global-styles-ui/build-module/font-family-item.js
14524  var import_i18n18 = __toESM(require_i18n());
14525  var import_components32 = __toESM(require_components());
14526  var import_element19 = __toESM(require_element());
14527  var import_jsx_runtime39 = __toESM(require_jsx_runtime());
14528  
14529  // packages/global-styles-ui/build-module/font-families.js
14530  var import_jsx_runtime40 = __toESM(require_jsx_runtime());
14531  
14532  // packages/global-styles-ui/build-module/font-sizes/font-sizes-count.js
14533  var import_i18n20 = __toESM(require_i18n());
14534  var import_components34 = __toESM(require_components());
14535  var import_jsx_runtime41 = __toESM(require_jsx_runtime());
14536  
14537  // packages/global-styles-ui/build-module/screen-typography.js
14538  var import_jsx_runtime42 = __toESM(require_jsx_runtime());
14539  
14540  // packages/global-styles-ui/build-module/screen-typography-element.js
14541  var import_i18n22 = __toESM(require_i18n());
14542  var import_components36 = __toESM(require_components());
14543  var import_element22 = __toESM(require_element());
14544  
14545  // packages/global-styles-ui/build-module/typography-panel.js
14546  var import_block_editor5 = __toESM(require_block_editor());
14547  var import_jsx_runtime43 = __toESM(require_jsx_runtime());
14548  var { useSettingsForBlockElement: useSettingsForBlockElement4, TypographyPanel: StylesTypographyPanel2 } = unlock(import_block_editor5.privateApis);
14549  
14550  // packages/global-styles-ui/build-module/typography-preview.js
14551  var import_jsx_runtime44 = __toESM(require_jsx_runtime());
14552  
14553  // packages/global-styles-ui/build-module/screen-typography-element.js
14554  var import_jsx_runtime45 = __toESM(require_jsx_runtime());
14555  var elements = {
14556    text: {
14557      description: (0, import_i18n22.__)("Manage the fonts used on the site."),
14558      title: (0, import_i18n22.__)("Text")
14559    },
14560    link: {
14561      description: (0, import_i18n22.__)("Manage the fonts and typography used on the links."),
14562      title: (0, import_i18n22.__)("Links")
14563    },
14564    heading: {
14565      description: (0, import_i18n22.__)("Manage the fonts and typography used on headings."),
14566      title: (0, import_i18n22.__)("Headings")
14567    },
14568    caption: {
14569      description: (0, import_i18n22.__)("Manage the fonts and typography used on captions."),
14570      title: (0, import_i18n22.__)("Captions")
14571    },
14572    button: {
14573      description: (0, import_i18n22.__)("Manage the fonts and typography used on buttons."),
14574      title: (0, import_i18n22.__)("Buttons")
14575    }
14576  };
14577  
14578  // packages/global-styles-ui/build-module/screen-colors.js
14579  var import_i18n24 = __toESM(require_i18n());
14580  var import_components39 = __toESM(require_components());
14581  var import_block_editor6 = __toESM(require_block_editor());
14582  
14583  // packages/global-styles-ui/build-module/palette.js
14584  var import_components38 = __toESM(require_components());
14585  var import_i18n23 = __toESM(require_i18n());
14586  var import_element23 = __toESM(require_element());
14587  
14588  // packages/global-styles-ui/build-module/color-indicator-wrapper.js
14589  var import_components37 = __toESM(require_components());
14590  var import_jsx_runtime46 = __toESM(require_jsx_runtime());
14591  
14592  // packages/global-styles-ui/build-module/palette.js
14593  var import_jsx_runtime47 = __toESM(require_jsx_runtime());
14594  
14595  // packages/global-styles-ui/build-module/screen-colors.js
14596  var import_jsx_runtime48 = __toESM(require_jsx_runtime());
14597  var { useSettingsForBlockElement: useSettingsForBlockElement5, ColorPanel: StylesColorPanel2 } = unlock(
14598    import_block_editor6.privateApis
14599  );
14600  
14601  // packages/global-styles-ui/build-module/screen-color-palette.js
14602  var import_i18n27 = __toESM(require_i18n());
14603  var import_components44 = __toESM(require_components());
14604  
14605  // packages/global-styles-ui/build-module/color-palette-panel.js
14606  var import_compose4 = __toESM(require_compose());
14607  var import_components42 = __toESM(require_components());
14608  var import_i18n25 = __toESM(require_i18n());
14609  
14610  // packages/global-styles-ui/build-module/variations/variations-color.js
14611  var import_components41 = __toESM(require_components());
14612  
14613  // packages/global-styles-ui/build-module/preview-colors.js
14614  var import_components40 = __toESM(require_components());
14615  
14616  // packages/global-styles-ui/build-module/preset-colors.js
14617  var import_jsx_runtime49 = __toESM(require_jsx_runtime());
14618  function PresetColors() {
14619    const { paletteColors } = useStylesPreviewColors();
14620    return paletteColors.slice(0, 4).map(({ slug, color }, index) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
14621      "div",
14622      {
14623        style: {
14624          flexGrow: 1,
14625          height: "100%",
14626          background: color
14627        }
14628      },
14629      `$slug}-$index}`
14630    ));
14631  }
14632  
14633  // packages/global-styles-ui/build-module/preview-colors.js
14634  var import_jsx_runtime50 = __toESM(require_jsx_runtime());
14635  var firstFrameVariants2 = {
14636    start: {
14637      scale: 1,
14638      opacity: 1
14639    },
14640    hover: {
14641      scale: 0,
14642      opacity: 0
14643    }
14644  };
14645  var StylesPreviewColors = ({
14646    label,
14647    isFocused,
14648    withHoverView
14649  }) => {
14650    return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
14651      preview_wrapper_default,
14652      {
14653        label,
14654        isFocused,
14655        withHoverView,
14656        children: ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
14657          import_components40.__unstableMotion.div,
14658          {
14659            variants: firstFrameVariants2,
14660            style: {
14661              height: "100%",
14662              overflow: "hidden"
14663            },
14664            children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
14665              import_components40.__experimentalHStack,
14666              {
14667                spacing: 0,
14668                justify: "center",
14669                style: {
14670                  height: "100%",
14671                  overflow: "hidden"
14672                },
14673                children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PresetColors, {})
14674              }
14675            )
14676          },
14677          key
14678        )
14679      }
14680    );
14681  };
14682  var preview_colors_default = StylesPreviewColors;
14683  
14684  // packages/global-styles-ui/build-module/variations/variations-color.js
14685  var import_jsx_runtime51 = __toESM(require_jsx_runtime());
14686  var propertiesToFilter2 = ["color"];
14687  function ColorVariations({
14688    title,
14689    gap = 2
14690  }) {
14691    const colorVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter2);
14692    if (colorVariations?.length <= 1) {
14693      return null;
14694    }
14695    return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_components41.__experimentalVStack, { spacing: 3, children: [
14696      title && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Subtitle, { level: 3, children: title }),
14697      /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components41.__experimentalGrid, { gap, children: colorVariations.map((variation, index) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
14698        Variation,
14699        {
14700          variation,
14701          isPill: true,
14702          properties: propertiesToFilter2,
14703          showTooltip: true,
14704          children: () => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(preview_colors_default, {})
14705        },
14706        index
14707      )) })
14708    ] });
14709  }
14710  
14711  // packages/global-styles-ui/build-module/color-palette-panel.js
14712  var import_jsx_runtime52 = __toESM(require_jsx_runtime());
14713  
14714  // packages/global-styles-ui/build-module/gradients-palette-panel.js
14715  var import_compose5 = __toESM(require_compose());
14716  var import_components43 = __toESM(require_components());
14717  var import_i18n26 = __toESM(require_i18n());
14718  var import_jsx_runtime53 = __toESM(require_jsx_runtime());
14719  
14720  // packages/global-styles-ui/build-module/screen-color-palette.js
14721  var import_jsx_runtime54 = __toESM(require_jsx_runtime());
14722  var { Tabs: Tabs2 } = unlock(import_components44.privateApis);
14723  
14724  // packages/global-styles-ui/build-module/screen-background.js
14725  var import_i18n28 = __toESM(require_i18n());
14726  var import_block_editor8 = __toESM(require_block_editor());
14727  var import_components45 = __toESM(require_components());
14728  
14729  // packages/global-styles-ui/build-module/background-panel.js
14730  var import_block_editor7 = __toESM(require_block_editor());
14731  var import_jsx_runtime55 = __toESM(require_jsx_runtime());
14732  var { BackgroundPanel: StylesBackgroundPanel2 } = unlock(
14733    import_block_editor7.privateApis
14734  );
14735  
14736  // packages/global-styles-ui/build-module/screen-background.js
14737  var import_jsx_runtime56 = __toESM(require_jsx_runtime());
14738  var { useHasBackgroundPanel: useHasBackgroundPanel3 } = unlock(import_block_editor8.privateApis);
14739  
14740  // packages/global-styles-ui/build-module/shadows-panel.js
14741  var import_components47 = __toESM(require_components());
14742  var import_i18n30 = __toESM(require_i18n());
14743  var import_element24 = __toESM(require_element());
14744  
14745  // packages/global-styles-ui/build-module/confirm-reset-shadow-dialog.js
14746  var import_components46 = __toESM(require_components());
14747  var import_i18n29 = __toESM(require_i18n());
14748  var import_jsx_runtime57 = __toESM(require_jsx_runtime());
14749  
14750  // packages/global-styles-ui/build-module/shadows-panel.js
14751  var import_jsx_runtime58 = __toESM(require_jsx_runtime());
14752  var { Menu } = unlock(import_components47.privateApis);
14753  
14754  // packages/global-styles-ui/build-module/shadows-edit-panel.js
14755  var import_components48 = __toESM(require_components());
14756  var import_i18n31 = __toESM(require_i18n());
14757  var import_element25 = __toESM(require_element());
14758  var import_jsx_runtime59 = __toESM(require_jsx_runtime());
14759  var { Menu: Menu2 } = unlock(import_components48.privateApis);
14760  var customShadowMenuItems = [
14761    {
14762      label: (0, import_i18n31.__)("Rename"),
14763      action: "rename"
14764    },
14765    {
14766      label: (0, import_i18n31.__)("Delete"),
14767      action: "delete"
14768    }
14769  ];
14770  var presetShadowMenuItems = [
14771    {
14772      label: (0, import_i18n31.__)("Reset"),
14773      action: "reset"
14774    }
14775  ];
14776  
14777  // packages/global-styles-ui/build-module/screen-shadows.js
14778  var import_jsx_runtime60 = __toESM(require_jsx_runtime());
14779  
14780  // packages/global-styles-ui/build-module/screen-layout.js
14781  var import_i18n32 = __toESM(require_i18n());
14782  var import_block_editor10 = __toESM(require_block_editor());
14783  
14784  // packages/global-styles-ui/build-module/dimensions-panel.js
14785  var import_block_editor9 = __toESM(require_block_editor());
14786  var import_element26 = __toESM(require_element());
14787  var import_jsx_runtime61 = __toESM(require_jsx_runtime());
14788  var { useSettingsForBlockElement: useSettingsForBlockElement6, DimensionsPanel: StylesDimensionsPanel2 } = unlock(import_block_editor9.privateApis);
14789  
14790  // packages/global-styles-ui/build-module/screen-layout.js
14791  var import_jsx_runtime62 = __toESM(require_jsx_runtime());
14792  var { useHasDimensionsPanel: useHasDimensionsPanel4, useSettingsForBlockElement: useSettingsForBlockElement7 } = unlock(
14793    import_block_editor10.privateApis
14794  );
14795  
14796  // packages/global-styles-ui/build-module/screen-style-variations.js
14797  var import_components51 = __toESM(require_components());
14798  var import_i18n35 = __toESM(require_i18n());
14799  
14800  // packages/global-styles-ui/build-module/style-variations-content.js
14801  var import_i18n34 = __toESM(require_i18n());
14802  var import_components50 = __toESM(require_components());
14803  
14804  // packages/global-styles-ui/build-module/style-variations-container.js
14805  var import_core_data9 = __toESM(require_core_data());
14806  var import_data9 = __toESM(require_data());
14807  var import_element27 = __toESM(require_element());
14808  var import_components49 = __toESM(require_components());
14809  var import_i18n33 = __toESM(require_i18n());
14810  var import_jsx_runtime63 = __toESM(require_jsx_runtime());
14811  function StyleVariationsContainer({
14812    gap = 2
14813  }) {
14814    const { user } = (0, import_element27.useContext)(GlobalStylesContext);
14815    const userStyles = user?.styles;
14816    const variations = (0, import_data9.useSelect)((select) => {
14817      const result = select(
14818        import_core_data9.store
14819      ).__experimentalGetCurrentThemeGlobalStylesVariations();
14820      return Array.isArray(result) ? result : void 0;
14821    }, []);
14822    const fullStyleVariations = variations?.filter(
14823      (variation) => {
14824        return !isVariationWithProperties(variation, ["color"]) && !isVariationWithProperties(variation, [
14825          "typography",
14826          "spacing"
14827        ]);
14828      }
14829    );
14830    const themeVariations = (0, import_element27.useMemo)(() => {
14831      const withEmptyVariation = [
14832        {
14833          title: (0, import_i18n33.__)("Default"),
14834          settings: {},
14835          styles: {}
14836        },
14837        ...fullStyleVariations ?? []
14838      ];
14839      return [
14840        ...withEmptyVariation.map((variation) => {
14841          const blockStyles = variation?.styles?.blocks ? { ...variation.styles.blocks } : {};
14842          if (userStyles?.blocks) {
14843            Object.keys(userStyles.blocks).forEach((blockName) => {
14844              if (userStyles.blocks?.[blockName]?.css) {
14845                const variationBlockStyles = blockStyles[blockName] || {};
14846                const customCSS = {
14847                  css: `$blockStyles[blockName]?.css || ""} $userStyles.blocks?.[blockName]?.css?.trim() || ""}`
14848                };
14849                blockStyles[blockName] = {
14850                  ...variationBlockStyles,
14851                  ...customCSS
14852                };
14853              }
14854            });
14855          }
14856          const css2 = userStyles?.css || variation.styles?.css ? {
14857            css: `$variation.styles?.css || ""} $userStyles?.css || ""}`
14858          } : {};
14859          const blocks = Object.keys(blockStyles).length > 0 ? { blocks: blockStyles } : {};
14860          const styles = {
14861            ...variation.styles,
14862            ...css2,
14863            ...blocks
14864          };
14865          return {
14866            ...variation,
14867            settings: variation.settings ?? {},
14868            styles
14869          };
14870        })
14871      ];
14872    }, [fullStyleVariations, userStyles?.blocks, userStyles?.css]);
14873    if (!fullStyleVariations || fullStyleVariations.length < 1) {
14874      return null;
14875    }
14876    return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
14877      import_components49.__experimentalGrid,
14878      {
14879        columns: 2,
14880        className: "global-styles-ui-style-variations-container",
14881        gap,
14882        children: themeVariations.map(
14883          (variation, index) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Variation, { variation, children: (isFocused) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
14884            preview_styles_default,
14885            {
14886              label: variation?.title,
14887              withHoverView: true,
14888              isFocused,
14889              variation
14890            }
14891          ) }, index)
14892        )
14893      }
14894    );
14895  }
14896  var style_variations_container_default = StyleVariationsContainer;
14897  
14898  // packages/global-styles-ui/build-module/style-variations-content.js
14899  var import_jsx_runtime64 = __toESM(require_jsx_runtime());
14900  
14901  // packages/global-styles-ui/build-module/screen-style-variations.js
14902  var import_jsx_runtime65 = __toESM(require_jsx_runtime());
14903  
14904  // packages/global-styles-ui/build-module/screen-css.js
14905  var import_i18n36 = __toESM(require_i18n());
14906  var import_components52 = __toESM(require_components());
14907  var import_block_editor11 = __toESM(require_block_editor());
14908  var import_jsx_runtime66 = __toESM(require_jsx_runtime());
14909  var { AdvancedPanel: StylesAdvancedPanel2 } = unlock(import_block_editor11.privateApis);
14910  
14911  // packages/global-styles-ui/build-module/screen-revisions/index.js
14912  var import_i18n39 = __toESM(require_i18n());
14913  var import_components55 = __toESM(require_components());
14914  var import_element29 = __toESM(require_element());
14915  
14916  // packages/global-styles-ui/build-module/screen-revisions/use-global-styles-revisions.js
14917  var import_data10 = __toESM(require_data());
14918  var import_core_data10 = __toESM(require_core_data());
14919  var import_element28 = __toESM(require_element());
14920  
14921  // packages/global-styles-ui/build-module/screen-revisions/revisions-buttons.js
14922  var import_i18n37 = __toESM(require_i18n());
14923  var import_components53 = __toESM(require_components());
14924  var import_date = __toESM(require_date());
14925  var import_core_data11 = __toESM(require_core_data());
14926  var import_data11 = __toESM(require_data());
14927  var import_keycodes2 = __toESM(require_keycodes());
14928  var import_jsx_runtime67 = __toESM(require_jsx_runtime());
14929  var DAY_IN_MILLISECONDS = 60 * 60 * 1e3 * 24;
14930  
14931  // packages/global-styles-ui/build-module/pagination/index.js
14932  var import_components54 = __toESM(require_components());
14933  var import_i18n38 = __toESM(require_i18n());
14934  var import_jsx_runtime68 = __toESM(require_jsx_runtime());
14935  
14936  // packages/global-styles-ui/build-module/screen-revisions/index.js
14937  var import_jsx_runtime69 = __toESM(require_jsx_runtime());
14938  
14939  // packages/global-styles-ui/build-module/font-sizes/font-sizes.js
14940  var import_i18n41 = __toESM(require_i18n());
14941  var import_components57 = __toESM(require_components());
14942  var import_element30 = __toESM(require_element());
14943  
14944  // packages/global-styles-ui/build-module/font-sizes/confirm-reset-font-sizes-dialog.js
14945  var import_components56 = __toESM(require_components());
14946  var import_i18n40 = __toESM(require_i18n());
14947  var import_jsx_runtime70 = __toESM(require_jsx_runtime());
14948  
14949  // packages/global-styles-ui/build-module/font-sizes/font-sizes.js
14950  var import_jsx_runtime71 = __toESM(require_jsx_runtime());
14951  var { Menu: Menu3 } = unlock(import_components57.privateApis);
14952  
14953  // packages/global-styles-ui/build-module/font-sizes/font-size.js
14954  var import_i18n45 = __toESM(require_i18n());
14955  var import_components61 = __toESM(require_components());
14956  var import_element32 = __toESM(require_element());
14957  
14958  // packages/global-styles-ui/build-module/font-sizes/font-size-preview.js
14959  var import_block_editor12 = __toESM(require_block_editor());
14960  var import_i18n42 = __toESM(require_i18n());
14961  var import_jsx_runtime72 = __toESM(require_jsx_runtime());
14962  
14963  // packages/global-styles-ui/build-module/font-sizes/confirm-delete-font-size-dialog.js
14964  var import_components58 = __toESM(require_components());
14965  var import_i18n43 = __toESM(require_i18n());
14966  var import_jsx_runtime73 = __toESM(require_jsx_runtime());
14967  
14968  // packages/global-styles-ui/build-module/font-sizes/rename-font-size-dialog.js
14969  var import_components59 = __toESM(require_components());
14970  var import_i18n44 = __toESM(require_i18n());
14971  var import_element31 = __toESM(require_element());
14972  var import_jsx_runtime74 = __toESM(require_jsx_runtime());
14973  
14974  // packages/global-styles-ui/build-module/size-control/index.js
14975  var import_components60 = __toESM(require_components());
14976  var import_jsx_runtime75 = __toESM(require_jsx_runtime());
14977  
14978  // packages/global-styles-ui/build-module/font-sizes/font-size.js
14979  var import_jsx_runtime76 = __toESM(require_jsx_runtime());
14980  var { Menu: Menu4 } = unlock(import_components61.privateApis);
14981  
14982  // packages/global-styles-ui/build-module/global-styles-ui.js
14983  var import_jsx_runtime77 = __toESM(require_jsx_runtime());
14984  
14985  // packages/global-styles-ui/build-module/with-global-styles-provider.js
14986  var import_jsx_runtime78 = __toESM(require_jsx_runtime());
14987  function withGlobalStylesProvider(Component) {
14988    return function WrappedComponent({
14989      value,
14990      baseValue,
14991      onChange,
14992      ...props
14993    }) {
14994      return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
14995        GlobalStylesProvider,
14996        {
14997          value,
14998          baseValue,
14999          onChange,
15000          children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Component, { ...props })
15001        }
15002      );
15003    };
15004  }
15005  
15006  // packages/global-styles-ui/build-module/style-variations.js
15007  var StyleVariations = withGlobalStylesProvider(style_variations_container_default);
15008  
15009  // packages/global-styles-ui/build-module/color-variations.js
15010  var ColorVariations2 = withGlobalStylesProvider(ColorVariations);
15011  
15012  // packages/global-styles-ui/build-module/typography-variations.js
15013  var TypographyVariations2 = withGlobalStylesProvider(TypographyVariations);
15014  
15015  // packages/global-styles-ui/build-module/font-library/font-library.js
15016  var import_jsx_runtime79 = __toESM(require_jsx_runtime());
15017  function FontLibrary({
15018    value,
15019    baseValue,
15020    onChange,
15021    activeTab = "installed-fonts"
15022  }) {
15023    let content;
15024    switch (activeTab) {
15025      case "upload-fonts":
15026        content = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(upload_fonts_default, {});
15027        break;
15028      case "installed-fonts":
15029        content = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(installed_fonts_default, {});
15030        break;
15031      default:
15032        content = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(font_collection_default, { slug: activeTab });
15033    }
15034    return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
15035      GlobalStylesProvider,
15036      {
15037        value,
15038        baseValue,
15039        onChange,
15040        children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(context_default, { children: content })
15041      }
15042    );
15043  }
15044  
15045  // routes/font-list/lock-unlock.ts
15046  var import_private_apis2 = __toESM(require_private_apis());
15047  var { unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
15048    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
15049    "@wordpress/font-list-route"
15050  );
15051  
15052  // routes/font-list/style.scss
15053  var css = `/**
15054   * SCSS Variables.
15055   *
15056   * Please use variables from this sheet to ensure consistency across the UI.
15057   * Don't add to this sheet unless you're pretty sure the value will be reused in many places.
15058   * For example, don't add rules to this sheet that affect block visuals. It's purely for UI.
15059   */
15060  /**
15061   * Colors
15062   */
15063  /**
15064   * Fonts & basic variables.
15065   */
15066  /**
15067   * Typography
15068   */
15069  /**
15070   * Grid System.
15071   * https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
15072   */
15073  /**
15074   * Radius scale.
15075   */
15076  /**
15077   * Elevation scale.
15078   */
15079  /**
15080   * Dimensions.
15081   */
15082  /**
15083   * Mobile specific styles
15084   */
15085  /**
15086   * Editor styles.
15087   */
15088  /**
15089   * Block & Editor UI.
15090   */
15091  /**
15092   * Block paddings.
15093   */
15094  /**
15095   * React Native specific.
15096   * These variables do not appear to be used anywhere else.
15097   */
15098  /**
15099   * SCSS Variables.
15100   *
15101   * Please use variables from this sheet to ensure consistency across the UI.
15102   * Don't add to this sheet unless you're pretty sure the value will be reused in many places.
15103   * For example, don't add rules to this sheet that affect block visuals. It's purely for UI.
15104   */
15105  /**
15106   * Colors
15107   */
15108  /**
15109   * Fonts & basic variables.
15110   */
15111  /**
15112   * Typography
15113   */
15114  /**
15115   * Grid System.
15116   * https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
15117   */
15118  /**
15119   * Radius scale.
15120   */
15121  /**
15122   * Elevation scale.
15123   */
15124  /**
15125   * Dimensions.
15126   */
15127  /**
15128   * Mobile specific styles
15129   */
15130  /**
15131   * Editor styles.
15132   */
15133  /**
15134   * Block & Editor UI.
15135   */
15136  /**
15137   * Block paddings.
15138   */
15139  /**
15140   * React Native specific.
15141   * These variables do not appear to be used anywhere else.
15142   */
15143  /**
15144   * Typography
15145   */
15146  /**
15147   * Breakpoints & Media Queries
15148   */
15149  /**
15150  *  Converts a hex value into the rgb equivalent.
15151  *
15152  * @param {string} hex - the hexadecimal value to convert
15153  * @return {string} comma separated rgb values
15154  */
15155  /**
15156   * Long content fade mixin
15157   *
15158   * Creates a fading overlay to signify that the content is longer
15159   * than the space allows.
15160   */
15161  /**
15162   * Breakpoint mixins
15163   */
15164  /**
15165   * Focus styles.
15166   */
15167  /**
15168   * Applies editor left position to the selector passed as argument
15169   */
15170  /**
15171   * Styles that are reused verbatim in a few places
15172   */
15173  /**
15174   * Allows users to opt-out of animations via OS-level preferences.
15175   */
15176  /**
15177   * Reset default styles for JavaScript UI based pages.
15178   * This is a WP-admin agnostic reset
15179   */
15180  /**
15181   * Reset the WP Admin page styles for Gutenberg-like pages.
15182   */
15183  @media (min-width: 782px) {
15184    .font-library-modal.font-library-modal {
15185      width: 65vw;
15186    }
15187  }
15188  .font-library-modal .components-modal__header {
15189    border-bottom: none;
15190  }
15191  
15192  .font-library-modal .components-modal__content {
15193    padding: 0;
15194    margin-bottom: 90px;
15195  }
15196  
15197  .font-library-modal .font-library__subtitle {
15198    text-transform: uppercase;
15199    font-weight: 499;
15200    font-size: 11px;
15201  }
15202  
15203  .font-library-modal__tab-panel {
15204    height: calc(100% - 50px);
15205  }
15206  
15207  .font-library__tabpanel-layout {
15208    height: 100%;
15209    display: flex;
15210    flex-direction: column;
15211  }
15212  
15213  .font-library__tabpanel-layout > div {
15214    flex-grow: 1;
15215  }
15216  
15217  .font-library__tabpanel-layout .font-library__loading {
15218    width: 100%;
15219    height: 100%;
15220    display: flex;
15221    position: absolute;
15222    left: 0;
15223    top: 0;
15224    align-items: center;
15225    justify-content: center;
15226    padding-top: 124px;
15227    box-sizing: border-box;
15228  }
15229  
15230  .font-library__tabpanel-layout .components-navigator-screen {
15231    padding: 24px;
15232    width: 100%;
15233  }
15234  
15235  .font-library__footer {
15236    position: absolute;
15237    width: 100%;
15238    bottom: 0;
15239    border-top: 1px solid #ddd;
15240    padding: 24px;
15241    background-color: #fff;
15242    box-sizing: border-box;
15243    flex-grow: 0 !important;
15244    flex-shrink: 0;
15245    height: 90px;
15246  }
15247  
15248  .font-library__page-selection {
15249    font-size: 11px;
15250    font-weight: 499;
15251    text-transform: uppercase;
15252  }
15253  
15254  @media (min-width: 600px) {
15255    .font-library__page-selection .font-library__page-selection-trigger {
15256      font-size: 11px !important;
15257      font-weight: 499;
15258    }
15259  }
15260  .font-library__fonts-title {
15261    text-transform: uppercase;
15262    font-size: 11px;
15263    font-weight: 600;
15264    margin-top: 0;
15265    margin-bottom: 0;
15266  }
15267  
15268  .font-library__fonts-list {
15269    list-style: none;
15270    padding: 0;
15271    margin-top: 0;
15272    margin-bottom: 0;
15273  }
15274  
15275  .font-library__fonts-list-item {
15276    margin-bottom: 0;
15277  }
15278  
15279  .font-library__font-card {
15280    box-sizing: border-box;
15281    border: 1px solid #ddd;
15282    width: 100%;
15283    height: auto !important;
15284    padding: 16px;
15285    margin-top: -1px; /* To collapse the margin with the previous element */
15286  }
15287  
15288  .font-library__font-card:hover {
15289    background-color: #f0f0f0;
15290  }
15291  
15292  .font-library__font-card:focus {
15293    position: relative;
15294  }
15295  
15296  .font-library__font-card .font-library__font-card__name {
15297    font-weight: bold;
15298  }
15299  
15300  .font-library__font-card .font-library__font-card__count {
15301    color: #757575;
15302  }
15303  
15304  .font-library__font-card .font-library__font-variant_demo-image {
15305    display: block;
15306    height: 24px;
15307    width: auto;
15308  }
15309  
15310  .font-library__font-card .font-library__font-variant_demo-text {
15311    white-space: nowrap;
15312    flex-shrink: 0;
15313  }
15314  
15315  @media not (prefers-reduced-motion) {
15316    .font-library__font-card .font-library__font-variant_demo-text {
15317      transition: opacity 0.3s ease-in-out;
15318    }
15319  }
15320  .font-library-modal__tablist-container {
15321    position: sticky;
15322    top: 0;
15323    border-bottom: 1px solid #ddd;
15324    background: #fff;
15325    z-index: 1;
15326  }
15327  
15328  .font-library__upload-area {
15329    align-items: center;
15330    display: flex;
15331    justify-content: center;
15332    height: 256px !important;
15333    width: 100%;
15334  }
15335  
15336  button.font-library__upload-area {
15337    background-color: #f0f0f0;
15338  }
15339  
15340  .font-library__local-fonts {
15341    margin: 24px auto;
15342    width: 80%;
15343  }
15344  
15345  .font-library__local-fonts .font-library__upload-area__text {
15346    color: #757575;
15347  }
15348  
15349  .font-library__google-fonts-confirm {
15350    display: flex;
15351    justify-content: center;
15352    align-items: center;
15353    margin-top: 64px;
15354  }
15355  
15356  .font-library__google-fonts-confirm p {
15357    line-height: 1.4;
15358  }
15359  
15360  .font-library__google-fonts-confirm h2 {
15361    font-size: 1.2rem;
15362    font-weight: 400;
15363  }
15364  
15365  .font-library__google-fonts-confirm .components-card {
15366    padding: 16px;
15367    width: 400px;
15368  }
15369  
15370  .font-library__google-fonts-confirm .components-button {
15371    width: 100%;
15372    justify-content: center;
15373  }
15374  
15375  .font-library__select-all {
15376    padding: 16px 16px 16px 17px;
15377  }
15378  
15379  .font-library__select-all .components-checkbox-control__label {
15380    padding-left: 16px;
15381  }
15382  
15383  .global-styles-ui-pagination .components-button.is-tertiary {
15384    width: 32px;
15385    height: 32px;
15386    justify-content: center;
15387  }
15388  
15389  .global-styles-ui-screen-revisions__revisions-list {
15390    list-style: none;
15391    margin: 0 16px 16px 16px;
15392    flex-grow: 1;
15393  }
15394  
15395  .global-styles-ui-screen-revisions__revisions-list li {
15396    margin-bottom: 0;
15397  }
15398  
15399  .global-styles-ui-screen-revisions__revision-item {
15400    position: relative;
15401    cursor: pointer;
15402    display: flex;
15403    flex-direction: column;
15404  }
15405  
15406  .global-styles-ui-screen-revisions__revision-item[role=option]:active, .global-styles-ui-screen-revisions__revision-item[role=option]:focus {
15407    box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
15408    outline: 2px solid transparent;
15409  }
15410  
15411  .global-styles-ui-screen-revisions__revision-item:hover {
15412    background: rgba(var(--wp-admin-theme-color--rgb), 0.04);
15413  }
15414  
15415  .global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date {
15416    color: var(--wp-admin-theme-color);
15417  }
15418  
15419  .global-styles-ui-screen-revisions__revision-item::before, .global-styles-ui-screen-revisions__revision-item::after {
15420    position: absolute;
15421    content: "\\a";
15422    display: block;
15423  }
15424  
15425  .global-styles-ui-screen-revisions__revision-item::before {
15426    background: #ddd;
15427    border-radius: 50%;
15428    height: 8px;
15429    width: 8px;
15430    top: 18px;
15431    left: 17px;
15432    transform: translate(-50%, -50%);
15433    z-index: 1;
15434    border: 4px solid transparent;
15435  }
15436  
15437  .global-styles-ui-screen-revisions__revision-item[aria-selected=true] {
15438    border-radius: 2px;
15439    outline: 3px solid transparent;
15440    outline-offset: -2px;
15441    color: var(--wp-admin-theme-color);
15442    background: rgba(var(--wp-admin-theme-color--rgb), 0.04);
15443  }
15444  
15445  .global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date {
15446    color: var(--wp-admin-theme-color);
15447  }
15448  
15449  .global-styles-ui-screen-revisions__revision-item[aria-selected=true]::before {
15450    background: var(--wp-admin-theme-color);
15451  }
15452  
15453  .global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes > li,
15454  .global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta,
15455  .global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text {
15456    color: #1e1e1e;
15457  }
15458  
15459  .global-styles-ui-screen-revisions__revision-item::after {
15460    height: 100%;
15461    left: 16px;
15462    top: 0;
15463    width: 0;
15464    border: 0.5px solid #ddd;
15465  }
15466  
15467  .global-styles-ui-screen-revisions__revision-item:first-child::after {
15468    top: 18px;
15469  }
15470  
15471  .global-styles-ui-screen-revisions__revision-item:last-child::after {
15472    height: 18px;
15473  }
15474  
15475  .global-styles-ui-screen-revisions__revision-item-wrapper {
15476    display: block;
15477    padding: 12px 12px 4px 40px;
15478  }
15479  
15480  .global-styles-ui-screen-revisions__apply-button.is-primary,
15481  .global-styles-ui-screen-revisions__applied-text {
15482    align-self: flex-start;
15483    margin: 4px 12px 12px 40px;
15484  }
15485  
15486  .global-styles-ui-screen-revisions__changes,
15487  .global-styles-ui-screen-revisions__meta,
15488  .global-styles-ui-screen-revisions__applied-text {
15489    color: #757575;
15490    font-size: 12px;
15491  }
15492  
15493  .global-styles-ui-screen-revisions__description {
15494    display: flex;
15495    flex-direction: column;
15496    align-items: flex-start;
15497    gap: 8px;
15498  }
15499  
15500  .global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date {
15501    text-transform: uppercase;
15502    font-weight: 600;
15503    font-size: 12px;
15504  }
15505  
15506  .global-styles-ui-screen-revisions__meta {
15507    display: flex;
15508    justify-content: start;
15509    width: 100%;
15510    align-items: flex-start;
15511    text-align: left;
15512    margin-bottom: 4px;
15513  }
15514  
15515  .global-styles-ui-screen-revisions__meta img {
15516    width: 16px;
15517    height: 16px;
15518    border-radius: 100%;
15519    margin-right: 8px;
15520  }
15521  
15522  .global-styles-ui-screen-revisions__loading {
15523    margin: 24px auto !important;
15524  }
15525  
15526  .global-styles-ui-screen-revisions__changes {
15527    text-align: left;
15528    line-height: 1.4;
15529    margin-left: 12px;
15530    list-style: disc;
15531  }
15532  
15533  .global-styles-ui-screen-revisions__changes li {
15534    margin-bottom: 4px;
15535  }
15536  
15537  .global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination {
15538    justify-content: space-between;
15539    gap: 2px;
15540  }
15541  
15542  .global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total {
15543    position: absolute;
15544    left: -1000px;
15545    height: 1px;
15546    margin: -1px;
15547    overflow: hidden;
15548  }
15549  
15550  .global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text {
15551    font-size: 12px;
15552    will-change: opacity;
15553  }
15554  
15555  .global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary {
15556    color: #1e1e1e;
15557  }
15558  
15559  .global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,
15560  .global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true] {
15561    color: #949494;
15562  }
15563  
15564  .global-styles-ui-screen-revisions__footer {
15565    height: 56px;
15566    z-index: 1;
15567    position: sticky;
15568    min-width: 100%;
15569    bottom: 0;
15570    background: #fff;
15571    padding: 12px;
15572    border-top: 1px solid #ddd;
15573  }
15574  
15575  .global-styles-ui-variations_item {
15576    box-sizing: border-box;
15577    cursor: pointer;
15578  }
15579  
15580  .global-styles-ui-variations_item .global-styles-ui-variations_item-preview {
15581    border-radius: 2px;
15582    outline: 1px solid rgba(0, 0, 0, 0.1);
15583    outline-offset: -1px;
15584    overflow: hidden;
15585    position: relative;
15586  }
15587  
15588  @media not (prefers-reduced-motion) {
15589    .global-styles-ui-variations_item .global-styles-ui-variations_item-preview {
15590      transition: outline 0.1s linear;
15591    }
15592  }
15593  .global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill {
15594    height: 32px;
15595  }
15596  
15597  .global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container {
15598    overflow: hidden;
15599  }
15600  
15601  .global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview {
15602    outline-color: rgba(0, 0, 0, 0.3);
15603  }
15604  
15605  .global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview, .global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview {
15606    outline-color: #1e1e1e;
15607    outline-offset: 1px;
15608    outline-width: var(--wp-admin-border-width-focus);
15609  }
15610  
15611  .global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview {
15612    outline-color: var(--wp-admin-theme-color);
15613  }
15614  
15615  .global-styles-ui-preview {
15616    display: flex;
15617    align-items: center;
15618    justify-content: center;
15619    line-height: 1;
15620    cursor: pointer;
15621  }
15622  
15623  .global-styles-ui-preview__wrapper {
15624    max-width: 100%;
15625    display: block;
15626    width: 100%;
15627  }
15628  
15629  .global-styles-ui-typography-preview {
15630    display: flex;
15631    align-items: center;
15632    justify-content: center;
15633    min-height: 100px;
15634    margin-bottom: 20px;
15635    background: #f0f0f0;
15636    border-radius: 2px;
15637    overflow: hidden;
15638  }
15639  
15640  .global-styles-ui-font-size__item {
15641    white-space: nowrap;
15642    text-overflow: ellipsis;
15643    overflow: hidden;
15644    line-break: anywhere;
15645  }
15646  
15647  .global-styles-ui-font-size__item-value {
15648    color: #757575;
15649  }
15650  
15651  .global-styles-ui-screen-typography__indicator {
15652    height: 24px;
15653    width: 24px;
15654    font-size: 14px;
15655    display: flex !important;
15656    align-items: center;
15657    justify-content: center;
15658    border-radius: 2px;
15659  }
15660  
15661  .global-styles-ui-block-types-search {
15662    margin-bottom: 10px;
15663    padding: 0 16px;
15664  }
15665  
15666  .global-styles-ui-screen-typography__font-variants-count {
15667    color: #757575;
15668  }
15669  
15670  .global-styles-ui-font-families__manage-fonts {
15671    justify-content: center;
15672  }
15673  
15674  .global-styles-ui-screen .color-block-support-panel {
15675    padding-left: 0;
15676    padding-right: 0;
15677    padding-top: 0;
15678    border-top: none;
15679    row-gap: 12px;
15680  }
15681  
15682  .global-styles-ui-header {
15683    margin-bottom: 0 !important;
15684  }
15685  
15686  .global-styles-ui-subtitle {
15687    margin-bottom: 0 !important;
15688    text-transform: uppercase;
15689    font-weight: 499 !important;
15690    font-size: 11px !important;
15691  }
15692  
15693  .global-styles-ui-section-title {
15694    color: #2f2f2f;
15695    font-weight: 600;
15696    line-height: 1.2;
15697    padding: 16px 16px 0;
15698    margin: 0;
15699  }
15700  
15701  .global-styles-ui-icon-with-current-color {
15702    fill: currentColor;
15703  }
15704  
15705  .global-styles-ui__color-indicator-wrapper {
15706    height: 24px;
15707    flex-shrink: 0;
15708  }
15709  
15710  .global-styles-ui__shadows-panel__options-container,
15711  .global-styles-ui__typography-panel__options-container {
15712    height: 24px;
15713  }
15714  
15715  .global-styles-ui__block-preview-panel {
15716    position: relative;
15717    width: 100%;
15718    border: #ddd 1px solid;
15719    border-radius: 2px;
15720    overflow: hidden;
15721  }
15722  
15723  .global-styles-ui__shadow-preview-panel {
15724    height: 144px;
15725    border: #ddd 1px solid;
15726    border-radius: 2px;
15727    overflow: auto;
15728    background-image: repeating-linear-gradient(45deg, #f5f5f5 25%, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 75%, #f5f5f5 0, #f5f5f5), repeating-linear-gradient(45deg, #f5f5f5 25%, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 75%, #f5f5f5 0, #f5f5f5);
15729    background-position: 0 0, 8px 8px;
15730    background-size: 16px 16px;
15731  }
15732  
15733  .global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block {
15734    border: #ddd 1px solid;
15735    border-radius: 2px;
15736    background-color: #fff;
15737    width: 60%;
15738    height: 60px;
15739  }
15740  
15741  .global-styles-ui__shadow-editor__dropdown-content {
15742    width: 280px;
15743  }
15744  
15745  .global-styles-ui__shadow-editor-panel {
15746    margin-bottom: 4px;
15747  }
15748  
15749  .global-styles-ui__shadow-editor__dropdown {
15750    width: 100%;
15751    position: relative;
15752  }
15753  
15754  .global-styles-ui__shadow-editor__dropdown-toggle {
15755    width: 100%;
15756    height: auto;
15757    padding-top: 8px;
15758    padding-bottom: 8px;
15759    text-align: left;
15760    border-radius: inherit;
15761  }
15762  
15763  .global-styles-ui__shadow-editor__dropdown-toggle.is-open {
15764    background: #f0f0f0;
15765    color: var(--wp-admin-theme-color);
15766  }
15767  
15768  .global-styles-ui__shadow-editor__remove-button {
15769    position: absolute;
15770    right: 8px;
15771    top: 8px;
15772    opacity: 0;
15773  }
15774  
15775  .global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button {
15776    border: none;
15777  }
15778  
15779  .global-styles-ui__shadow-editor__dropdown-toggle:hover + .global-styles-ui__shadow-editor__remove-button, .global-styles-ui__shadow-editor__remove-button:focus, .global-styles-ui__shadow-editor__remove-button:hover {
15780    opacity: 1;
15781  }
15782  
15783  @media (hover: none) {
15784    .global-styles-ui__shadow-editor__remove-button {
15785      opacity: 1;
15786    }
15787  }
15788  .global-styles-ui-screen-css {
15789    flex: 1 1 auto;
15790    display: flex;
15791    flex-direction: column;
15792    margin: 16px;
15793  }
15794  
15795  .global-styles-ui-screen-css .components-v-stack {
15796    flex: 1 1 auto;
15797  }
15798  
15799  .global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input {
15800    flex: 1 1 auto;
15801    display: flex;
15802    flex-direction: column;
15803  }
15804  
15805  .global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field {
15806    flex: 1 1 auto;
15807    display: flex;
15808    flex-direction: column;
15809  }
15810  
15811  .global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input {
15812    flex: 1 1 auto;
15813    /*rtl:ignore*/
15814    direction: ltr;
15815  }
15816  
15817  .global-styles-ui-screen-css-help-link {
15818    display: inline-block;
15819    margin-top: 8px;
15820  }
15821  
15822  .global-styles-ui-screen-variations {
15823    margin-top: 16px;
15824    border-top: 1px solid #ddd;
15825  }
15826  
15827  .global-styles-ui-screen-variations > * {
15828    margin: 24px 16px;
15829  }
15830  
15831  .global-styles-ui-sidebar__navigator-provider {
15832    height: 100%;
15833  }
15834  
15835  .global-styles-ui-sidebar__navigator-screen {
15836    display: flex;
15837    flex-direction: column;
15838    height: 100%;
15839  }
15840  
15841  .global-styles-ui-sidebar__navigator-screen .single-column {
15842    grid-column: span 1;
15843  }
15844  
15845  .global-styles-ui-screen-root.global-styles-ui-screen-root,
15846  .global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations {
15847    background: unset;
15848    color: inherit;
15849  }
15850  
15851  .global-styles-ui-sidebar__panel .block-editor-block-icon svg {
15852    fill: currentColor;
15853  }
15854  
15855  .global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile, .global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview {
15856    border-radius: 2px;
15857  }
15858  
15859  .global-styles-ui-screen-root__active-style-tile-preview {
15860    clip-path: border-box;
15861  }
15862  
15863  .global-styles-ui-color-palette-panel,
15864  .global-styles-ui-gradient-palette-panel {
15865    padding: 16px;
15866  }
15867  
15868  .font-library-page__tablist {
15869    border-bottom: 1px solid #f0f0f0;
15870    padding: 0 24px;
15871  }
15872  
15873  .font-library-page__tab-panel {
15874    flex-grow: 1;
15875    max-height: calc(100% - 110px);
15876    overflow: auto;
15877  }
15878  .admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel {
15879    max-height: calc(100% - 198px);
15880  }`;
15881  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
15882  
15883  // routes/font-list/stage.tsx
15884  var { Tabs: Tabs3 } = unlock2(import_components63.privateApis);
15885  var { useGlobalStyles } = unlock2(import_editor.privateApis);
15886  function FontLibraryPage() {
15887    const { records: collections = [] } = (0, import_core_data12.useEntityRecords)("root", "fontCollection", {
15888      _fields: "slug,name,description"
15889    });
15890    const [activeTab, setActiveTab] = (0, import_element34.useState)("installed-fonts");
15891    const { base, user, setUser, isReady } = useGlobalStyles();
15892    const canUserCreate = (0, import_data13.useSelect)((select) => {
15893      return select(import_core_data12.store).canUser("create", {
15894        kind: "postType",
15895        name: "wp_font_family"
15896      });
15897    }, []);
15898    if (!isReady) {
15899      return null;
15900    }
15901    const tabs = [
15902      {
15903        id: "installed-fonts",
15904        title: (0, import_i18n46.__)("Library")
15905      }
15906    ];
15907    if (canUserCreate) {
15908      tabs.push({
15909        id: "upload-fonts",
15910        title: (0, import_i18n46.__)("Upload")
15911      });
15912      tabs.push(
15913        ...(collections || []).map(({ slug, name: name2 }) => ({
15914          id: slug,
15915          title: collections && collections.length === 1 && slug === "google-fonts" ? (0, import_i18n46.__)("Install Fonts") : name2
15916        }))
15917      );
15918    }
15919    return /* @__PURE__ */ React.createElement(page_default, { title: (0, import_i18n46.__)("Fonts") }, /* @__PURE__ */ React.createElement(
15920      Tabs3,
15921      {
15922        selectedTabId: activeTab,
15923        onSelect: (tabId) => setActiveTab(tabId)
15924      },
15925      /* @__PURE__ */ React.createElement("div", { className: "font-library-page__tablist" }, /* @__PURE__ */ React.createElement(Tabs3.TabList, null, tabs.map(({ id, title }) => /* @__PURE__ */ React.createElement(Tabs3.Tab, { key: id, tabId: id }, title)))),
15926      tabs.map(({ id }) => /* @__PURE__ */ React.createElement(
15927        Tabs3.TabPanel,
15928        {
15929          key: id,
15930          tabId: id,
15931          focusable: false,
15932          className: "font-library-page__tab-panel"
15933        },
15934        /* @__PURE__ */ React.createElement(
15935          FontLibrary,
15936          {
15937            value: user,
15938            baseValue: base,
15939            onChange: setUser,
15940            activeTab: id
15941          }
15942        )
15943      ))
15944    ));
15945  }
15946  function Stage() {
15947    return /* @__PURE__ */ React.createElement(FontLibraryPage, null);
15948  }
15949  var stage = Stage;
15950  export {
15951    stage
15952  };
15953  /*! Bundled license information:
15954  
15955  is-plain-object/dist/is-plain-object.mjs:
15956    (*!
15957     * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
15958     *
15959     * Copyright (c) 2014-2017, Jon Schlinkert.
15960     * Released under the MIT License.
15961     *)
15962  */


Generated : Wed Apr 15 08:20:10 2026 Cross-referenced by PHPXref